From 4248e18aeec62d89b6d02bd351de784547415d73 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 25 Mar 2024 02:23:51 +0000 Subject: [PATCH] Rebuild pages at 014aeed5825e7558ff15a2c034c613a05da885d2 --- .../authorship.json | 2 +- AY2324S2-CS2103-F09-2_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2324S2-CS2103T-F13-3_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2324S2-CS2103T-F14-2_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2324S2-CS2103T-T11-2_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2324S2-CS2103T-T15-3_tp_master/commits.json | 2 +- .../authorship.json | 2 +- AY2324S2-CS2103T-W13-4_tp_master/commits.json | 2 +- archive.zip | Bin 11840434 -> 11857229 bytes reposense-logs/reposense.log.0 | 2618 ++++++++--------- summary.json | 2 +- 15 files changed, 1322 insertions(+), 1322 deletions(-) diff --git a/AY2324S2-CS2103-F09-2_tp_master/authorship.json b/AY2324S2-CS2103-F09-2_tp_master/authorship.json index 1f0d23bf..39b111d8 100644 --- a/AY2324S2-CS2103-F09-2_tp_master/authorship.json +++ b/AY2324S2-CS2103-F09-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"[![Java CI](https://github.com/AY2324S2-CS2103-F09-2/tp/actions/workflows/gradle.yml/badge.svg?branch\u003dmaster)](https://github.com/AY2324S2-CS2103-F09-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103-F09-2/tp/graph/badge.svg?token\u003dAX3SGG0FMX)](https://codecov.io/gh/AY2324S2-CS2103-F09-2/tp)\\","lastModifiedDate":"2024-03-14"},{"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":"NeoHW"},"content":"**PatientSync is a desktop application meticulously crafted for nurses who prioritize the well-being of their patients above all else.**\\","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"It allows you to input intimate details about your patients, such as food preferences and family conditions. While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"## User Profile","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"**Target Users:** Nurses in a hospital setting","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"**Key Challenges:**","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"- Managing diverse patient needs and preferences.","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"- Providing personalized care while juggling a busy schedule.","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"- Ensuring accurate and up-to-date patient information is readily accessible.","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"## Value Proposition","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"**PatientSync** is meticulously crafted for nurses who prioritize the well-being of their patients above all else. It allows nurses to input intimate details about their patients, such as food preferences and family conditions. This personalized approach enables nurses to deliver tailored care that meets the unique needs of each individual.","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"| Project Links | Description |","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"|-------------------------|------------------------------------------------------------------|","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"| [Project Website](https://ay2324s2-cs2103-f09-2.github.io/tp/) | Official website for the PatientSync desktop application. |","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":"| [User Guide](https://ay2324s2-cs2103-f09-2.github.io/tp/UserGuide.html#quick-start) | Quick Start guide for users interested in using PatientSync. |","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":"| [Developer Guide](https://ay2324s2-cs2103-f09-2.github.io/tp/DeveloperGuide.html) | Comprehensive guide for developers interested in contributing to PatientSync. |","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":"| [About Us](https://ay2324s2-cs2103-f09-2.github.io/tp/AboutUs.html) | Learn more about the team behind the PatientSync project. |","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"**Acknowledgements**\\","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"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":33,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"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":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"SherisseTJW":3,"NeoHW":30,"-":2}},{"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":"NeoHW"},"content":"run {","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":65,"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":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":73,"author":{"gitId":"ZhiWei1010"},"content":" archiveFileName \u003d \u0027PatientSync.jar\u0027","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"ZhiWei1010":1,"NeoHW":4,"-":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":"NeoHW"},"content":"### Neo Haowei","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"\u003cimg src\u003d\"images/neohw.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"[[github](http://github.com/NeoHW)]","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"[[portfolio](https://ay2324s2-cs2103-f09-2.github.io/tp/)]","lastModifiedDate":"2024-03-04"},{"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":"NeoHW"},"content":"* Responsibilities: Overall project coordination, code review","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":"### Sherisse Tan Jing Wen","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":"\u003cimg src\u003d\"images/sherissetjw.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":"[[github](http://github.com/SherisseTJW)] [[portfolio](https://ay2324s2-cs2103-f09-2.github.io/tp/)]","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":"* Role: Integration","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":"* Responsibilities: In charge of versioning of the code, maintaining the code repository,","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":"integrating various parts of the software to create a whole.","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":"### Li Guohuang","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":"\u003cimg src\u003d\"images/guohuang88.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":"[[github](http://github.com/guohuang88)]","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":"[[portfolio](https://ay2324s2-cs2103-f09-2.github.io/tp/)]","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":"* Role: Testing","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":"* Responsibilities: Ensure project is tested properly and on time.","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":"### Tan Zhi Wei","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":"\u003cimg src\u003d\"images/zhiwei1010.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":"[[github](http://github.com/ZhiWei1010)]","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":"[[portfolio](https://ay2324s2-cs2103-f09-2.github.io/tp/)]","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":"* Responsibilities: Ensure project deliverables are done on time and in the right format.","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":"### Choo Weng Yan","lastModifiedDate":"2024-03-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":"\u003cimg src\u003d\"images/choowengyan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":"[[github](http://github.com/choowengyan)] ","lastModifiedDate":"2024-03-07"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":"[[portfolio](https://ay2324s2-cs2103-f09-2.github.io/tp/)]","lastModifiedDate":"2024-03-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":"* Role: Scheduling and tracking","lastModifiedDate":"2024-03-07"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":"* Responsibilities: Ensure that team\u0027s task is scheduled properly based on each iteration and milestone, ","lastModifiedDate":"2024-03-07"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":"optimizing project timeline, updating task status and providing accurate information.","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"guohuang88":6,"SherisseTJW":6,"ZhiWei1010":6,"choowengyan":7,"NeoHW":5,"-":33}},{"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":"NeoHW"},"content":"# PatientSync Developer Guide","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":"## 1. Introduction","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"### **1.1 Product Overview**","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"PatientSync addresses a crucial gap in the current hospital systems by providing nurses with a comprehensive tool to manage patient information beyond administrative details.","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"In many hospitals, the existing systems typically offer basic administrative information such as patient names and contact details. However, they often lack the capacity to delve into the intimate details of patient care.","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"This app can help with personalised and effective care by:","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"* viewing and managing upcoming checkup and appointment dates for each patient.","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"* Utilising tags to categorize patients into groups based on conditions, treatment plans, or other criteria.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"### 1.2 Setting up, getting started","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","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":"NeoHW"},"content":"### 1.3 Acknowledgements","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":"PatientSync is a brownfield Java Project based on the AB3 project template created by the SE-EDU initiative.","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":"## 2 Design","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":"### 2.1 Architecture","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":"**2.1.1. Main components of the architecture**","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"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":54,"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":55,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":"**2.1.2. How the architecture components interact with each other**","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"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":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"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":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"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":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":79,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":"### 2.2 UI component","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"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":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PatientListPanel`, `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":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"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":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":96,"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":97,"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":98,"author":{"gitId":"NeoHW"},"content":"* depends on some classes in the `Model` component, as it displays `Patient` object residing in the `Model`.","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":"### 2.3 Logic component","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"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":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"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":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"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":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"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":115,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":119,"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":120,"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":121,"author":{"gitId":"NeoHW"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a patient).\u003cbr\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":122,"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":123,"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":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":125,"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":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"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":131,"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":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":"### 2.4 Model component","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"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":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":"* stores the address book data i.e., all `Patient` objects (which are contained in a `UniquePatientList` object).","lastModifiedDate":"2024-03-09"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":"* stores the currently \u0027selected\u0027 `Patient` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPatient\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":"2024-03-09"},{"lineNumber":143,"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":144,"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":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Patient` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Patient` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":"### 2.5 Storage component","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"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":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":161,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"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":163,"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":164,"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":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"NeoHW"},"content":"### 2.6 Common classes","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"NeoHW"},"content":"## 3 Implementation","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"NeoHW"},"content":"### 3.1 Adding a Patient","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"NeoHW"},"content":"#### Introduction","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"choowengyan"},"content":"The `AddCommand` class is responsible for adding new patient\u0027s information in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"NeoHW"},"content":"#### Specifications","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"choowengyan"},"content":"* AddCommand, as defined by the `AddCommand` class, contain parameters which consists of: ","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"choowengyan"},"content":" * `patientHospitalId` integer, ","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"choowengyan"},"content":" * `name`, `preferredName` String with only alphabets character,","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"choowengyan"},"content":" * `foodPreference`, `familyCondition`, `hobby` and `tag` which are alphanumeric.","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"choowengyan"},"content":"* `tag` field is optional in the AddCommand and can be added later on using the `AddTagsCommand`.","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"choowengyan"},"content":"* If any of the fields are repeated during the adding of patient or missing fields, error message will be thrown.","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"NeoHW"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-12"},{"lineNumber":192,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":193,"author":{"gitId":"choowengyan"},"content":"Given below is an example usage scenario and how the group creation mechanism behaves at each step.","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"choowengyan"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"guohuang88"},"content":"Step 2: The user executes the `add id/ 12347 n/ Mary Jane p/ Mary f/ Korean c/ Lives with only daughter h/ Watch Drama`","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"choowengyan"},"content":"command to add a new Patient whose patient hospital ID is `12347`,","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"choowengyan"},"content":"with the name `Mary Jane` and preferred name `Mary`, likes to eat `Korean` food and current family condition is ","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"choowengyan"},"content":"`Lives with only daughter` and likes to `Watch drama`.","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"choowengyan"},"content":"Step 3: The `AddCommandParser` will be called to validate the input, ensuring that the fields are valid with correct ","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"choowengyan"},"content":"data types and no duplicates of fields.","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"choowengyan"},"content":"* Upon successful validation, it creates a `Patient` instance.","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"choowengyan"},"content":"Step 4: The newly added Patient will be added to the end of list, shown in the UI. ","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"choowengyan"},"content":"The following UML sequence diagram illustrates how the `AddCommand` operation works.","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"choowengyan"},"content":"\u003cpuml src\u003d\"diagrams/AddSequenceDiagram.puml\" alt\u003d\"Add Sequence Diagram\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"choowengyan"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"choowengyan"},"content":"#### Aspect of Handling Duplicated Fields ","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"choowengyan"},"content":"* **Alternative 1 (current choice)**: Returns error message, prompt user to enter the correct format.","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"choowengyan"},"content":" * Pros: Ensure the consistency of entries of the input command.","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"choowengyan"},"content":" * Cons: User has to retype the `AddCommand` once again instead of the specific field.","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"choowengyan"},"content":"\u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"choowengyan"},"content":"* **Alternative 2**: Add patient\u0027s information to the list, for duplicated fields, take the first one.","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"choowengyan"},"content":" * Pros: User does not have to retype the command.","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"choowengyan"},"content":" * Cons: Introduce ambiguity, the first repeated field may not be what user wish to enter.","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"choowengyan"},"content":"#### Aspect of Handling Existing Patient","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"choowengyan"},"content":"* **Alternative 1 (current choice)**: Returns error message upon user adds a new patient with existing `patientHospitalId`","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"choowengyan"},"content":" * Pros: Ensures that no same patient will be added to PatientSync.","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"choowengyan"},"content":" * Cons: User has to enter patient\u0027s hospital ID in care to ensure no duplications.","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"choowengyan"},"content":"\u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"choowengyan"},"content":"* **Alternative 2**: Check duplicated patient by patient\u0027s `name`.","lastModifiedDate":"2024-03-17"},{"lineNumber":229,"author":{"gitId":"choowengyan"},"content":" * Pros: Easier to view as patient\u0027s `name` will be easier to be remembered.","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"choowengyan"},"content":" * Cons: Patients may have the same name.","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-12"},{"lineNumber":232,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":233,"author":{"gitId":"NeoHW"},"content":"### 3.2 Adding Tags to a Patient","lastModifiedDate":"2024-03-12"},{"lineNumber":234,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":235,"author":{"gitId":"NeoHW"},"content":"#### Introduction","lastModifiedDate":"2024-03-12"},{"lineNumber":236,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":237,"author":{"gitId":"NeoHW"},"content":"The `AddTagsCommand` class is responsible for adding one or more tags to a patient in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":238,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":239,"author":{"gitId":"NeoHW"},"content":"#### Specifications","lastModifiedDate":"2024-03-12"},{"lineNumber":240,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":241,"author":{"gitId":"NeoHW"},"content":"* Tags, as defined by the `Tag` class, are alphanumeric characters with or without spaces, and repeated tags in the command are added as a single tag.","lastModifiedDate":"2024-03-22"},{"lineNumber":242,"author":{"gitId":"NeoHW"},"content":"* The addition of tags is cumulative, and new tags will be added to the existing set of tags for the patient, preserving the previously assigned tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":243,"author":{"gitId":"NeoHW"},"content":"* If the patient has an existing tag that is provided in the command, it will not be added, and the output would be logged and shown to the user.","lastModifiedDate":"2024-03-22"},{"lineNumber":244,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":245,"author":{"gitId":"NeoHW"},"content":"The activity diagram below outlines the steps involved when a user initiates an Add Tags command.","lastModifiedDate":"2024-03-22"},{"lineNumber":246,"author":{"gitId":"NeoHW"},"content":"\u003cpuml src\u003d\"diagrams/AddTagsActivityDiagram.puml\" alt\u003d\"AddTagsActivityDiagram\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":247,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":248,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":249,"author":{"gitId":"NeoHW"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-12"},{"lineNumber":250,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":251,"author":{"gitId":"NeoHW"},"content":"Given below is an example usage scenario and how the tag addition process behaves at each step:","lastModifiedDate":"2024-03-22"},{"lineNumber":252,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":253,"author":{"gitId":"NeoHW"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-12"},{"lineNumber":254,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":255,"author":{"gitId":"NeoHW"},"content":"Step 2: The user executes the `addt 1 t/christian t/fall risk` command to add the tags `christian` and `fall risk` to patient 1 in the displayed patient list. The `AddTagsCommandParser` will be called to validate the input, ensuring that the index is valid and at least one tag is provided. Upon successful validation, it creates an `AddTagsCommand` instance.","lastModifiedDate":"2024-03-22"},{"lineNumber":256,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":257,"author":{"gitId":"NeoHW"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":258,"author":{"gitId":"NeoHW"},"content":"\u003cb\u003eNote\u003c/b\u003e: Since multiple inputs are allowed, a set of tags are passed around, each of which is to be added if the above requirements are met.","lastModifiedDate":"2024-03-12"},{"lineNumber":259,"author":{"gitId":"NeoHW"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":260,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":261,"author":{"gitId":"NeoHW"},"content":"The following sequence diagram shows how the Add Tags operation works:","lastModifiedDate":"2024-03-18"},{"lineNumber":262,"author":{"gitId":"NeoHW"},"content":"\u003cpuml src\u003d\"diagrams/AddTagsSequenceDiagram.puml\" alt\u003d\"AddTagsSequenceDiagram\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":263,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":264,"author":{"gitId":"NeoHW"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":265,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":266,"author":{"gitId":"NeoHW"},"content":"**Note:** The lifeline for `AddTagCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2024-03-18"},{"lineNumber":267,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":268,"author":{"gitId":"NeoHW"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":269,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":270,"author":{"gitId":"NeoHW"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-12"},{"lineNumber":271,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":272,"author":{"gitId":"NeoHW"},"content":"**Aspect: Skip duplicate Tags in command**","lastModifiedDate":"2024-03-22"},{"lineNumber":273,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":274,"author":{"gitId":"NeoHW"},"content":"* **Alternative 1 (current choice)**: Repeated tags in commands are added as a single tag.","lastModifiedDate":"2024-03-22"},{"lineNumber":275,"author":{"gitId":"NeoHW"},"content":" * Pros: Simplifies tag management, avoids redundancy.","lastModifiedDate":"2024-03-12"},{"lineNumber":276,"author":{"gitId":"NeoHW"},"content":" * Cons: Requires additional logic to detect and merge repeated tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":277,"author":{"gitId":"NeoHW"},"content":"\u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":278,"author":{"gitId":"NeoHW"},"content":"* **Alternative 2**: Each tag is added individually, including duplicates.","lastModifiedDate":"2024-03-12"},{"lineNumber":279,"author":{"gitId":"NeoHW"},"content":" * Pros: Explicitly shows every tag provided.","lastModifiedDate":"2024-03-12"},{"lineNumber":280,"author":{"gitId":"NeoHW"},"content":" * Cons: May clutter patient data with redundant tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":281,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":282,"author":{"gitId":"NeoHW"},"content":"**Aspect: Cumulative Tag Addition**","lastModifiedDate":"2024-03-12"},{"lineNumber":283,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":284,"author":{"gitId":"NeoHW"},"content":"* **Alternative 1 (current choice)**: Cumulative addition of tags to existing set.","lastModifiedDate":"2024-03-12"},{"lineNumber":285,"author":{"gitId":"NeoHW"},"content":" * Pros: Preserves previous tags, allows for gradual building of patient profile.","lastModifiedDate":"2024-03-12"},{"lineNumber":286,"author":{"gitId":"NeoHW"},"content":" * Cons: Requires additional memory for storing updated tag sets.","lastModifiedDate":"2024-03-12"},{"lineNumber":287,"author":{"gitId":"NeoHW"},"content":"\u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":288,"author":{"gitId":"NeoHW"},"content":"* **Alternative 2**: Overwrite existing tags with new ones.","lastModifiedDate":"2024-03-12"},{"lineNumber":289,"author":{"gitId":"NeoHW"},"content":" * Pros: Simplifies data handling, avoids tag duplication.","lastModifiedDate":"2024-03-12"},{"lineNumber":290,"author":{"gitId":"NeoHW"},"content":" * Cons: Risk of losing previously assigned tags, less flexibility in tag management.","lastModifiedDate":"2024-03-12"},{"lineNumber":291,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":292,"author":{"gitId":"NeoHW"},"content":"**Aspect: Logic handling for pre-existing tags**","lastModifiedDate":"2024-03-22"},{"lineNumber":293,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":294,"author":{"gitId":"NeoHW"},"content":"* **Alternative 1 (current choice)**: Do not add tags already present for the patient.","lastModifiedDate":"2024-03-12"},{"lineNumber":295,"author":{"gitId":"NeoHW"},"content":" * Pros: Prevents tag redundancy, maintains data integrity. Better user experience, do not need to worry about the intricacies of tag duplication.","lastModifiedDate":"2024-03-12"},{"lineNumber":296,"author":{"gitId":"NeoHW"},"content":" * Cons: Requires additional logic to detect repeated tags.","lastModifiedDate":"2024-03-22"},{"lineNumber":297,"author":{"gitId":"NeoHW"},"content":"\u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":298,"author":{"gitId":"NeoHW"},"content":"* **Alternative 2**: Return error message for duplicate tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":299,"author":{"gitId":"NeoHW"},"content":" * Pros: Notifies user about duplicate inputs, ensures data consistency.","lastModifiedDate":"2024-03-12"},{"lineNumber":300,"author":{"gitId":"NeoHW"},"content":" * Cons: In the case of the addition of multiple existing or duplicate tags, users have to find and remove the duplicated tags from the given command, which would be cumbersome especially when there are many tags listed in the command.","lastModifiedDate":"2024-03-14"},{"lineNumber":301,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":302,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-14"},{"lineNumber":303,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":304,"author":{"gitId":"NeoHW"},"content":"### 3.3 Deleting Tags From a Patient","lastModifiedDate":"2024-03-18"},{"lineNumber":305,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":306,"author":{"gitId":"NeoHW"},"content":"#### Introduction","lastModifiedDate":"2024-03-18"},{"lineNumber":307,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":308,"author":{"gitId":"NeoHW"},"content":"The `DeleteTagsCommand` class enables the removal of one or more tags from a patient in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":309,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":310,"author":{"gitId":"NeoHW"},"content":"#### Specifications","lastModifiedDate":"2024-03-18"},{"lineNumber":311,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":312,"author":{"gitId":"NeoHW"},"content":"* Tags, as defined by the `Tag` class, are alphanumeric characters with or without spaces, and repeated tags in the command are added as a single tag.","lastModifiedDate":"2024-03-22"},{"lineNumber":313,"author":{"gitId":"NeoHW"},"content":"* The deletion of tags is performed by specifying the tags to be removed for a particular patient.","lastModifiedDate":"2024-03-18"},{"lineNumber":314,"author":{"gitId":"NeoHW"},"content":"* Tags should match exactly with the existing tags of the patient.","lastModifiedDate":"2024-03-18"},{"lineNumber":315,"author":{"gitId":"NeoHW"},"content":"* If a patient has the tag(s) provided in the command, they will be removed. This operation is counted as a successful deletion.","lastModifiedDate":"2024-03-18"},{"lineNumber":316,"author":{"gitId":"NeoHW"},"content":"* When deleting tags, if a tag is repeated in the command, it will be treated as a single tag to delete. E.g. `t/friend t/friend` will be considered as a single `friend` tag for deletion.","lastModifiedDate":"2024-03-18"},{"lineNumber":317,"author":{"gitId":"NeoHW"},"content":"* If the patient does not have a tag provided in the command, it will be logged and shown to the user as an unsuccessful deletion of that tag.","lastModifiedDate":"2024-03-18"},{"lineNumber":318,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":319,"author":{"gitId":"NeoHW"},"content":"The activity diagram below outlines the steps involved when a user initiates a Delete Tags command.","lastModifiedDate":"2024-03-22"},{"lineNumber":320,"author":{"gitId":"NeoHW"},"content":"\u003cpuml src\u003d\"diagrams/DeleteTagsActivityDiagram.puml\" alt\u003d\"DeleteTagsActivityDiagram\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":321,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":322,"author":{"gitId":"NeoHW"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-18"},{"lineNumber":323,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":324,"author":{"gitId":"NeoHW"},"content":"Below is an example scenario of how the tag deletion process works within the PatientSync application:","lastModifiedDate":"2024-03-18"},{"lineNumber":325,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":326,"author":{"gitId":"NeoHW"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-18"},{"lineNumber":327,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":328,"author":{"gitId":"NeoHW"},"content":"Step 2: The user executes the `deletet 1 t/fall risk` command to delete the `fall risk` tag from patient 1 in the displayed patient list. The `DeleteTagsCommandParser` validates the input, ensuring that the index is valid and at least one tag is provided. Upon successful validation, an `DeleteTagsCommand` instance is created.","lastModifiedDate":"2024-03-22"},{"lineNumber":329,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":330,"author":{"gitId":"NeoHW"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":331,"author":{"gitId":"NeoHW"},"content":"\u003cb\u003eNote\u003c/b\u003e: Since multiple inputs are allowed, a set of tags to be deleted is passed, each of which will be removed if found associated with the patient.","lastModifiedDate":"2024-03-18"},{"lineNumber":332,"author":{"gitId":"NeoHW"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":333,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":334,"author":{"gitId":"NeoHW"},"content":"The following sequence diagram shows how the Delete Tags operation works:","lastModifiedDate":"2024-03-19"},{"lineNumber":335,"author":{"gitId":"NeoHW"},"content":"\u003cpuml src\u003d\"diagrams/DeleteTagsSequenceDiagram.puml\" alt\u003d\"DeleteTagsSequenceDiagram\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":336,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":337,"author":{"gitId":"NeoHW"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":338,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":339,"author":{"gitId":"NeoHW"},"content":"**Note:** The lifeline for `DeleteTagCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2024-03-18"},{"lineNumber":340,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":341,"author":{"gitId":"NeoHW"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":342,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":343,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":344,"author":{"gitId":"NeoHW"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-18"},{"lineNumber":345,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":346,"author":{"gitId":"NeoHW"},"content":"**Aspect: Bulk Tag Deletion**","lastModifiedDate":"2024-03-18"},{"lineNumber":347,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":348,"author":{"gitId":"NeoHW"},"content":"* **Alternative 1 (current choice)**: Bulk deletion of specified tags.","lastModifiedDate":"2024-03-18"},{"lineNumber":349,"author":{"gitId":"NeoHW"},"content":" * Pros: Allows removal of multiple tags in one command, preserves existing tags if not specified for deletion.","lastModifiedDate":"2024-03-18"},{"lineNumber":350,"author":{"gitId":"NeoHW"},"content":" * Cons: Requires additional memory for handling tag sets, potentially slower performance for large tag sets.","lastModifiedDate":"2024-03-18"},{"lineNumber":351,"author":{"gitId":"NeoHW"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":352,"author":{"gitId":"NeoHW"},"content":"* **Alternative 2**: Explicitly specify tags to delete, ignoring any non-existent tags.","lastModifiedDate":"2024-03-18"},{"lineNumber":353,"author":{"gitId":"NeoHW"},"content":" * Pros: Simplifies command execution, faster performance for small tag sets.","lastModifiedDate":"2024-03-18"},{"lineNumber":354,"author":{"gitId":"NeoHW"},"content":" * Cons: Requires multiple commands for each tag deletion, less flexible in bulk operations.","lastModifiedDate":"2024-03-18"},{"lineNumber":355,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":356,"author":{"gitId":"NeoHW"},"content":"**Aspect: Handling Missing Tags**","lastModifiedDate":"2024-03-18"},{"lineNumber":357,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":358,"author":{"gitId":"NeoHW"},"content":"* **Alternative 1 (current choice)**: Log output for non-existent tags to inform user, proceed with deleting the valid tags.","lastModifiedDate":"2024-03-18"},{"lineNumber":359,"author":{"gitId":"NeoHW"},"content":" * Pros: Simplifies user interaction, allows bulk deletion without worrying about non-existent tags, users are informed about the tags that are not present, Users do not need to correct the command.","lastModifiedDate":"2024-03-18"},{"lineNumber":360,"author":{"gitId":"NeoHW"},"content":" * Cons: Adds complexity to the command execution, requiring additional logic to differentiate between existing and non-existing tags.","lastModifiedDate":"2024-03-18"},{"lineNumber":361,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":362,"author":{"gitId":"NeoHW"},"content":"* **Alternative 2**: Return an error message for non-existent tags, ask users to correct the command.","lastModifiedDate":"2024-03-18"},{"lineNumber":363,"author":{"gitId":"NeoHW"},"content":" * Pros: Ensures user awareness of non-existent tags, avoids accidental deletions, prompts users to provide valid tag inputs.","lastModifiedDate":"2024-03-18"},{"lineNumber":364,"author":{"gitId":"NeoHW"},"content":" * Cons: Requires users to fix the command before proceeding, potential interruption to workflow, may increase user frustration if multiple tags are missing.","lastModifiedDate":"2024-03-18"},{"lineNumber":365,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":366,"author":{"gitId":"NeoHW"},"content":"**Aspect: Feedback for Deletion Operation**","lastModifiedDate":"2024-03-18"},{"lineNumber":367,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":368,"author":{"gitId":"NeoHW"},"content":"* **Alternative 1 (current choice)**: Provide a success message for each tag successfully deleted.","lastModifiedDate":"2024-03-18"},{"lineNumber":369,"author":{"gitId":"NeoHW"},"content":" * Pros: Clear indication of which tags were removed, better user understanding of command execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":370,"author":{"gitId":"NeoHW"},"content":" * Cons: May clutter output for multiple tag deletions.","lastModifiedDate":"2024-03-18"},{"lineNumber":371,"author":{"gitId":"NeoHW"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":372,"author":{"gitId":"NeoHW"},"content":"* **Alternative 2**: Return a single success message for all successful tag deletions.","lastModifiedDate":"2024-03-18"},{"lineNumber":373,"author":{"gitId":"NeoHW"},"content":" * Pros: Cleaner output for multiple deletions, reduces command feedback clutter.","lastModifiedDate":"2024-03-18"},{"lineNumber":374,"author":{"gitId":"NeoHW"},"content":" * Cons: Users might not have a clear understanding of individual deletions, less granular feedback.","lastModifiedDate":"2024-03-18"},{"lineNumber":375,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":376,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":377,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":378,"author":{"gitId":"NeoHW"},"content":"### 3.4 Adding an Event to a Patient","lastModifiedDate":"2024-03-18"},{"lineNumber":379,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":380,"author":{"gitId":"SherisseTJW"},"content":"#### Introduction","lastModifiedDate":"2024-03-13"},{"lineNumber":381,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":382,"author":{"gitId":"guohuang88"},"content":"The `AddEventCommand` class is responsible for adding an Event to a patient in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":383,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":384,"author":{"gitId":"SherisseTJW"},"content":"#### Specifications","lastModifiedDate":"2024-03-13"},{"lineNumber":385,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":386,"author":{"gitId":"SherisseTJW"},"content":"* Events, as defined by the `Event` class, contain both the Name of the Event that falls on that date, as well as the Date of the Event and optionally, the Time Period for which the Event is happening.","lastModifiedDate":"2024-03-18"},{"lineNumber":387,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":388,"author":{"gitId":"guohuang88"},"content":"* The addition of Event is cumulative, and new Events will be added to the existing set of Events for the patient, preserving the previously assigned Events.","lastModifiedDate":"2024-03-18"},{"lineNumber":389,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":390,"author":{"gitId":"guohuang88"},"content":"* If the patient already has a particular Event, it will not be added again.","lastModifiedDate":"2024-03-18"},{"lineNumber":391,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":392,"author":{"gitId":"SherisseTJW"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-13"},{"lineNumber":393,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":394,"author":{"gitId":"SherisseTJW"},"content":"Given below is an example usage scenario and how the group creation mechanism behaves at each step.","lastModifiedDate":"2024-03-13"},{"lineNumber":395,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":396,"author":{"gitId":"SherisseTJW"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-13"},{"lineNumber":397,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":398,"author":{"gitId":"guohuang88"},"content":"Step 2: The user executes the `adde 1 n/Birthday d/20-01-2022` command to add the Event, Birthday, which falls on the 20th January.","lastModifiedDate":"2024-03-18"},{"lineNumber":399,"author":{"gitId":"SherisseTJW"},"content":"* Upon successful validation, it creates an `AddEventsCommand` instance.","lastModifiedDate":"2024-03-18"},{"lineNumber":400,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":401,"author":{"gitId":"SherisseTJW"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":402,"author":{"gitId":"SherisseTJW"},"content":"\u003cb\u003eNote\u003c/b\u003e: Only 1 Event can be added at a time per command","lastModifiedDate":"2024-03-19"},{"lineNumber":403,"author":{"gitId":"SherisseTJW"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":404,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":405,"author":{"gitId":"SherisseTJW"},"content":"\u003cpuml src\u003d\"diagrams/AddEventSequenceDiagram.puml\" alt\u003d\"Add Event Sequence Diagram\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":406,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":407,"author":{"gitId":"SherisseTJW"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-18"},{"lineNumber":408,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":409,"author":{"gitId":"SherisseTJW"},"content":"**Aspect: Handling Repeated Events**","lastModifiedDate":"2024-03-18"},{"lineNumber":410,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":411,"author":{"gitId":"SherisseTJW"},"content":"* **Alternative 1 (current choice)**: Repeated events are added as a single event.","lastModifiedDate":"2024-03-18"},{"lineNumber":412,"author":{"gitId":"SherisseTJW"},"content":" * Pros: Simplifies event management, avoids redundancy.","lastModifiedDate":"2024-03-18"},{"lineNumber":413,"author":{"gitId":"SherisseTJW"},"content":" * Cons: Requires additional logic to detect and merge repeated events.","lastModifiedDate":"2024-03-18"},{"lineNumber":414,"author":{"gitId":"SherisseTJW"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":415,"author":{"gitId":"SherisseTJW"},"content":"* **Alternative 2**: Each event is added individually, including duplicates.","lastModifiedDate":"2024-03-18"},{"lineNumber":416,"author":{"gitId":"SherisseTJW"},"content":" * Pros: Explicitly shows every event provided.","lastModifiedDate":"2024-03-18"},{"lineNumber":417,"author":{"gitId":"SherisseTJW"},"content":" * Cons: May clutter patient data with redundant events.","lastModifiedDate":"2024-03-18"},{"lineNumber":418,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":419,"author":{"gitId":"SherisseTJW"},"content":"**Aspect: Cumulative Event Addition**","lastModifiedDate":"2024-03-18"},{"lineNumber":420,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":421,"author":{"gitId":"SherisseTJW"},"content":"* **Alternative 1 (current choice)**: Cumulative addition of events to existing set.","lastModifiedDate":"2024-03-18"},{"lineNumber":422,"author":{"gitId":"SherisseTJW"},"content":" * Pros: Preserves previous events, allows for gradual building of patient profile.","lastModifiedDate":"2024-03-18"},{"lineNumber":423,"author":{"gitId":"SherisseTJW"},"content":" * Cons: Requires additional memory for storing updated events sets.","lastModifiedDate":"2024-03-18"},{"lineNumber":424,"author":{"gitId":"SherisseTJW"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":425,"author":{"gitId":"SherisseTJW"},"content":"* **Alternative 2**: Overwrite existing events with new ones.","lastModifiedDate":"2024-03-18"},{"lineNumber":426,"author":{"gitId":"SherisseTJW"},"content":" * Pros: Simplifies data handling, avoids events duplication.","lastModifiedDate":"2024-03-18"},{"lineNumber":427,"author":{"gitId":"SherisseTJW"},"content":" * Cons: Risk of losing previously assigned events, less flexibility in event management.","lastModifiedDate":"2024-03-18"},{"lineNumber":428,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":429,"author":{"gitId":"SherisseTJW"},"content":"**Aspect: Error Handling for Duplicate Events**","lastModifiedDate":"2024-03-18"},{"lineNumber":430,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":431,"author":{"gitId":"SherisseTJW"},"content":"* **Alternative 1 (current choice)**: Do not add events already present for the patient.","lastModifiedDate":"2024-03-18"},{"lineNumber":432,"author":{"gitId":"SherisseTJW"},"content":" * Pros: Prevents event redundancy, maintains data integrity. Better user experience, do not need to worry about the intricacies of event duplication.","lastModifiedDate":"2024-03-18"},{"lineNumber":433,"author":{"gitId":"SherisseTJW"},"content":" * Cons: Users do not explicitly receive direct feedback about skipped events.","lastModifiedDate":"2024-03-18"},{"lineNumber":434,"author":{"gitId":"SherisseTJW"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":435,"author":{"gitId":"SherisseTJW"},"content":"* **Alternative 2**: Return error message for duplicate events.","lastModifiedDate":"2024-03-18"},{"lineNumber":436,"author":{"gitId":"SherisseTJW"},"content":" * Pros: Notifies user about duplicate inputs, ensures data consistency.","lastModifiedDate":"2024-03-18"},{"lineNumber":437,"author":{"gitId":"SherisseTJW"},"content":" * Cons: In the case of the addition of multiple existing or duplicate events, users have to find and remove the duplicated events from the given command, which would be cumbersome especially when there are many events listed in the command.","lastModifiedDate":"2024-03-18"},{"lineNumber":438,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":439,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":440,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-12"},{"lineNumber":441,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":442,"author":{"gitId":"NeoHW"},"content":"### 3.5 Editing a Patient","lastModifiedDate":"2024-03-18"},{"lineNumber":443,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":444,"author":{"gitId":"choowengyan"},"content":"#### Introduction","lastModifiedDate":"2024-03-17"},{"lineNumber":445,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":446,"author":{"gitId":"choowengyan"},"content":"The `EditCommand` class is responsible for editing current patient\u0027s information in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":447,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":448,"author":{"gitId":"choowengyan"},"content":"#### Specifications","lastModifiedDate":"2024-03-17"},{"lineNumber":449,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":450,"author":{"gitId":"choowengyan"},"content":"* EditCommand, as defined by the `EditCommand` class, contain parameters which consists of:","lastModifiedDate":"2024-03-17"},{"lineNumber":451,"author":{"gitId":"choowengyan"},"content":" * `INDEX` integer,","lastModifiedDate":"2024-03-17"},{"lineNumber":452,"author":{"gitId":"choowengyan"},"content":" * `patientHospitalId` integer,","lastModifiedDate":"2024-03-17"},{"lineNumber":453,"author":{"gitId":"choowengyan"},"content":" * `name`, `preferredName` String with only alphabets character,","lastModifiedDate":"2024-03-17"},{"lineNumber":454,"author":{"gitId":"choowengyan"},"content":" * `foodPreference`, `familyCondition`, `hobby` and `tag` which are alphanumeric.","lastModifiedDate":"2024-03-17"},{"lineNumber":455,"author":{"gitId":"choowengyan"},"content":"* All fields are optional in the EditCommand except for `INDEX`","lastModifiedDate":"2024-03-17"},{"lineNumber":456,"author":{"gitId":"choowengyan"},"content":"* If any of the fields are repeated during the adding of patient or missing fields, error message will be thrown.","lastModifiedDate":"2024-03-17"},{"lineNumber":457,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":458,"author":{"gitId":"choowengyan"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-17"},{"lineNumber":459,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":460,"author":{"gitId":"choowengyan"},"content":"Given below is an example usage scenario and how the group creation mechanism behaves at each step.","lastModifiedDate":"2024-03-17"},{"lineNumber":461,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":462,"author":{"gitId":"choowengyan"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-17"},{"lineNumber":463,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":464,"author":{"gitId":"choowengyan"},"content":"Step 2: The user executes the `edit 2 f/Aglio-olio t/depression` command to edit an existing Patient whose index in ","lastModifiedDate":"2024-03-17"},{"lineNumber":465,"author":{"gitId":"choowengyan"},"content":"the PatientSync is `2`, with changes on preferred food to be `Aglio-olio` and added a tag `depression`.","lastModifiedDate":"2024-03-17"},{"lineNumber":466,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":467,"author":{"gitId":"choowengyan"},"content":"Step 3: The `EditCommandParser` will be called to validate the input, ensuring that the fields are valid with correct","lastModifiedDate":"2024-03-17"},{"lineNumber":468,"author":{"gitId":"choowengyan"},"content":"data types and no duplicates of fields.","lastModifiedDate":"2024-03-17"},{"lineNumber":469,"author":{"gitId":"choowengyan"},"content":"* Upon successful validation, it will update the `Patient` instance.","lastModifiedDate":"2024-03-17"},{"lineNumber":470,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":471,"author":{"gitId":"choowengyan"},"content":"Step 4: The Patient with specified index will be updated in the list, shown in the UI.","lastModifiedDate":"2024-03-17"},{"lineNumber":472,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":473,"author":{"gitId":"choowengyan"},"content":"The following UML sequence diagram illustrates how the `EditCommand` operation works.","lastModifiedDate":"2024-03-19"},{"lineNumber":474,"author":{"gitId":"choowengyan"},"content":"\u003cpuml src\u003d\"diagrams/EditSequenceDiagram.puml\" alt\u003d\"Edit Sequence Diagram\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":475,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":476,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":477,"author":{"gitId":"choowengyan"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-17"},{"lineNumber":478,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":479,"author":{"gitId":"choowengyan"},"content":"#### Aspect of Using Identifier","lastModifiedDate":"2024-03-17"},{"lineNumber":480,"author":{"gitId":"choowengyan"},"content":"* **Alternative 1 (current choice)**: Uses `INDEX` index of the Patient in the PatientSync.","lastModifiedDate":"2024-03-17"},{"lineNumber":481,"author":{"gitId":"choowengyan"},"content":" * Pros: Ease of use, as user can refer to the index in the PatientSync directly.","lastModifiedDate":"2024-03-17"},{"lineNumber":482,"author":{"gitId":"choowengyan"},"content":" * Cons: Referring and scrolling the PatientSync may take time to find the patient\u0027s index.","lastModifiedDate":"2024-03-17"},{"lineNumber":483,"author":{"gitId":"choowengyan"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":484,"author":{"gitId":"choowengyan"},"content":"* **Alternative 2**: Uses `patientHospitalId` of a Patient.","lastModifiedDate":"2024-03-17"},{"lineNumber":485,"author":{"gitId":"choowengyan"},"content":" * Pros: Able to uniquely identified each patient.","lastModifiedDate":"2024-03-17"},{"lineNumber":486,"author":{"gitId":"choowengyan"},"content":" * Cons: Higher chance in typing the wrong `patientHospitalId`.","lastModifiedDate":"2024-03-17"},{"lineNumber":487,"author":{"gitId":"choowengyan"},"content":" ","lastModifiedDate":"2024-03-17"},{"lineNumber":488,"author":{"gitId":"choowengyan"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-17"},{"lineNumber":489,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":490,"author":{"gitId":"NeoHW"},"content":"### 3.6 Deleting an Event from a Patient","lastModifiedDate":"2024-03-18"},{"lineNumber":491,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":492,"author":{"gitId":"ZhiWei1010"},"content":"#### Introduction","lastModifiedDate":"2024-03-15"},{"lineNumber":493,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":494,"author":{"gitId":"guohuang88"},"content":"The `DeleteEventCommand` class is responsible for deleting an Event from a patient in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":495,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":496,"author":{"gitId":"ZhiWei1010"},"content":"#### Specifications","lastModifiedDate":"2024-03-15"},{"lineNumber":497,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":498,"author":{"gitId":"SherisseTJW"},"content":"* DeleteEventCommand takes in two parameters: `PATIENT_INDEX` and `EVENT_INDEX` which are Indexes of patients","lastModifiedDate":"2024-03-18"},{"lineNumber":499,"author":{"gitId":"ZhiWei1010"},"content":"shown on the UI after using the `list` or `find` command and Indexes of the specified Patient\u0027s events as defined in","lastModifiedDate":"2024-03-15"},{"lineNumber":500,"author":{"gitId":"ZhiWei1010"},"content":"the `Index` class.","lastModifiedDate":"2024-03-15"},{"lineNumber":501,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":502,"author":{"gitId":"guohuang88"},"content":"* Deletion of Event can only happen for a single patient, and a single event at any given time.","lastModifiedDate":"2024-03-18"},{"lineNumber":503,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":504,"author":{"gitId":"ZhiWei1010"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-15"},{"lineNumber":505,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":506,"author":{"gitId":"ZhiWei1010"},"content":"Given below is an example usage scenario and how the group creation mechanism behaves at each step.","lastModifiedDate":"2024-03-15"},{"lineNumber":507,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":508,"author":{"gitId":"ZhiWei1010"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-15"},{"lineNumber":509,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":510,"author":{"gitId":"guohuang88"},"content":"Step 2: The user executes the `adde 1 n/ Birthday d/ 20-01-2022` command to add the Event, Birthday,","lastModifiedDate":"2024-03-18"},{"lineNumber":511,"author":{"gitId":"ZhiWei1010"},"content":"which falls on the 20th January.","lastModifiedDate":"2024-03-15"},{"lineNumber":512,"author":{"gitId":"SherisseTJW"},"content":"* Upon successful validation, it creates an `AddEventsCommand` instance.","lastModifiedDate":"2024-03-18"},{"lineNumber":513,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":514,"author":{"gitId":"guohuang88"},"content":"Step 3: The use executes `deletee 1 e/1` to delete the Event as he realised he keyed in the wrong","lastModifiedDate":"2024-03-18"},{"lineNumber":515,"author":{"gitId":"ZhiWei1010"},"content":"date.","lastModifiedDate":"2024-03-15"},{"lineNumber":516,"author":{"gitId":"SherisseTJW"},"content":"* Upon successful validation, an `DeleteEventCommand` instance is created.","lastModifiedDate":"2024-03-18"},{"lineNumber":517,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":518,"author":{"gitId":"ZhiWei1010"},"content":"The following UML sequence diagram illustrates how the Delete Event operation works.","lastModifiedDate":"2024-03-19"},{"lineNumber":519,"author":{"gitId":"ZhiWei1010"},"content":"\u003cpuml src\u003d\"diagrams/DeleteEventSequenceDiagram.puml\" alt\u003d\"Delete Event Sequence Diagram\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":520,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":521,"author":{"gitId":"ZhiWei1010"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-15"},{"lineNumber":522,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":523,"author":{"gitId":"ZhiWei1010"},"content":"**Aspect: Choice of COMMAND_WORD**","lastModifiedDate":"2024-03-15"},{"lineNumber":524,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":525,"author":{"gitId":"ZhiWei1010"},"content":"* **Alternative 1 (current choice)**: Use `deletee`","lastModifiedDate":"2024-03-15"},{"lineNumber":526,"author":{"gitId":"guohuang88"},"content":" * Pros: Consistent with `adde` command to add new Event.","lastModifiedDate":"2024-03-18"},{"lineNumber":527,"author":{"gitId":"ZhiWei1010"},"content":" * Cons: Might be counter-intuitive for user as command is unfamiliar.","lastModifiedDate":"2024-03-15"},{"lineNumber":528,"author":{"gitId":"ZhiWei1010"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":529,"author":{"gitId":"ZhiWei1010"},"content":"* **Alternative 2**: `deleteID`","lastModifiedDate":"2024-03-15"},{"lineNumber":530,"author":{"gitId":"ZhiWei1010"},"content":" * Pros: Clearer syntax.","lastModifiedDate":"2024-03-15"},{"lineNumber":531,"author":{"gitId":"ZhiWei1010"},"content":" * Cons: User might confuse ID as Patient ID and also inconsistency with `adde` command, further confusing user.","lastModifiedDate":"2024-03-15"},{"lineNumber":532,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":533,"author":{"gitId":"ZhiWei1010"},"content":"**Aspect: Syntax to choose event to delete**","lastModifiedDate":"2024-03-19"},{"lineNumber":534,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":535,"author":{"gitId":"ZhiWei1010"},"content":"* **Alternative 1 (current choice)**: Delete event by `[EVENT_INDEX]`. Syntax: prefix `e/` followed by `[EVENT_INDEX]` ","lastModifiedDate":"2024-03-19"},{"lineNumber":536,"author":{"gitId":"ZhiWei1010"},"content":" * Pros: User do not need to type whole event name, also similar to delete patient where patient index is used to","lastModifiedDate":"2024-03-19"},{"lineNumber":537,"author":{"gitId":"ZhiWei1010"},"content":" identify patient of interest.","lastModifiedDate":"2024-03-19"},{"lineNumber":538,"author":{"gitId":"ZhiWei1010"},"content":" * Cons: User need to know the `[EVENT_INDEX]` of the patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":539,"author":{"gitId":"ZhiWei1010"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":540,"author":{"gitId":"ZhiWei1010"},"content":"* **Alternative 2**: Delete event by `[EVENT_NAME]`. Syntax: prefix `e/` followed by `[EVENT_NAME]`","lastModifiedDate":"2024-03-19"},{"lineNumber":541,"author":{"gitId":"ZhiWei1010"},"content":" * Pros: User can delete event quickly if name is short.","lastModifiedDate":"2024-03-19"},{"lineNumber":542,"author":{"gitId":"ZhiWei1010"},"content":" * Cons: User need to input the whole event name which might be tedious if `[EVENT_NAME]` is very long.","lastModifiedDate":"2024-03-19"},{"lineNumber":543,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":544,"author":{"gitId":"ZhiWei1010"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-15"},{"lineNumber":545,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":546,"author":{"gitId":"NeoHW"},"content":"### 3.7 Editing an Event for a Patient","lastModifiedDate":"2024-03-18"},{"lineNumber":547,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":548,"author":{"gitId":"guohuang88"},"content":"#### Introduction","lastModifiedDate":"2024-03-16"},{"lineNumber":549,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":550,"author":{"gitId":"guohuang88"},"content":"The `EditEventCommand` class is responsible for editing a specific Event for a patient in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":551,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":552,"author":{"gitId":"guohuang88"},"content":"#### Specifications","lastModifiedDate":"2024-03-16"},{"lineNumber":553,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":554,"author":{"gitId":"guohuang88"},"content":"* EditEventCommand takes in four parameters: `PATIENT_INDEX`, `EVENT_INDEX`, `EVENT_NAME` and `DATE`.","lastModifiedDate":"2024-03-18"},{"lineNumber":555,"author":{"gitId":"guohuang88"},"content":" All parameters are compulsory. Optionally, you may include `TIME` in the `DATE` parameter.","lastModifiedDate":"2024-03-16"},{"lineNumber":556,"author":{"gitId":"guohuang88"},"content":"* EditEventCommand will edit the selected `EVENT_INDEX` with a new event.","lastModifiedDate":"2024-03-18"},{"lineNumber":557,"author":{"gitId":"guohuang88"},"content":"* Editing of an event can only happen for a single patient, and a single event at any given time.","lastModifiedDate":"2024-03-18"},{"lineNumber":558,"author":{"gitId":"guohuang88"},"content":"* Editing an event to an existing event will result in displaying only one of the duplicate events.","lastModifiedDate":"2024-03-23"},{"lineNumber":559,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":560,"author":{"gitId":"guohuang88"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-16"},{"lineNumber":561,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":562,"author":{"gitId":"guohuang88"},"content":"Given below is an example usage scenario and how the group creation mechanism behaves at each step.","lastModifiedDate":"2024-03-16"},{"lineNumber":563,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":564,"author":{"gitId":"guohuang88"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-16"},{"lineNumber":565,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":566,"author":{"gitId":"guohuang88"},"content":"Step 2: The user executes the `adde 1 n/Birthday d/20-01-2022` command to add the Event, Birthday,","lastModifiedDate":"2024-03-18"},{"lineNumber":567,"author":{"gitId":"guohuang88"},"content":"which falls on the 20th January.","lastModifiedDate":"2024-03-16"},{"lineNumber":568,"author":{"gitId":"guohuang88"},"content":"* Upon successful validation, it creates an `AddEventCommand` instance.","lastModifiedDate":"2024-03-18"},{"lineNumber":569,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":570,"author":{"gitId":"guohuang88"},"content":"Step 3: The user executes `edite 1 e/1 n/New Birthday d/20-01-2023` to edit the Event.","lastModifiedDate":"2024-03-18"},{"lineNumber":571,"author":{"gitId":"guohuang88"},"content":"* Upon successful validation, an `EditEventCommand` instance is created.","lastModifiedDate":"2024-03-18"},{"lineNumber":572,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":573,"author":{"gitId":"ZhiWei1010"},"content":"The following UML sequence diagram illustrates how the Edit Event operations works.","lastModifiedDate":"2024-03-19"},{"lineNumber":574,"author":{"gitId":"ZhiWei1010"},"content":"\u003cpuml src\u003d\"diagrams/EditEventSequenceDiagram.puml\" alt\u003d\"Edit Event Sequence Diagram\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":575,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":576,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":577,"author":{"gitId":"guohuang88"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-16"},{"lineNumber":578,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":579,"author":{"gitId":"guohuang88"},"content":"**Aspect: Choice of COMMAND_WORD**","lastModifiedDate":"2024-03-16"},{"lineNumber":580,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":581,"author":{"gitId":"guohuang88"},"content":"* **Alternative 1 (current choice)**: Use `edite` ","lastModifiedDate":"2024-03-16"},{"lineNumber":582,"author":{"gitId":"guohuang88"},"content":" * Pros: Consistent with `adde` and `deletee` commands.","lastModifiedDate":"2024-03-16"},{"lineNumber":583,"author":{"gitId":"guohuang88"},"content":" * Cons: May not be as intuitive for user.","lastModifiedDate":"2024-03-16"},{"lineNumber":584,"author":{"gitId":"guohuang88"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":585,"author":{"gitId":"guohuang88"},"content":"* **Alternative 2**: Use `editID`","lastModifiedDate":"2024-03-16"},{"lineNumber":586,"author":{"gitId":"guohuang88"},"content":" * Pros: Clearer Syntax.","lastModifiedDate":"2024-03-16"},{"lineNumber":587,"author":{"gitId":"guohuang88"},"content":" * Cons: Inconsistent with `adde` and `deletee` commands.","lastModifiedDate":"2024-03-16"},{"lineNumber":588,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":589,"author":{"gitId":"guohuang88"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-16"},{"lineNumber":590,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":591,"author":{"gitId":"NeoHW"},"content":"### 3.8 Deleting a Patient","lastModifiedDate":"2024-03-18"},{"lineNumber":592,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":593,"author":{"gitId":"guohuang88"},"content":"#### Introduction","lastModifiedDate":"2024-03-14"},{"lineNumber":594,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":595,"author":{"gitId":"guohuang88"},"content":"The `DeleteCommand` is responsible for deleting a patient in the address book.","lastModifiedDate":"2024-03-14"},{"lineNumber":596,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":597,"author":{"gitId":"guohuang88"},"content":"#### Specifications","lastModifiedDate":"2024-03-14"},{"lineNumber":598,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":599,"author":{"gitId":"guohuang88"},"content":"* Delete command is used when the user wants to remove a patient from the address book.","lastModifiedDate":"2024-03-14"},{"lineNumber":600,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":601,"author":{"gitId":"guohuang88"},"content":"The following UML sequence diagram illustrates how the Delete operation works.","lastModifiedDate":"2024-03-19"},{"lineNumber":602,"author":{"gitId":"guohuang88"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Delete Sequence Diagram\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":603,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":604,"author":{"gitId":"guohuang88"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-14"},{"lineNumber":605,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":606,"author":{"gitId":"guohuang88"},"content":"Given below is an example usage scenario and how the group creation mechanism behaves at each step.","lastModifiedDate":"2024-03-16"},{"lineNumber":607,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":608,"author":{"gitId":"guohuang88"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-14"},{"lineNumber":609,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":610,"author":{"gitId":"guohuang88"},"content":"Step 2: The user see all the patients in the address book.","lastModifiedDate":"2024-03-14"},{"lineNumber":611,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":612,"author":{"gitId":"guohuang88"},"content":"Step 3: The user decide to remove the first patient in the address book.","lastModifiedDate":"2024-03-14"},{"lineNumber":613,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":614,"author":{"gitId":"guohuang88"},"content":"Step 4: The user executes the `delete 1` command to remove the first patient in the address book.","lastModifiedDate":"2024-03-14"},{"lineNumber":615,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":616,"author":{"gitId":"ZhiWei1010"},"content":"### 3.9 Listing all Patients","lastModifiedDate":"2024-03-19"},{"lineNumber":617,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":618,"author":{"gitId":"ZhiWei1010"},"content":"#### Introduction","lastModifiedDate":"2024-03-19"},{"lineNumber":619,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":620,"author":{"gitId":"ZhiWei1010"},"content":"The `ListCommand` is responsible for listing all patients in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":621,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":622,"author":{"gitId":"ZhiWei1010"},"content":"## Specifications","lastModifiedDate":"2024-03-19"},{"lineNumber":623,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":624,"author":{"gitId":"ZhiWei1010"},"content":"* The ListCommand make use of a `Predicate` that always evaluates to true.","lastModifiedDate":"2024-03-19"},{"lineNumber":625,"author":{"gitId":"ZhiWei1010"},"content":"* Through ListCommand#execute(), the `Predicate` is passed as an argument to Model#updateFilteredPersonList(),","lastModifiedDate":"2024-03-19"},{"lineNumber":626,"author":{"gitId":"ZhiWei1010"},"content":"causing the UI to only show all patients.","lastModifiedDate":"2024-03-19"},{"lineNumber":627,"author":{"gitId":"ZhiWei1010"},"content":"* The UML sequence diagram below shows the interaction between the Logic and Model components after calling `list`","lastModifiedDate":"2024-03-19"},{"lineNumber":628,"author":{"gitId":"ZhiWei1010"},"content":"command.","lastModifiedDate":"2024-03-19"},{"lineNumber":629,"author":{"gitId":"SherisseTJW"},"content":"* For each Patient\u0027s Events, the Events will be displayed in ascending order by date, then start time if date is equal, ","lastModifiedDate":"2024-03-23"},{"lineNumber":630,"author":{"gitId":"SherisseTJW"},"content":"then end time if both date and start time is equal","lastModifiedDate":"2024-03-23"},{"lineNumber":631,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":632,"author":{"gitId":"ZhiWei1010"},"content":"\u003cpuml src\u003d\"diagrams/ListSequenceDiagram.puml\" alt\u003d\"List Sequence Diagram\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":633,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":634,"author":{"gitId":"guohuang88"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-14"},{"lineNumber":635,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":636,"author":{"gitId":"guohuang88"},"content":"### 3.10 Locating patients by name","lastModifiedDate":"2024-03-22"},{"lineNumber":637,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":638,"author":{"gitId":"guohuang88"},"content":"#### Introduction","lastModifiedDate":"2024-03-22"},{"lineNumber":639,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":640,"author":{"gitId":"guohuang88"},"content":"The `FindCommand` class is responsible for finding the patients by the name in the patient list","lastModifiedDate":"2024-03-22"},{"lineNumber":641,"author":{"gitId":"guohuang88"},"content":"using keyword(s).","lastModifiedDate":"2024-03-22"},{"lineNumber":642,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":643,"author":{"gitId":"guohuang88"},"content":"#### Specifications","lastModifiedDate":"2024-03-22"},{"lineNumber":644,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":645,"author":{"gitId":"guohuang88"},"content":"* `FindCommand` takes in one or more keywords to find patients in the patient list.","lastModifiedDate":"2024-03-22"},{"lineNumber":646,"author":{"gitId":"guohuang88"},"content":"* `FindCommand` will update the patient list with patients whose name matches the keyword(s).","lastModifiedDate":"2024-03-22"},{"lineNumber":647,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":648,"author":{"gitId":"guohuang88"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-22"},{"lineNumber":649,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":650,"author":{"gitId":"guohuang88"},"content":"Given below is an example usage scenario and how the group creation mechanism behaves at each step.","lastModifiedDate":"2024-03-22"},{"lineNumber":651,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":652,"author":{"gitId":"guohuang88"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-22"},{"lineNumber":653,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":654,"author":{"gitId":"guohuang88"},"content":"Step 2: The user executes `find Alex` to search for patients whose name is Alex.","lastModifiedDate":"2024-03-22"},{"lineNumber":655,"author":{"gitId":"guohuang88"},"content":"* Upon successful execution, those patients whose name is `Alex` will be listed in the patient list.","lastModifiedDate":"2024-03-22"},{"lineNumber":656,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":657,"author":{"gitId":"guohuang88"},"content":"The following UML sequence diagram illustrates how the Find operations works.","lastModifiedDate":"2024-03-22"},{"lineNumber":658,"author":{"gitId":"guohuang88"},"content":"\u003cpuml src\u003d\"diagrams/FindSequenceDiagram.puml\" alt\u003d\"Find Sequence Diagram\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":659,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":660,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":661,"author":{"gitId":"guohuang88"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-22"},{"lineNumber":662,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":663,"author":{"gitId":"guohuang88"},"content":"**Aspect: Choice of keyword**","lastModifiedDate":"2024-03-22"},{"lineNumber":664,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":665,"author":{"gitId":"guohuang88"},"content":"* **Alternative 1 (current choice)**: Search using `PATIENT_NAME` as the keyword","lastModifiedDate":"2024-03-22"},{"lineNumber":666,"author":{"gitId":"guohuang88"},"content":" * Pros: Easy for user to remember the name.","lastModifiedDate":"2024-03-22"},{"lineNumber":667,"author":{"gitId":"guohuang88"},"content":" * Cons: There may be many patients whose name contains the same keyword.","lastModifiedDate":"2024-03-22"},{"lineNumber":668,"author":{"gitId":"guohuang88"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":669,"author":{"gitId":"guohuang88"},"content":"* **Alternative 2**: Search using `PATIENT_HOSPITAL_ID` as the keyword","lastModifiedDate":"2024-03-22"},{"lineNumber":670,"author":{"gitId":"guohuang88"},"content":" * Pros: User may obtain the specific patient.","lastModifiedDate":"2024-03-22"},{"lineNumber":671,"author":{"gitId":"guohuang88"},"content":" * Cons: Hard for user to remember the specific `PATIENT_HOSPITAL_ID`.","lastModifiedDate":"2024-03-22"},{"lineNumber":672,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":673,"author":{"gitId":"guohuang88"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-22"},{"lineNumber":674,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":675,"author":{"gitId":"NeoHW"},"content":"## 4 Planned Enhancements","lastModifiedDate":"2024-03-12"},{"lineNumber":676,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":677,"author":{"gitId":"NeoHW"},"content":"### 4.1 \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2024-03-12"},{"lineNumber":678,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":679,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":680,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":681,"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":682,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":683,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":684,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":685,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":686,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":687,"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":688,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":689,"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":690,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":691,"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":692,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":693,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":694,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":695,"author":{"gitId":"NeoHW"},"content":"Step 2. The user executes `delete 5` command to delete the 5th patient 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":"2024-03-08"},{"lineNumber":696,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":697,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":698,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":699,"author":{"gitId":"NeoHW"},"content":"Step 3. The user executes `add n/David …​` to add a new patient. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2024-03-08"},{"lineNumber":700,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":701,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":702,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":703,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":704,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":705,"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":706,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":707,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":708,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":709,"author":{"gitId":"NeoHW"},"content":"Step 4. The user now decides that adding the patient 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":"2024-03-08"},{"lineNumber":710,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":711,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":712,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":713,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":714,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":715,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":716,"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":717,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":718,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":719,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":720,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":721,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":722,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":723,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":724,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":725,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":726,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":727,"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":728,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":729,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":730,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":731,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":732,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":733,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":734,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":735,"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":736,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":737,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":738,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":739,"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":740,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":741,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":742,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":743,"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":744,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":745,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":746,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":747,"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":748,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":749,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":750,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":751,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":752,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":753,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":754,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":755,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":756,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":757,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":758,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":759,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":760,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":761,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":762,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":763,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":764,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":765,"author":{"gitId":"NeoHW"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the patient being deleted).","lastModifiedDate":"2024-03-08"},{"lineNumber":766,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":767,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":768,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":769,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":770,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":771,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":772,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":773,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":774,"author":{"gitId":"NeoHW"},"content":"## 5 Documentation, logging, testing, configuration, dev-ops","lastModifiedDate":"2024-03-12"},{"lineNumber":775,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":776,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":777,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":778,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":779,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":780,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":781,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":782,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":783,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":784,"author":{"gitId":"NeoHW"},"content":"## 6 Appendix: Requirements","lastModifiedDate":"2024-03-12"},{"lineNumber":785,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":786,"author":{"gitId":"NeoHW"},"content":"### 6.1 Product scope","lastModifiedDate":"2024-03-12"},{"lineNumber":787,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":788,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":789,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":790,"author":{"gitId":"NeoHW"},"content":"- has a need to manage a significant number of patients","lastModifiedDate":"2024-03-06"},{"lineNumber":791,"author":{"gitId":"NeoHW"},"content":"- values comprehensive patient information for tailored treatment","lastModifiedDate":"2024-03-06"},{"lineNumber":792,"author":{"gitId":"NeoHW"},"content":"- prefer desktop apps over other types","lastModifiedDate":"2024-03-06"},{"lineNumber":793,"author":{"gitId":"NeoHW"},"content":"- can type fast","lastModifiedDate":"2024-03-06"},{"lineNumber":794,"author":{"gitId":"NeoHW"},"content":"- prefers typing to mouse interactions","lastModifiedDate":"2024-03-06"},{"lineNumber":795,"author":{"gitId":"NeoHW"},"content":"- is reasonably comfortable using CLI apps","lastModifiedDate":"2024-03-06"},{"lineNumber":796,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":797,"author":{"gitId":"NeoHW"},"content":"**Value proposition**:\\","lastModifiedDate":"2024-03-12"},{"lineNumber":798,"author":{"gitId":"NeoHW"},"content":"PatientSync is meticulously crafted for nurses who prioritize the well-being of their patients above all else. It allows nurses to input intimate details about their patients, such as food preferences and family conditions. This personalized approach enables nurses to deliver tailored care that meets the unique needs of each individual.","lastModifiedDate":"2024-03-12"},{"lineNumber":799,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":800,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":801,"author":{"gitId":"NeoHW"},"content":"### 6.2 User stories","lastModifiedDate":"2024-03-12"},{"lineNumber":802,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":803,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":804,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":805,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":806,"author":{"gitId":"SherisseTJW"},"content":"|----------|--------------------------------------------|------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-23"},{"lineNumber":807,"author":{"gitId":"NeoHW"},"content":"| `***` | Nurse | easily view the user guide | learn more about the product and how to use whenever I need to |","lastModifiedDate":"2024-03-06"},{"lineNumber":808,"author":{"gitId":"NeoHW"},"content":"| `***` | Nurse | add patient\u0027s information | add new patients and easily remember their preferences to make a personalized connection |","lastModifiedDate":"2024-03-06"},{"lineNumber":809,"author":{"gitId":"NeoHW"},"content":"| `***` | Nurse | delete patient\u0027s information | remove patients who have been discharged |","lastModifiedDate":"2024-03-06"},{"lineNumber":810,"author":{"gitId":"NeoHW"},"content":"| `***` | Nurse | list all patient\u0027s information | easily find the details of my patients |","lastModifiedDate":"2024-03-06"},{"lineNumber":811,"author":{"gitId":"SherisseTJW"},"content":"| `***` | Nurse | add event for my patients | keep track of my patients\u0027 appointments and see my overall schedule |","lastModifiedDate":"2024-03-23"},{"lineNumber":812,"author":{"gitId":"SherisseTJW"},"content":"| `***` | Nurse | delete event for my patients | delete my patients\u0027 appointments if they are canceled |","lastModifiedDate":"2024-03-23"},{"lineNumber":813,"author":{"gitId":"NeoHW"},"content":"| `***` | Nurse | add tags to my patients | group the patients into categories |","lastModifiedDate":"2024-03-06"},{"lineNumber":814,"author":{"gitId":"NeoHW"},"content":"| `***` | Nurse | find patient with a specific tag | quickly locate individuals with similar conditions, treatments, or requirements without having to scroll through the entire patient list |","lastModifiedDate":"2024-03-06"},{"lineNumber":815,"author":{"gitId":"NeoHW"},"content":"| `***` | Nurse | save all previously added patients | ensure details of the patient would not be lost |","lastModifiedDate":"2024-03-06"},{"lineNumber":816,"author":{"gitId":"NeoHW"},"content":"| `**` | Nurse | edit patient\u0027s information | have the most updated information of my patients at all times |","lastModifiedDate":"2024-03-06"},{"lineNumber":817,"author":{"gitId":"SherisseTJW"},"content":"| `**` | Nurse | edit event for my patients | edit my patients\u0027 appointments if they are changed |","lastModifiedDate":"2024-03-23"},{"lineNumber":818,"author":{"gitId":"NeoHW"},"content":"| `**` | Nurse | edit tags from my patients | edit mistyped tags |","lastModifiedDate":"2024-03-06"},{"lineNumber":819,"author":{"gitId":"NeoHW"},"content":"| `**` | Nurse | delete tags from my patients | delete the tag if it no longer applies |","lastModifiedDate":"2024-03-06"},{"lineNumber":820,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":821,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":822,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":823,"author":{"gitId":"NeoHW"},"content":"### 6.3 Use cases","lastModifiedDate":"2024-03-12"},{"lineNumber":824,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":825,"author":{"gitId":"NeoHW"},"content":"(For all use cases below, the **System** is `PatientSync` and the **Actor** is the `nurse`, unless specified otherwise)","lastModifiedDate":"2024-03-12"},{"lineNumber":826,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":827,"author":{"gitId":"guohuang88"},"content":"**Use case: Add a patient**","lastModifiedDate":"2024-03-06"},{"lineNumber":828,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":829,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":830,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":831,"author":{"gitId":"guohuang88"},"content":"1. Nurse requests to add a patient","lastModifiedDate":"2024-03-06"},{"lineNumber":832,"author":{"gitId":"guohuang88"},"content":"2. PatientSync adds the patient","lastModifiedDate":"2024-03-06"},{"lineNumber":833,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":834,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":835,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":836,"author":{"gitId":"guohuang88"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":837,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":838,"author":{"gitId":"guohuang88"},"content":"* 2a. The information key in is wrong.","lastModifiedDate":"2024-03-06"},{"lineNumber":839,"author":{"gitId":"guohuang88"},"content":" * 2a1. PatientSync shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":840,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":841,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":842,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":843,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":844,"author":{"gitId":"guohuang88"},"content":"**Use case: Delete a patient**","lastModifiedDate":"2024-03-06"},{"lineNumber":845,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":846,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":847,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":848,"author":{"gitId":"guohuang88"},"content":"1. Nurse requests to list patients","lastModifiedDate":"2024-03-06"},{"lineNumber":849,"author":{"gitId":"guohuang88"},"content":"2. PatientSync shows a list of patients","lastModifiedDate":"2024-03-06"},{"lineNumber":850,"author":{"gitId":"guohuang88"},"content":"3. Nurse requests to delete a specific patient in the list","lastModifiedDate":"2024-03-06"},{"lineNumber":851,"author":{"gitId":"guohuang88"},"content":"4. PatientSync deletes the patient","lastModifiedDate":"2024-03-06"},{"lineNumber":852,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":853,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":854,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":855,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":856,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":857,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":858,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":859,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":860,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":861,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":862,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":863,"author":{"gitId":"guohuang88"},"content":" * 3a1. PatientSync shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":864,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":865,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":866,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":867,"author":{"gitId":"guohuang88"},"content":"**Use case: List all patients**","lastModifiedDate":"2024-03-06"},{"lineNumber":868,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":869,"author":{"gitId":"guohuang88"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":870,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":871,"author":{"gitId":"guohuang88"},"content":"1. Nurse requests to list patients","lastModifiedDate":"2024-03-06"},{"lineNumber":872,"author":{"gitId":"guohuang88"},"content":"2. PatientSync shows a list of patients","lastModifiedDate":"2024-03-06"},{"lineNumber":873,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":874,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":875,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":876,"author":{"gitId":"guohuang88"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":877,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":878,"author":{"gitId":"guohuang88"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":879,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":880,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":881,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":882,"author":{"gitId":"SherisseTJW"},"content":"**Use case: Add event for a patient**","lastModifiedDate":"2024-03-23"},{"lineNumber":883,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":884,"author":{"gitId":"guohuang88"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":885,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":886,"author":{"gitId":"guohuang88"},"content":"1. Nurse requests to list patients","lastModifiedDate":"2024-03-06"},{"lineNumber":887,"author":{"gitId":"guohuang88"},"content":"2. PatientSync shows a list of patients","lastModifiedDate":"2024-03-06"},{"lineNumber":888,"author":{"gitId":"SherisseTJW"},"content":"3. Nurse requests to add an event for a specific patient in the list","lastModifiedDate":"2024-03-23"},{"lineNumber":889,"author":{"gitId":"SherisseTJW"},"content":"4. PatientSync adds an event for the patient","lastModifiedDate":"2024-03-23"},{"lineNumber":890,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":891,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":892,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":893,"author":{"gitId":"guohuang88"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":894,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":895,"author":{"gitId":"guohuang88"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":896,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":897,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":898,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":899,"author":{"gitId":"guohuang88"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":900,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":901,"author":{"gitId":"guohuang88"},"content":" * 3a1. PatientSync shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":902,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":903,"author":{"gitId":"guohuang88"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":904,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":905,"author":{"gitId":"SherisseTJW"},"content":"**Use case: Delete an event for a patient**","lastModifiedDate":"2024-03-23"},{"lineNumber":906,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":907,"author":{"gitId":"guohuang88"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":908,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":909,"author":{"gitId":"guohuang88"},"content":"1. Nurse requests to list patients","lastModifiedDate":"2024-03-06"},{"lineNumber":910,"author":{"gitId":"guohuang88"},"content":"2. PatientSync shows a list of patients","lastModifiedDate":"2024-03-06"},{"lineNumber":911,"author":{"gitId":"SherisseTJW"},"content":"3. Nurse requests to delete an event for a specific patient in the list","lastModifiedDate":"2024-03-23"},{"lineNumber":912,"author":{"gitId":"SherisseTJW"},"content":"4. PatientSync deletes an event the patient","lastModifiedDate":"2024-03-23"},{"lineNumber":913,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":914,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":915,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":916,"author":{"gitId":"guohuang88"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":917,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":918,"author":{"gitId":"guohuang88"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":919,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":920,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":921,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":922,"author":{"gitId":"guohuang88"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":923,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":924,"author":{"gitId":"guohuang88"},"content":" * 3a1. PatientSync shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":925,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":926,"author":{"gitId":"guohuang88"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":927,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":928,"author":{"gitId":"guohuang88"},"content":"**Use case: Add tag to a patient**","lastModifiedDate":"2024-03-06"},{"lineNumber":929,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":930,"author":{"gitId":"guohuang88"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":931,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":932,"author":{"gitId":"guohuang88"},"content":"1. Nurse requests to list patients","lastModifiedDate":"2024-03-06"},{"lineNumber":933,"author":{"gitId":"guohuang88"},"content":"2. PatientSync shows a list of patients","lastModifiedDate":"2024-03-06"},{"lineNumber":934,"author":{"gitId":"guohuang88"},"content":"3. Nurse requests to add a tag to a specific patient in the list","lastModifiedDate":"2024-03-06"},{"lineNumber":935,"author":{"gitId":"guohuang88"},"content":"4. PatientSync add a tag to the patient","lastModifiedDate":"2024-03-06"},{"lineNumber":936,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":937,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":938,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":939,"author":{"gitId":"guohuang88"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":940,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":941,"author":{"gitId":"guohuang88"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":942,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":943,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":944,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":945,"author":{"gitId":"guohuang88"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":946,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":947,"author":{"gitId":"guohuang88"},"content":" * 3a1. PatientSync shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":948,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":949,"author":{"gitId":"guohuang88"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":950,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":951,"author":{"gitId":"guohuang88"},"content":"**Use case: Delete tag from a patient**","lastModifiedDate":"2024-03-06"},{"lineNumber":952,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":953,"author":{"gitId":"guohuang88"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":954,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":955,"author":{"gitId":"guohuang88"},"content":"1. Nurse requests to list patients","lastModifiedDate":"2024-03-06"},{"lineNumber":956,"author":{"gitId":"guohuang88"},"content":"2. PatientSync shows a list of patients","lastModifiedDate":"2024-03-06"},{"lineNumber":957,"author":{"gitId":"guohuang88"},"content":"3. Nurse requests to delete a tag from a specific patient in the list","lastModifiedDate":"2024-03-06"},{"lineNumber":958,"author":{"gitId":"guohuang88"},"content":"4. PatientSync deletes a tag from the patient","lastModifiedDate":"2024-03-06"},{"lineNumber":959,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":960,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":961,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":962,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":963,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":964,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":965,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":966,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":967,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":968,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":969,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":970,"author":{"gitId":"guohuang88"},"content":" * 3a1. PatientSync shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":971,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":972,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":973,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":974,"author":{"gitId":"guohuang88"},"content":"**Use case: Find patients by a tag**","lastModifiedDate":"2024-03-06"},{"lineNumber":975,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":976,"author":{"gitId":"guohuang88"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":977,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":978,"author":{"gitId":"guohuang88"},"content":"1. Nurse requests to list patients","lastModifiedDate":"2024-03-06"},{"lineNumber":979,"author":{"gitId":"guohuang88"},"content":"2. PatientSync shows a list of patients","lastModifiedDate":"2024-03-06"},{"lineNumber":980,"author":{"gitId":"guohuang88"},"content":"3. Nurse requests to find patients with a specific tag in the list","lastModifiedDate":"2024-03-06"},{"lineNumber":981,"author":{"gitId":"guohuang88"},"content":"4. PatientSync finds patients with the tag","lastModifiedDate":"2024-03-06"},{"lineNumber":982,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":983,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":984,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":985,"author":{"gitId":"guohuang88"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":986,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":987,"author":{"gitId":"guohuang88"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":988,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":989,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":990,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":991,"author":{"gitId":"guohuang88"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":992,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":993,"author":{"gitId":"guohuang88"},"content":" * 3a1. PatientSync shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":994,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":995,"author":{"gitId":"guohuang88"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":996,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":997,"author":{"gitId":"NeoHW"},"content":"### 6.4 Non-Functional Requirements","lastModifiedDate":"2024-03-12"},{"lineNumber":998,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":999,"author":{"gitId":"NeoHW"},"content":"1. Compatibility: Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2024-03-12"},{"lineNumber":1000,"author":{"gitId":"NeoHW"},"content":"2. Performance: Should be able to hold up to 1000 patients without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-12"},{"lineNumber":1001,"author":{"gitId":"NeoHW"},"content":"3. Usability: 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-12"},{"lineNumber":1002,"author":{"gitId":"NeoHW"},"content":"4. Accessibility: Should operate without the need for internet access to fulfill its core purpose.","lastModifiedDate":"2024-03-12"},{"lineNumber":1003,"author":{"gitId":"NeoHW"},"content":"5. Ease of Use: Should be designed to be usable by a patient new to patient management without extensive training.","lastModifiedDate":"2024-03-12"},{"lineNumber":1004,"author":{"gitId":"NeoHW"},"content":"6. Error Handling: Should provide clear, comprehensive error messages in plain language, guiding users on how to recover from errors due to incorrect inputs.","lastModifiedDate":"2024-03-12"},{"lineNumber":1005,"author":{"gitId":"NeoHW"},"content":"7. User Documentation: Should offer comprehensive, well-organized user documentation that guides users on how to effectively use PatientSync.","lastModifiedDate":"2024-03-12"},{"lineNumber":1006,"author":{"gitId":"NeoHW"},"content":"8. Developer Documentation: Should provide detailed developer documentation for those looking to enhance, customize, or develop extensions.","lastModifiedDate":"2024-03-12"},{"lineNumber":1007,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1008,"author":{"gitId":"NeoHW"},"content":"### 6.5 Glossary","lastModifiedDate":"2024-03-12"},{"lineNumber":1009,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1010,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":1011,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":1012,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1013,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":1014,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1015,"author":{"gitId":"NeoHW"},"content":"## 7 Appendix: Instructions for manual testing","lastModifiedDate":"2024-03-12"},{"lineNumber":1016,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1017,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":1018,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1019,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":1020,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":1021,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":1022,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":1023,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1024,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":1025,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1026,"author":{"gitId":"NeoHW"},"content":"### 7.1 Launch and shutdown","lastModifiedDate":"2024-03-12"},{"lineNumber":1027,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1028,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":1029,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1030,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":1031,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1032,"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":1033,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1034,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":1035,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1036,"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":1037,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1038,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":1039,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":1040,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1041,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":1042,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1043,"author":{"gitId":"NeoHW"},"content":"### 7.2 Deleting a patient","lastModifiedDate":"2024-03-12"},{"lineNumber":1044,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1045,"author":{"gitId":"NeoHW"},"content":"1. Deleting a patient while all patients are being shown","lastModifiedDate":"2024-03-08"},{"lineNumber":1046,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1047,"author":{"gitId":"NeoHW"},"content":" 1. Prerequisites: List all patients using the `list` command. Multiple patients in the list.","lastModifiedDate":"2024-03-08"},{"lineNumber":1048,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1049,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":1050,"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":1051,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1052,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":1053,"author":{"gitId":"NeoHW"},"content":" Expected: No patient is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2024-03-08"},{"lineNumber":1054,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1055,"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":1056,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":1057,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1058,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":1059,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1060,"author":{"gitId":"NeoHW"},"content":"### 7.3 Saving data","lastModifiedDate":"2024-03-12"},{"lineNumber":1061,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1062,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":1063,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1064,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":1065,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1066,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"guohuang88":239,"SherisseTJW":73,"ZhiWei1010":67,"choowengyan":93,"NeoHW":245,"-":349}},{"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":"NeoHW"},"content":"# PatientSync User Guide","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"PatientSync is a **desktop app made for nurses to manage patient, 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, PatientSync allows you to add and view patients intimate details and also manage patient-specific tasks faster than traditional GUI apps.","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"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":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer. ","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"1. Download the latest `PatientSync.jar` from [here](https://github.com/AY2324S2-CS2103-F09-2/tp/releases).","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar PatientSync.jar`","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":"command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"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":"2024-03-22"},{"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":"ZhiWei1010"},"content":" * `add id/ 12345 n/ John Doe p/ Alex f/ Curry chicken c/ Stable, Has 2 sons visit him regularly h/ Singing karaoke t/ Diabetes` : Adds a patient named `John Doe` to the PatientSync.","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"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":"2024-03-22"},{"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":"choowengyan"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/diabetes` or as `n/John Doe`.","lastModifiedDate":"2024-03-15"},{"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":"NeoHW"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend t/family` etc.","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":"* Items with `+`​ after them can be used multiple times, but requires at least one usage.\u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" e.g. `[t/TAG]+​` can be used as `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2024-03-11"},{"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":"choowengyan"},"content":" e.g. if the command specifies `n/NAME p/PREFERRED_NAME`, `p/PREFERRED_NAME n/NAME` is also acceptable.","lastModifiedDate":"2024-03-15"},{"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":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":"### Adding a patient: `add`","lastModifiedDate":"2024-03-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":"Adds a patient to the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"choowengyan"},"content":"Format: `add id/PATIENT_HOSPITAL_ID n/NAME p/PREFERRED_NAME f/FOOD_PREFERENCE c/FAMILY_CONDITION h/HOBBY [t/TAG]…​`","lastModifiedDate":"2024-03-15"},{"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":"choowengyan"},"content":"**Tip:** ","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"choowengyan"},"content":"* A patient can have any number of tags (including 0)","lastModifiedDate":"2024-03-15"},{"lineNumber":96,"author":{"gitId":"choowengyan"},"content":"* Parameters can be in any order","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"choowengyan"},"content":"* All command keywords, that is `‘add’`, `‘id/’`, `‘n/’`, `‘p/’`, `‘f/’`, `‘c/’` and `‘h/’` are case-sensitive (to standardise keyword arguments)","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"ZhiWei1010"},"content":"* `add id/ 12345 n/ Alex Yeoh Jia Jun p/ Alex f/ Curry chicken c/ Stable, Has 2 sons visit him regularly h/ Singing karaoke t/ Diabetes`","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"ZhiWei1010"},"content":"* `add id/ 12347 n/ Mary Jane p/ Mary f/ Korean c/ Lives with only daughter, quarrels regularly with daughter h/ Watching Drama`","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":"### Listing all patients : `list`","lastModifiedDate":"2024-03-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":"Shows a list of all patients in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":"### Editing a patient : `edit`","lastModifiedDate":"2024-03-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":"Edits an existing patient in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"choowengyan"},"content":"Format: `edit INDEX [id/PATIENT_HOSPITAL_ID] [n/NAME] [p/PREFERRED_NAME] [f/FOOD_PREFERENCE] [c/FAMILY_CONDITION]","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"choowengyan"},"content":"[h/HOBBY] [t/TAG]…​`","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":"* Edits the patient at the specified `INDEX`. The index refers to the index number shown in the displayed patient list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":"* When editing tags, the existing tags of the patient will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2024-03-08"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":"* You can remove all the patient’s tags by typing `t/` without","lastModifiedDate":"2024-03-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" specifying any tags after it.","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":"choowengyan"},"content":"* `edit 1 p/Alex f/Fried rice` Edits the preferred name and food preference of the 1st patient to be `Alex` and `Fried rice` respectively.","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"choowengyan"},"content":"* `edit 2 f/Children moved away t/` Edits the family condition of the 2nd patient to be `Children moved away` and clears all existing tags.","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":"### Locating patients by name: `find`","lastModifiedDate":"2024-03-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"guohuang88"},"content":"Finds patients whose name exactly match the given keyword(s).","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"guohuang88"},"content":"Format: `find KEYWORD [MORE_KEYWORD]`","lastModifiedDate":"2024-03-22"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"guohuang88"},"content":"* The search is case-insensitive e.g. `alex` will match `Alex`","lastModifiedDate":"2024-03-22"},{"lineNumber":142,"author":{"gitId":"guohuang88"},"content":"* The order of the patient name does not matter. e.g. `Becker Alex` will match `Alex Becker`","lastModifiedDate":"2024-03-22"},{"lineNumber":143,"author":{"gitId":"guohuang88"},"content":"* Only the Patient Name is searched.","lastModifiedDate":"2024-03-22"},{"lineNumber":144,"author":{"gitId":"guohuang88"},"content":"* Only full word(s) will be matched .","lastModifiedDate":"2024-03-22"},{"lineNumber":145,"author":{"gitId":"guohuang88"},"content":"e.g. `Alex` will not match `Alexandra`, `Alex` will match `Alex Becker`","lastModifiedDate":"2024-03-22"},{"lineNumber":146,"author":{"gitId":"guohuang88"},"content":"* Patients matching at least one keyword will be returned. ","lastModifiedDate":"2024-03-22"},{"lineNumber":147,"author":{"gitId":"guohuang88"},"content":"e.g. `Alex Becker` will return `Alex Keller` and `Becker Anderson`","lastModifiedDate":"2024-03-22"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"guohuang88"},"content":"* find `Alex` returns `alex` and `Alex becker`","lastModifiedDate":"2024-03-22"},{"lineNumber":151,"author":{"gitId":"guohuang88"},"content":"* find `alex becker` returns `alex`, `Alex Becker` and `Becker Li`","lastModifiedDate":"2024-03-22"},{"lineNumber":152,"author":{"gitId":"guohuang88"},"content":" ![result for \u0027find patients whose name is alex becker\u0027](images/findPatientAlexBeckerResult.png)","lastModifiedDate":"2024-03-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"NeoHW"},"content":"### Deleting a patient : `delete`","lastModifiedDate":"2024-03-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"NeoHW"},"content":"Deletes the specified patient from the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"NeoHW"},"content":"* Deletes the patient at the specified `INDEX`.","lastModifiedDate":"2024-03-08"},{"lineNumber":163,"author":{"gitId":"NeoHW"},"content":"* The index refers to the index number shown in the displayed patient list.","lastModifiedDate":"2024-03-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"NeoHW"},"content":"* `list` followed by `delete 2` deletes the 2nd patient in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":168,"author":{"gitId":"NeoHW"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st patient in the results of the `find` command.","lastModifiedDate":"2024-03-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"NeoHW"},"content":"### Adding Tags to a Patient : `addt`","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"NeoHW"},"content":"Adds one or more tags to a patient in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"NeoHW"},"content":"Format: `addt INDEX [t/TAG]+`","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"NeoHW"},"content":"* Adds one or more tags to a patient identified by the index number used in the last patient listing.","lastModifiedDate":"2024-03-22"},{"lineNumber":179,"author":{"gitId":"NeoHW"},"content":"* At least one tag must be provided.","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"NeoHW"},"content":"* Tags can only contain alphanumeric characters or spaces.","lastModifiedDate":"2024-03-22"},{"lineNumber":181,"author":{"gitId":"NeoHW"},"content":"* Tags cannot be blank","lastModifiedDate":"2024-03-22"},{"lineNumber":182,"author":{"gitId":"NeoHW"},"content":"* Tags must be less than 50 characters long.","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"NeoHW"},"content":"* Tags are **case-insensitive**.","lastModifiedDate":"2024-03-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-18"},{"lineNumber":185,"author":{"gitId":"NeoHW"},"content":"* When adding tags, if a tag is repeated in the command, it will be added as a single tag.","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"NeoHW"},"content":" E.g. `t/friend t/friend` will be added as a single `friend` tag.","lastModifiedDate":"2024-03-12"},{"lineNumber":187,"author":{"gitId":"NeoHW"},"content":"* If the patient has an existing tag that is provided in the command, it will be logged and shown to the user.","lastModifiedDate":"2024-03-22"},{"lineNumber":188,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":189,"author":{"gitId":"NeoHW"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":190,"author":{"gitId":"NeoHW"},"content":" \u003cb\u003eNote:\u003c/b\u003e The addition of tags is cumulative. New tags will be added to the existing set of tags for the patient, preserving the previously assigned tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":191,"author":{"gitId":"NeoHW"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":192,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":195,"author":{"gitId":"NeoHW"},"content":"* `addt 1 t/critical`","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"NeoHW"},"content":"* `addt 2 t/friend t/fall risk`","lastModifiedDate":"2024-03-22"},{"lineNumber":197,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":198,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"NeoHW"},"content":"### Deleting Tags from a Patient : `deletet`","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":202,"author":{"gitId":"NeoHW"},"content":"Deletes one or more tags from a patient in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":204,"author":{"gitId":"NeoHW"},"content":"Format: `deletet INDEX [t/TAG]+`","lastModifiedDate":"2024-03-18"},{"lineNumber":205,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":206,"author":{"gitId":"NeoHW"},"content":"* Deletes one or more tags from a patient identified by the index number used in the last patient listing.","lastModifiedDate":"2024-03-18"},{"lineNumber":207,"author":{"gitId":"NeoHW"},"content":"* At least one tag must be provided.","lastModifiedDate":"2024-03-18"},{"lineNumber":208,"author":{"gitId":"NeoHW"},"content":"* Tags can only contain alphanumeric characters or spaces.","lastModifiedDate":"2024-03-22"},{"lineNumber":209,"author":{"gitId":"NeoHW"},"content":"* Tags cannot be empty or blank","lastModifiedDate":"2024-03-22"},{"lineNumber":210,"author":{"gitId":"NeoHW"},"content":"* Tags must be less than 50 characters long.","lastModifiedDate":"2024-03-23"},{"lineNumber":211,"author":{"gitId":"NeoHW"},"content":"* Tags are **case-insensitive** when matching tags","lastModifiedDate":"2024-03-22"},{"lineNumber":212,"author":{"gitId":"NeoHW"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"NeoHW"},"content":"* Tags provided should match with the existing tags of the patient.","lastModifiedDate":"2024-03-22"},{"lineNumber":214,"author":{"gitId":"NeoHW"},"content":"* When deleting tags, if tags are repeated in the command, it will be treated as a single tag to delete. E.g. `t/friend t/friend` will be considered as a single `friend` tag for deletion.","lastModifiedDate":"2024-03-22"},{"lineNumber":215,"author":{"gitId":"NeoHW"},"content":"* If the patient does not have a tag provided in the command, it will be logged and shown to the user.","lastModifiedDate":"2024-03-22"},{"lineNumber":216,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"NeoHW"},"content":"Examples:","lastModifiedDate":"2024-03-18"},{"lineNumber":218,"author":{"gitId":"NeoHW"},"content":"* `deletet 1 t/critical`","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"NeoHW"},"content":"* `deletet 2 t/friend t/fall risk`","lastModifiedDate":"2024-03-22"},{"lineNumber":220,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-14"},{"lineNumber":222,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":223,"author":{"gitId":"guohuang88"},"content":"### Adding an Event to a Patient : `adde`","lastModifiedDate":"2024-03-18"},{"lineNumber":224,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":225,"author":{"gitId":"guohuang88"},"content":"Adds an Event to a patient in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":226,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":227,"author":{"gitId":"SherisseTJW"},"content":"Format: `adde INDEX [n/NAME_OF_EVENT_ON_THAT_DATE] [d/DATE_OR_DATETIME_OF_EVENT_ON_THAT_DATE]`","lastModifiedDate":"2024-03-13"},{"lineNumber":228,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":229,"author":{"gitId":"guohuang88"},"content":"* Adds an Event with a Name, as well as the Date and optionally, the Time Period for which the Event is happening on that date to a patient identified by the index number used in the last patient listing.","lastModifiedDate":"2024-03-18"},{"lineNumber":230,"author":{"gitId":"SherisseTJW"},"content":"* The format of the Date must be: DD-MM-YYYY","lastModifiedDate":"2024-03-13"},{"lineNumber":231,"author":{"gitId":"SherisseTJW"},"content":"* If there is a Time Period, the format of the DateTime must be: DD-MM-YYYY, HH:mm - HH:mm","lastModifiedDate":"2024-03-13"},{"lineNumber":232,"author":{"gitId":"SherisseTJW"},"content":"* The index **must be a positive integer** 1, 2, 3, ...","lastModifiedDate":"2024-03-13"},{"lineNumber":233,"author":{"gitId":"SherisseTJW"},"content":"* Neither the Name or the Date / DateTime can be empty","lastModifiedDate":"2024-03-13"},{"lineNumber":234,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":235,"author":{"gitId":"SherisseTJW"},"content":"Examples:","lastModifiedDate":"2024-03-13"},{"lineNumber":236,"author":{"gitId":"SherisseTJW"},"content":"* `adde 1 n/Birthday d/20-01-2022`","lastModifiedDate":"2024-03-13"},{"lineNumber":237,"author":{"gitId":"SherisseTJW"},"content":"* `adde 2 n/Family Visit d/30-09-2024, 12:00 - 15:00`","lastModifiedDate":"2024-03-13"},{"lineNumber":238,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":239,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":240,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":241,"author":{"gitId":"guohuang88"},"content":"### Deleting an Event from a Patient : `deletee`","lastModifiedDate":"2024-03-18"},{"lineNumber":242,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":243,"author":{"gitId":"guohuang88"},"content":"Deletes an Event from a patient in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":244,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":245,"author":{"gitId":"ZhiWei1010"},"content":"Format `deletee PATIENT_INDEX [e/EVENT_INDEX]`","lastModifiedDate":"2024-03-15"},{"lineNumber":246,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":247,"author":{"gitId":"guohuang88"},"content":"* Deletes an Event from a specified Patient using `PATIENT_INDEX` and `EVENT_INDEX`.","lastModifiedDate":"2024-03-18"},{"lineNumber":248,"author":{"gitId":"ZhiWei1010"},"content":"* `PATIENT_INDEX` is the index of the patient shown in the UI after using `list` or `find` command.","lastModifiedDate":"2024-03-15"},{"lineNumber":249,"author":{"gitId":"ZhiWei1010"},"content":"* `EVENT_INDEX` is the index of the event that is saved under a Patient\u0027s data.","lastModifiedDate":"2024-03-15"},{"lineNumber":250,"author":{"gitId":"ZhiWei1010"},"content":"* Both `PATIENT_INDEX` and `EVENT_INDEX` **must be a positive integer** 1, 2, 3, ...","lastModifiedDate":"2024-03-15"},{"lineNumber":251,"author":{"gitId":"ZhiWei1010"},"content":"* Both `PATIENT_INDEX` and `EVENT_INDEX` **must be of a valid index** (i.e. within the range of total number of","lastModifiedDate":"2024-03-15"},{"lineNumber":252,"author":{"gitId":"ZhiWei1010"},"content":"Patients/Events)","lastModifiedDate":"2024-03-15"},{"lineNumber":253,"author":{"gitId":"ZhiWei1010"},"content":"* Both `PATIENT_INDEX` and `EVENT_INDEX` are compulsory fields (Neither can be **EMPTY**)","lastModifiedDate":"2024-03-15"},{"lineNumber":254,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":255,"author":{"gitId":"ZhiWei1010"},"content":"Examples:","lastModifiedDate":"2024-03-15"},{"lineNumber":256,"author":{"gitId":"ZhiWei1010"},"content":"* `deletee 1 e/1`","lastModifiedDate":"2024-03-15"},{"lineNumber":257,"author":{"gitId":"ZhiWei1010"},"content":"* `deletee 3 e/4`","lastModifiedDate":"2024-03-15"},{"lineNumber":258,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":259,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":260,"author":{"gitId":"guohuang88"},"content":"### Editing an Event for a Patient: `edite`","lastModifiedDate":"2024-03-18"},{"lineNumber":261,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":262,"author":{"gitId":"guohuang88"},"content":"Edits an Event for a Patient in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":263,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":264,"author":{"gitId":"guohuang88"},"content":"Format `edite PATIENT_INDEX [e/EVENT_INDEX] [n/NAME_OF_EVENT_ON_THAT_DATE] [d/DATE_OR_DATETIME_OF_EVENT_ON_THAT_DATE]`","lastModifiedDate":"2024-03-16"},{"lineNumber":265,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":266,"author":{"gitId":"guohuang88"},"content":"* Edits an Event for a Patient using `PATIENT_INDEX`, `EVENT_INDEX`, `NAME_OF_EVENT_ON_THAT_DATE` and","lastModifiedDate":"2024-03-18"},{"lineNumber":267,"author":{"gitId":"guohuang88"},"content":" `DATE_OR_DATETIME_OF_EVENT_ON_THAT_DATE`.","lastModifiedDate":"2024-03-16"},{"lineNumber":268,"author":{"gitId":"guohuang88"},"content":"* `PATIENT_INDEX`, `EVENT_INDEX`, `NAME_OF_EVENT_ON_THAT_DATE` and `DATE_OR_DATETIME_OF_EVENT_ON_THAT_DATE` ","lastModifiedDate":"2024-03-16"},{"lineNumber":269,"author":{"gitId":"guohuang88"},"content":" are compulsory parameters. ","lastModifiedDate":"2024-03-16"},{"lineNumber":270,"author":{"gitId":"guohuang88"},"content":"* Note that, it is okay to exclude `TIME` for `DATE_OR_DATETIME_OF_EVENT_ON_THAT_DATE`","lastModifiedDate":"2024-03-16"},{"lineNumber":271,"author":{"gitId":"guohuang88"},"content":"* The format of `DATE_OF_EVENT_ON_THAT_DATE` must be: DD-MM-YYYY.","lastModifiedDate":"2024-03-16"},{"lineNumber":272,"author":{"gitId":"guohuang88"},"content":"* The format of `DATETIME_OF_EVENT_ON_THAT_DATE` must be: DD-MM-YYYY, HH:mm - HH:mm.","lastModifiedDate":"2024-03-16"},{"lineNumber":273,"author":{"gitId":"guohuang88"},"content":"* Both `PATIENT_INDEX` and `EVENT_INDEX` **must be a positive integer** 1, 2, 3, ...","lastModifiedDate":"2024-03-16"},{"lineNumber":274,"author":{"gitId":"guohuang88"},"content":"* Both `PATIENT_INDEX` and `EVENT_INDEX` **must be of a valid index** (i.e. within the range of total number of","lastModifiedDate":"2024-03-16"},{"lineNumber":275,"author":{"gitId":"guohuang88"},"content":" Patients/Events).","lastModifiedDate":"2024-03-16"},{"lineNumber":276,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":277,"author":{"gitId":"guohuang88"},"content":"Examples:","lastModifiedDate":"2024-03-16"},{"lineNumber":278,"author":{"gitId":"guohuang88"},"content":"* `edite 1 e/1 n/Papa Birthday d/20-01-2023`","lastModifiedDate":"2024-03-16"},{"lineNumber":279,"author":{"gitId":"guohuang88"},"content":"* `edite 2 e/1 n/Mama Birthday d/21-02-2024`","lastModifiedDate":"2024-03-16"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":281,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":288,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":289,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":296,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":297,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"ZhiWei1010"},"content":"PatientSync 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-21"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":305,"author":{"gitId":"ZhiWei1010"},"content":"PatientSync data are saved automatically as a JSON file `[JAR file location]/data/patientsync.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-21"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":307,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":309,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":310,"author":{"gitId":"ZhiWei1010"},"content":"If your changes to the data file makes its format invalid, PatientSync 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":311,"author":{"gitId":"ZhiWei1010"},"content":"Furthermore, certain edits can cause PatientSync 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-21"},{"lineNumber":312,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":314,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":316,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"ZhiWei1010"},"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 PatientSync home folder.","lastModifiedDate":"2024-03-21"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":323,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":325,"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":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":333,"author":{"gitId":"ZhiWei1010"},"content":"**Add** | `add id/PATIENT_HOSPITAL_ID n/NAME p/PREFERRED_NAME f/FOOD_PREFERENCE c/FAMILY_CONDITION h/HOBBY [t/TAG]…​` \u003cbr\u003e e.g. `add id/ 12345 n/ Alex Yeoh Jia Jun p/ Alex f/ Curry chicken c/ Stable, Has 2 sons visit him regularly h/ Singing karaoke t/ Diabetes`","lastModifiedDate":"2024-03-21"},{"lineNumber":334,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"NeoHW"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g. `delete 3`","lastModifiedDate":"2024-03-14"},{"lineNumber":336,"author":{"gitId":"choowengyan"},"content":"**Edit** | `edit INDEX [id/PATIENT_HOSPITAL_ID] [n/NAME] [p/PREFERRED_NAME] [f/FOOD_PREFERENCE] [c/FAMILY_CONDITION] [h/HOBBY] [t/TAG]…​`\u003cbr\u003e e.g.`edit 2 p/James t/HighCholesterol`","lastModifiedDate":"2024-03-17"},{"lineNumber":337,"author":{"gitId":"NeoHW"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g. `find James Jake`","lastModifiedDate":"2024-03-14"},{"lineNumber":338,"author":{"gitId":"NeoHW"},"content":"**Add Tags** | `addt INDEX [t/TAG]+`\u003cbr\u003e e.g. `addt 1 t/critical`","lastModifiedDate":"2024-03-18"},{"lineNumber":339,"author":{"gitId":"NeoHW"},"content":"**Delete Tags** | `deletet INDEX [t/TAG]+`\u003cbr\u003e e.g. `deletet 1 t/critical`","lastModifiedDate":"2024-03-18"},{"lineNumber":340,"author":{"gitId":"guohuang88"},"content":"**AddEvent** | `adde INDEX [n/NAME_OF_EVENT_ON_THAT_DATE] [d/DATE_OR_DATETIME_OF_EVENT_ON_THAT_DATE]` \u003cbr\u003e e.g. `adde 1 n/Birthday d/20-01-2022`","lastModifiedDate":"2024-03-18"},{"lineNumber":341,"author":{"gitId":"guohuang88"},"content":"**DeleteEvent** | `deletee PATIENT_INDEX [e/EVENT_INDEX]` \u003cbr\u003e e.g. `deletee 1 e/1`","lastModifiedDate":"2024-03-18"},{"lineNumber":342,"author":{"gitId":"guohuang88"},"content":"**EditEvent** | `edite PATIENT_INDEX [e/EVENT_INDEX] [n/NAME_OF_EVENT_ON_THAT_DATE] [d/DATE_OR_DATETIME_OF_EVENT_ON_THAT_DATE]` \u003cbr\u003e e.g. `edite 1 e/1 n/Papa Birthday d/20-01-2023`","lastModifiedDate":"2024-03-18"},{"lineNumber":343,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"guohuang88":41,"SherisseTJW":13,"ZhiWei1010":25,"choowengyan":14,"NeoHW":94,"-":157}},{"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\"\u003ePatientSync\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":"NeoHW"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2324S2-CS2103-F09-2/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":{"NeoHW":1,"-":66}},{"path":"docs/_site/stylesheets/main.css","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"mark {","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":" background-color: #ff0;","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":" border-radius: 5px;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":" padding-top: 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" padding-bottom: 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":".indented {","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" padding-left: 20px;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":".theme-card img {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" width: 100%;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"/* Scrollbar */","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":".slim-scroll::-webkit-scrollbar {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" width: 5px;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":".slim-scroll::-webkit-scrollbar-thumb {","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" background: #808080;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" border-radius: 20px;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":".slim-scroll::-webkit-scrollbar-track {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" background: transparent;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" border-radius: 20px;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":".slim-scroll-blue::-webkit-scrollbar {","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" width: 5px;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":".slim-scroll-blue::-webkit-scrollbar-thumb {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" background: #00b0ef;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" border-radius: 20px;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":".slim-scroll-blue::-webkit-scrollbar-track {","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" background: transparent;","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" border-radius: 20px;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":"/* Layout containers */","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":"#flex-body {","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" display: flex;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" flex: 1;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" align-items: start;","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":"#content-wrapper {","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" flex: 1;","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" margin: 0 auto;","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" min-width: 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" max-width: 1000px;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" overflow-x: auto;","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" padding: 0.8rem 20px 0 20px;","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" transition: 0.4s;","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" -webkit-transition: 0.4s;","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":"#site-nav,","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":"#page-nav {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" display: flex;","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" flex-direction: column;","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" position: sticky;","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" top: var(--sticky-header-height);","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" flex: 0 0 auto;","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" max-width: 300px;","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" max-height: calc(100vh - var(--sticky-header-height));","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" width: 300px;","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":"#site-nav {","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" border-right: 1px solid lightgrey;","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" padding-bottom: 20px;","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" z-index: 999;","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":".site-nav-top {","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" margin: 0.8rem 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" padding: 0 12px 12px 12px;","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":".nav-component {","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" overflow-y: auto;","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":"#page-nav {","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" border-left: 1px solid lightgrey;","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":"@media screen and (max-width: 1299.98px) {","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" #page-nav {","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" display: none;","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":"/* Bootstrap medium(md) responsive breakpoint */","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":"@media screen and (max-width: 991.98px) {","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" #site-nav {","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" display: none;","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":"/* Bootstrap small(sm) responsive breakpoint */","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":"@media (max-width: 767.98px) {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" .indented {","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"NeoHW"},"content":" padding-left: 10px;","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":" #content-wrapper {","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" padding: 0 10px;","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":"/* Bootstrap extra small(xs) responsive breakpoint */","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":"@media screen and (max-width: 575.98px) {","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":" #site-nav {","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"NeoHW"},"content":" display: none;","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":"/* Hide site navigation when printing */","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":"@media print {","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"NeoHW"},"content":" #site-nav {","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"NeoHW"},"content":" display: none;","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" #page-nav {","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":" display: none;","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"NeoHW"},"content":" /* Reduce font size when printing */","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":" h1 {","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" font-size: 1.2rem !important;","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":" h2 {","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":" font-size: 1.0rem !important;","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":" h3 {","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"NeoHW"},"content":" font-size: 0.9rem !important;","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":" h4 {","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":" font-size: 0.8rem !important;","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"NeoHW"},"content":" h5 {","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"NeoHW"},"content":" font-size: 0.7rem !important;","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"NeoHW"},"content":" body {","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":" font-size: 0.65rem !important;","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"NeoHW"},"content":" .btn {","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"NeoHW"},"content":" font-size: 0.65rem !important;","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"NeoHW"},"content":" img {","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"NeoHW"},"content":" zoom: 0.8; /* might not work on some browsers */","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"NeoHW"},"content":"h2,","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"NeoHW"},"content":"h3,","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"NeoHW"},"content":"h4,","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"NeoHW"},"content":"h5,","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"NeoHW"},"content":"h6 {","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"NeoHW"},"content":" color: #e46c0a;","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"NeoHW":170}},{"path":"docs/diagrams/AddEventSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SherisseTJW"},"content":"@startuml","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SherisseTJW"},"content":"!include style.puml","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SherisseTJW"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"participant \":AddEventCommandParser\" as AddEventCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"participant \"a:AddEventCommand\" as AddEventCommand LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":"end box","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":"end box","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":"[-\u003e LogicManager : execute(adde 1 n/Birthday d/20-01-2022)","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":"activate LogicManager","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SherisseTJW"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(adde 1 n/Birthday d/20-01-2022)","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SherisseTJW"},"content":"create AddEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":"AddressBookParser -\u003e AddEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SherisseTJW"},"content":"activate AddEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":"AddEventCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":"deactivate AddEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":"AddressBookParser -\u003e AddEventCommandParser : parse(adde 1 n/Birthday d/20-01-2022)","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":"activate AddEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":"Create AddEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":"AddEventCommandParser -\u003e AddEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":"activate AddEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":"AddEventCommand --\u003e AddEventCommandParser : a","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":"deactivate AddEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":"AddEventCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":"deactivate AddEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.\u0027","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":"AddEventCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":"destroy AddEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":"LogicManager -\u003e AddEventCommand : execute()","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":"activate AddEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SherisseTJW"},"content":"AddEventCommand -\u003e Model : setPatient(args)","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SherisseTJW"},"content":"activate Model","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SherisseTJW"},"content":"Model --\u003e AddEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SherisseTJW"},"content":"deactivate Model","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SherisseTJW"},"content":"create CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SherisseTJW"},"content":"AddEventCommand -\u003e CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SherisseTJW"},"content":"activate CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SherisseTJW"},"content":"CommandResult --\u003e AddEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"SherisseTJW"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"SherisseTJW"},"content":"AddEventCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SherisseTJW"},"content":"deactivate AddEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"SherisseTJW"},"content":"AddEventCommand -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"SherisseTJW"},"content":"destroy AddEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SherisseTJW"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SherisseTJW"},"content":"@enduml","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SherisseTJW":74}},{"path":"docs/diagrams/AddSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"choowengyan"},"content":"@startuml","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"choowengyan"},"content":"!include style.puml","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"choowengyan"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"participant \":AddCommandParser\" as AddCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"participant \"a:AddCommand\" as AddCommand LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":"[-\u003e LogicManager : execute(add id/ 12347 n/ Mary Jane p/ Mary f/ Korean c/ Lives with only daughter h/ Watch Drama)","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":"activate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(add id/ 12347 n/ Mary Jane p/ Mary f/ Korean c/ Lives with only daughter h/ Watch Drama)","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":"create AddCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":"AddressBookParser -\u003e AddCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":"AddCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":"AddressBookParser -\u003e AddCommandParser : parse(add id/ 12347 n/ Mary Jane p/ Mary f/ Korean c/ Lives with only daughter h/ Watch Drama)","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":"Create AddCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":"AddCommandParser -\u003e AddCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":"activate AddCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":"AddCommand --\u003e AddCommandParser : a","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":"AddCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.\u0027","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":"AddCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":"destroy AddCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":"LogicManager -\u003e AddCommand : execute()","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":"activate AddCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":"AddCommand -\u003e Model : setPatient(args)","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":"Model --\u003e AddCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":"create CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":"AddCommand -\u003e CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":"activate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":"CommandResult --\u003e AddCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":"AddCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":"AddCommand -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":"destroy AddCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"choowengyan"},"content":"@enduml","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"choowengyan":74}},{"path":"docs/diagrams/AddTagsActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"start","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":":User wants to add tags to a patient;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":":User runs the \"addt\" command with index and tags;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"if () then ([else])","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":" :PatientSync throws an error;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"else ([Valid command format])","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":" :PatientSync checks if the index is valid;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" if () then ([else])","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" :PatientSync throws an error;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" else ([Valid index])","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" :PatientSync generates the set of tags to be added;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" :PatientSync retrieves the patient with the specified index;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" :PatientSync retrieves the patient\u0027s current tags;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" while () is ([More tags to be processed])","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" if () then ([Tag already exists in patient\u0027s tag set])","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" :Add message to output: Tag already exists for the patient;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" else ([else])","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" :Add the tag to the patient\u0027s tag set;","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" :Add message to output: Tag added successfully for the patient;","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" endif","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" endwhile([else])","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" :PatientSync updates the patient\u0027s details;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" :PatientSync updates the displayed patient list;","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" :PatientSync displays output message;","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" endif","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"endif","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"stop","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"NeoHW":29}},{"path":"docs/diagrams/AddTagsSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"@startuml","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"!include style.puml","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"participant \":AddTagsCommandParser\" as AddTagsCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"participant \"a:AddTagsCommand\" as AddTagsCommand LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"end box","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"end box","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"[-\u003e LogicManager : execute(addt 1 t/christian ...)","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"activate LogicManager","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(addt 1 t/christian ...)","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"create AddTagsCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"AddressBookParser -\u003e AddTagsCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"activate AddTagsCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"AddTagsCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"deactivate AddTagsCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"AddressBookParser -\u003e AddTagsCommandParser : parse(addt 1 t/christian ...)","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"activate AddTagsCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":"Create AddTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"AddTagsCommandParser -\u003e AddTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"activate AddTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":"AddTagsCommand --\u003e AddTagsCommandParser : a","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"deactivate AddTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":"AddTagsCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":"deactivate AddTagsCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.\u0027","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":"AddTagsCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":"destroy AddTagsCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":"LogicManager -\u003e AddTagsCommand : execute()","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":"activate AddTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":"AddTagsCommand -\u003e Model : setPatient(args)","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":"activate Model","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":"Model --\u003e AddTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":"deactivate Model","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"AddTagsCommand -\u003e Model : updateFilteredPatientList(predicate)","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":"Model -\u003e AddTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":"create CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":"AddTagsCommand -\u003e CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":"activate CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":"CommandResult --\u003e AddTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":"AddTagsCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":"deactivate AddTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":"AddTagsCommand -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":"destroy AddTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":"@enduml","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"NeoHW":80}},{"path":"docs/diagrams/DeleteEventSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"@startuml","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"!include style.puml","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"participant \":DeleteEventCommandParser\" as DeleteEventCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":"participant \"a:DeleteEventCommand\" as DeleteEventCommand LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":"[-\u003e LogicManager : execute(\"delete 1 e/ 1\")","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":"activate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete 1 e/ 1\")","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":"create DeleteEventCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":"AddressBookParser -\u003e DeleteEventCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":"activate DeleteEventCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":"deactivate DeleteEventCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":"AddressBookParser -\u003e DeleteEventCommandParser : parse(\"delete 1 e/ 1\")","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":"activate DeleteEventCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":"Create DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommandParser -\u003e DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":"activate DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommand --\u003e DeleteEventCommandParser : a","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":"deactivate DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":"deactivate DeleteEventCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.\u0027","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":"destroy DeleteEventCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":"LogicManager -\u003e DeleteEventCommand : execute()","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":"activate DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommand -\u003e Model : setPatient(args)","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"ZhiWei1010"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"ZhiWei1010"},"content":"Model --\u003e DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"ZhiWei1010"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommand -\u003e Model : updateFilteredPatientList(p)","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"ZhiWei1010"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"ZhiWei1010"},"content":"Model -\u003e DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"ZhiWei1010"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"ZhiWei1010"},"content":"create CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommand -\u003e CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"ZhiWei1010"},"content":"activate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"ZhiWei1010"},"content":"CommandResult --\u003e DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"ZhiWei1010"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"ZhiWei1010"},"content":"deactivate DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommand -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"ZhiWei1010"},"content":"destroy DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"ZhiWei1010"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"ZhiWei1010"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"ZhiWei1010"},"content":"@enduml","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"ZhiWei1010":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":"-"},"content":"[-\u003e LogicManager : execute(\"delete 1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete 1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"DeleteCommandParser -\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser :","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":"guohuang88"},"content":"DeleteCommand -\u003e Model : deletePatient(1)","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":{"guohuang88":1,"-":69}},{"path":"docs/diagrams/DeleteTagsActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"start","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":":User wants to delete tags from a patient;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":":User runs the \"deletet\" command with index and tags;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"if () then ([else])","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":" :PatientSync throws an error;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"else ([Valid command format])","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":" :PatientSync checks if the index is valid;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" if () then ([else])","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" :PatientSync throws an error;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" else ([Valid index])","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" :PatientSync generates the set of tags to be deleted;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" :PatientSync retrieves the patient with the specified index;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" :PatientSync retrieves the patient\u0027s current tags;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" while () is ([More tags to be processed])","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" if () then ([Tag exists in patient\u0027s tag set])","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" :Remove the tag from the patient\u0027s tag set;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" :add message to output: Tag deleted successfully for the patient;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" else ([else])","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" :add message to output: The tag does not exist for the patient;","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" endif","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" endwhile ([else])","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" :PatientSync updates the patient\u0027s details;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" :PatientSync updates the displayed patient list;","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" :PatientSync displays output message;","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" endif","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"endif","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"stop","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"NeoHW":29}},{"path":"docs/diagrams/DeleteTagsSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"@startuml","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"!include style.puml","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"participant \":DeleteTagsCommandParser\" as DeleteTagsCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"participant \"a:DeleteTagsCommand\" as DeleteTagsCommand LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"[-\u003e LogicManager : execute(deletet 1 t/christian ...)","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"activate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(deletet 1 t/christian ...)","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"create DeleteTagsCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"AddressBookParser -\u003e DeleteTagsCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"activate DeleteTagsCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"deactivate DeleteTagsCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"AddressBookParser -\u003e DeleteTagsCommandParser : parse(deletet 1 t/christian ...)","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"activate DeleteTagsCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":"Create DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommandParser -\u003e DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"activate DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommand --\u003e DeleteTagsCommandParser : a","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"deactivate DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":"deactivate DeleteTagsCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.\u0027","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":"destroy DeleteTagsCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":"LogicManager -\u003e DeleteTagsCommand : execute()","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":"activate DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommand -\u003e Model : setPatient(args)","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":"Model --\u003e DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommand -\u003e Model : updateFilteredPatientList(predicate)","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":"Model -\u003e DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":"create CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommand -\u003e CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":"activate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":"CommandResult --\u003e DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":"deactivate DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommand -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":"destroy DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":"@enduml","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"NeoHW":80}},{"path":"docs/diagrams/EditEventSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"@startuml","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"!include style.puml","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"participant \":EditEventCommandParser\" as EditEventCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"participant \"e:EditEventCommand\" as EditEventCommand LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"guohuang88"},"content":"end box","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":"end box","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":"[-\u003e LogicManager : execute(\"edite 1 e/1 n/event d/20-12-2000\")","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":"activate LogicManager","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"edite 1 e/1 n/event d/20-12-2000\")","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":"create EditEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":"AddressBookParser -\u003e EditEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":"activate EditEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":"EditEventCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":"deactivate EditEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":"AddressBookParser -\u003e EditEventCommandParser : parse(\"1 e/1 n/event d/20-12-2000\")","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":"activate EditEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":"Create EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":"EditEventCommandParser -\u003e EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":"activate EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":"EditEventCommand --\u003e EditEventCommandParser : e","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":"deactivate EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":"EditEventCommandParser --\u003e AddressBookParser : e","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":"deactivate EditEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.\u0027","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":"EditEventCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":"destroy EditEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"guohuang88"},"content":"AddressBookParser --\u003e LogicManager : e","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"guohuang88"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"guohuang88"},"content":"LogicManager -\u003e EditEventCommand : execute(m)","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"guohuang88"},"content":"activate EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"guohuang88"},"content":"EditEventCommand -\u003e Model : setPatient(args)","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"guohuang88"},"content":"activate Model","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"guohuang88"},"content":"Model --\u003e EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":"deactivate Model","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"guohuang88"},"content":"EditEventCommand -\u003e Model : updateFilteredPatientList(args)","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"guohuang88"},"content":"activate Model","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"guohuang88"},"content":"Model --\u003e EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"guohuang88"},"content":"deactivate Model","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"guohuang88"},"content":"create CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"guohuang88"},"content":"EditEventCommand -\u003e CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"guohuang88"},"content":"activate CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"guohuang88"},"content":"CommandResult --\u003e EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"guohuang88"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"guohuang88"},"content":"EditEventCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"guohuang88"},"content":"deactivate EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"guohuang88"},"content":"EditEventCommand -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"guohuang88"},"content":"destroy EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"guohuang88"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"guohuang88"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"guohuang88"},"content":"@enduml","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"guohuang88":80}},{"path":"docs/diagrams/EditSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"choowengyan"},"content":"@startuml","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"choowengyan"},"content":"!include style.puml","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"choowengyan"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"participant \":EditCommandParser\" as EditCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"participant \"e:EditCommand\" as EditCommand LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":"[-\u003e LogicManager : execute(\"edit 2 f/Aglio-olio t/depression\")","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":"activate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"edit 2 f/Aglio-olio t/depression\")","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":"create EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":"AddressBookParser -\u003e EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":"EditCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":"AddressBookParser -\u003e EditCommandParser : parse(\"edit 2 f/Aglio-olio t/depression\")","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":"Create EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":"EditCommandParser -\u003e EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":"activate EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":"EditCommand --\u003e EditCommandParser : e","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":"EditCommandParser --\u003e AddressBookParser : e","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.\u0027","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":"EditCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":"destroy EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":"AddressBookParser --\u003e LogicManager : e","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":"LogicManager -\u003e EditCommand : execute(m)","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":"activate EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":"EditCommand -\u003e Model : setPatient(args)","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":"EditCommand -\u003e Model : updateFilteredPatientList(args)","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"choowengyan"},"content":"create CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":"EditCommand -\u003e CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":"activate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":"CommandResult --\u003e EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":"EditCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"choowengyan"},"content":"EditCommand -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"choowengyan"},"content":"destroy EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"choowengyan"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"choowengyan"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"choowengyan"},"content":"@enduml","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"choowengyan":80}},{"path":"docs/diagrams/FindSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"!include style.puml","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"participant \":FindCommandParser\" as FindCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"participant \"f:FindCommand\" as FindCommand LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"guohuang88"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":"[-\u003e LogicManager : execute(\"find Alex\")","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":"activate LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"find Alex\")","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":"create FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":"AddressBookParser -\u003e FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":"FindCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":"AddressBookParser -\u003e FindCommandParser : parse(\"Alex\")","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":"create FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":"FindCommandParser -\u003e FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":"activate FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":"FindCommand --\u003e FindCommandParser :","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":"FindCommandParser --\u003e AddressBookParser : f","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":"FindCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":"destroy FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"guohuang88"},"content":"AddressBookParser --\u003e LogicManager : f","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"guohuang88"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"guohuang88"},"content":"LogicManager -\u003e FindCommand : execute(m)","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"guohuang88"},"content":"activate FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"guohuang88"},"content":"FindCommand -\u003e Model : updateFilteredPatientList(args)","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"guohuang88"},"content":"activate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"guohuang88"},"content":"Model --\u003e FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":"deactivate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"guohuang88"},"content":"create CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"guohuang88"},"content":"FindCommand -\u003e CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"guohuang88"},"content":"activate CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"guohuang88"},"content":"CommandResult --\u003e FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"guohuang88"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"guohuang88"},"content":"FindCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"guohuang88"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"guohuang88"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"guohuang88"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"guohuang88"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"guohuang88":70}},{"path":"docs/diagrams/ListSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"@startuml","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"!include style.puml","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"participant \":ListCommand\" as ListCommand LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":"[-\u003e LogicManager : execute( \"list\" )","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":"activate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"list\")","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":"Create ListCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":"AddressBookParser -\u003e ListCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":"activate ListCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":"ListCommand --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":"deactivate ListCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":"LogicManager -\u003e ListCommand : execute()","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":"activate ListCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":"ListCommand -\u003e Model : updateFilteredPatientList(p)","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":"Model --\u003e ListCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":"create CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":"ListCommand -\u003e CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":"activate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":"CommandResult --\u003e ListCommand :","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":"ListCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":"deactivate ListCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":"ListCommand -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":"destroy ListCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"ZhiWei1010"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"ZhiWei1010"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"ZhiWei1010"},"content":"@enduml","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"ZhiWei1010":57}},{"path":"docs/diagrams/tracing/LogicSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-06-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include ../style.puml","lastModifiedDate":"2019-06-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"Participant \":LogicManager\" as logic LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":AddressBookParser\" as abp LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":EditCommandParser\" as ecp LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \"command:EditCommand\" as ec LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"[-\u003e logic : execute","lastModifiedDate":"2019-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate logic","lastModifiedDate":"2019-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"logic -\u003e abp ++: parseCommand(commandText)","lastModifiedDate":"2019-06-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"create ecp","lastModifiedDate":"2019-06-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"abp -\u003e ecp","lastModifiedDate":"2019-06-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"abp -\u003e ecp ++: parse(arguments)","lastModifiedDate":"2019-06-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"create ec","lastModifiedDate":"2019-06-17"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"ecp -\u003e ec ++: index, editPatientDescriptor","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"ec --\u003e ecp --","lastModifiedDate":"2019-06-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"ecp --\u003e abp --: command","lastModifiedDate":"2019-06-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"abp --\u003e logic --: command","lastModifiedDate":"2019-06-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-06-17"}],"authorContributionMap":{"NeoHW":1,"-":21}},{"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":"NeoHW"},"content":"# PatientSync","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"[![Java CI](https://github.com/AY2324S2-CS2103-F09-2/tp/actions/workflows/gradle.yml/badge.svg?branch\u003dmaster)](https://github.com/AY2324S2-CS2103-F09-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103-F09-2/tp/graph/badge.svg?token\u003dAX3SGG0FMX)](https://codecov.io/gh/AY2324S2-CS2103-F09-2/tp)","lastModifiedDate":"2024-03-14"},{"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":"NeoHW"},"content":"**PatientSync is a desktop application meticulously crafted for nurses who prioritize the well-being of their patients above all else.**\\","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"It allows you to input intimate details about your patients, such as food preferences and family conditions. While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"| Project Links | Description |","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"|-------------------------|------------------------------------------------------------------|","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"| [Project Website](https://ay2324s2-cs2103-f09-2.github.io/tp/) | Official website for the PatientSync desktop application. |","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"| [User Guide](UserGuide.html#quick-start) | Quick Start guide for users interested in using PatientSync. |","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"| [Developer Guide](DeveloperGuide.html) | Comprehensive guide for developers interested in contributing to PatientSync. |","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"| [About Us](AboutUs.html) | Learn more about the team behind the PatientSync project. |","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"**Acknowledgements**\\","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"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":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"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":{"NeoHW":13,"-":15}},{"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":"NeoHW"},"content":" * Changes the remark of an existing patient in the address book.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" + \": Edits the remark of the patient identified \"","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" + \"by the index number used in the last patient listing. \"","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * @param index of the patient in the filtered patient list to edit the remark","lastModifiedDate":"2024-03-08"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" * @param remark of the patient to be updated to","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"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 patient 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 patient’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 patient.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":"Create a new `Remark` in `seedu.address.model.patient`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"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 patient.","lastModifiedDate":"2024-03-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"NeoHW"},"content":"Simply add the following to [`seedu.address.ui.PatientCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-09"},{"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":"-"},"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 address book!","lastModifiedDate":"2023-09-12"},{"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":"NeoHW"},"content":"public PersonCard(Person patient, int displayedIndex) {","lastModifiedDate":"2024-03-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"NeoHW"},"content":" remark.setText(patient.getRemark().value);","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" Person patientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-08"},{"lineNumber":348,"author":{"gitId":"NeoHW"},"content":" Person editedPatient \u003d new Person(","lastModifiedDate":"2024-03-08"},{"lineNumber":349,"author":{"gitId":"NeoHW"},"content":" patientToEdit.getName(), patientToEdit.getPhone(), patientToEdit.getEmail(),","lastModifiedDate":"2024-03-08"},{"lineNumber":350,"author":{"gitId":"NeoHW"},"content":" patientToEdit.getAddress(), remark, patientToEdit.getTags());","lastModifiedDate":"2024-03-08"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"NeoHW"},"content":" model.setPerson(patientToEdit, editedPatient);","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" return new CommandResult(generateSuccessMessage(editedPatient));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * {@code patientToEdit}.","lastModifiedDate":"2024-03-08"},{"lineNumber":362,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"NeoHW"},"content":" private String generateSuccessMessage(Person patientToEdit) {","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" return String.format(message, patientToEdit);","lastModifiedDate":"2024-03-08"},{"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":{"NeoHW":20,"-":382}},{"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":"NeoHW"},"content":"The `address` field in `Person` is actually an instance of the `seedu.address.model.patient.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-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" \"patients\": [ {","lastModifiedDate":"2024-03-08"},{"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":{"NeoHW":2,"-":113}},{"path":"docs/tutorials/TracingCode.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Tracing code\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Tracing code","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c!-- {:toc} --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureDiagram.puml\" alt\u003d\"ArchitectureDiagram\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ComponentManagers.puml\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":80,"author":{"gitId":"-"},"content":"**Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2023-09-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"**Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":175,"author":{"gitId":"-"},"content":" **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2023-09-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditPersonDescriptor`. Recall that we can verify the contents of `editPersonDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/tracing/LogicSequenceDiagram.puml\" alt\u003d\"Tracing an `edit` command through the Logic component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":194,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"NeoHW"},"content":" Person patientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-08"},{"lineNumber":199,"author":{"gitId":"NeoHW"},"content":" Person editedPatient \u003d createEditedPerson(patientToEdit, editPatientDescriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":200,"author":{"gitId":"NeoHW"},"content":" if (!patientToEdit.isSamePerson(editedPatient) \u0026\u0026 model.hasPerson(editedPatient)) {","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" model.setPerson(patientToEdit, editedPatient);","lastModifiedDate":"2024-03-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"NeoHW"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPatient));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * it uses the `setPerson()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the patient data.","lastModifiedDate":"2024-03-08"},{"lineNumber":211,"author":{"gitId":"NeoHW"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ patients.\u003cbr\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":212,"author":{"gitId":"NeoHW"},"content":" FYI, The \u0027filtered list\u0027 is the list of patients 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 patients so that the user can see the edited patient along with all other patients. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":213,"author":{"gitId":"NeoHW"},"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 patients is being tracked.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" patients.addAll(","lastModifiedDate":"2024-03-08"},{"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":{"NeoHW":10,"-":301}},{"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":"NeoHW"},"content":" private static final String LOG_FILE \u003d \"patientsync.log\";","lastModifiedDate":"2024-03-22"},{"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":"NeoHW"},"content":" * Creates a logger named \u0027patientSync\u0027, containing a {@code ConsoleHandler} and a {@code FileHandler}.","lastModifiedDate":"2024-03-22"},{"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":"NeoHW"},"content":" baseLogger \u003d Logger.getLogger(\"patientSync\");","lastModifiedDate":"2024-03-22"},{"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":{"NeoHW":3,"-":103}},{"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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" /** Returns an unmodifiable view of the filtered list of patients */","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" ObservableList\u003cPatient\u003e getFilteredPatientList();","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":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":"-"},"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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public ObservableList\u003cPatient\u003e getFilteredPatientList() {","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" return model.getFilteredPatientList();","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":3,"-":85}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public static final String MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX \u003d \"The patient index provided is invalid\";","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":" public static final String MESSAGE_INVALID_EVENT_DISPLAYED_INDEX \u003d \"The event index provided is invalid\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_PATIENT_LISTED_OVERVIEW \u003d \"%1$d patients listed!\";","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Formats the {@code patient} for display to the user.","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" public static String format(Patient patient) {","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" builder.append(patient.getName())","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" .append(\"; PreferredName: \")","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" .append(patient.getPreferredName())","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" .append(\"; PatientHospitalId: \")","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" .append(patient.getPatientHospitalId())","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" .append(\"; FoodPreference: \")","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" .append(patient.getFoodPreference())","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" .append(\"; FamilyCondition: \")","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" .append(patient.getFamilyCondition())","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" .append(\"; Hobby: \")","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" .append(patient.getHobby())","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" patient.getTags().forEach(builder::append);","lastModifiedDate":"2024-03-08"},{"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":{"SherisseTJW":1,"choowengyan":10,"NeoHW":7,"-":38}},{"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":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FAMILY_CONDITION;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FOOD_PREFERENCE;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOBBY;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PID;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PREFERRED_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" * Adds a patient to the address book.","lastModifiedDate":"2024-03-08"},{"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":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a patient to the address book. \"","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":" + PREFIX_PID + \"PATIENT_HOSPITAL_ID\"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" + PREFIX_PREFERRED_NAME + \"PREFERRED_NAME\"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" + PREFIX_FOOD_PREFERENCE + \"FOOD_PREFERENCE \"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":" + PREFIX_FAMILY_CONDITION + \"FAMILY_CONDITION \"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" + PREFIX_HOBBY + \"HOBBY \"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" + PREFIX_PID + \"12345\"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" + PREFIX_NAME + \"Alex Yeoh Jia Jun \"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" + PREFIX_PREFERRED_NAME + \"Alex \"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" + PREFIX_FOOD_PREFERENCE + \"Curry Chicken \"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" + PREFIX_FAMILY_CONDITION + \"Stable, Has 2 sons visit him regularly \"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" + PREFIX_HOBBY + \"Singing karaoke \"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" + PREFIX_TAG + \"Diabetes \";","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" public static final String MESSAGE_SUCCESS \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" \"Information for patient %1$s with ID %2$s has been successfully added!\";","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_DUPLICATE_PATIENT \u003d \"This patient already exists in the address book\";","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" private final Patient toAdd;","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" * Creates an AddCommand to add the specified {@code Patient}","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" public AddCommand(Patient patient) {","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" toAdd \u003d patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" if (model.hasPatient(toAdd)) {","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PATIENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" model.addPatient(toAdd);","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd.getName(), toAdd.getPatientHospitalId()));","lastModifiedDate":"2024-03-12"},{"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":{"choowengyan":20,"NeoHW":12,"-":58}},{"path":"src/main/java/seedu/address/logic/commands/AddEventCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SherisseTJW"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.EditCommand.createEditedPatient;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"SherisseTJW"},"content":" * Adds an event to the specified patient (based on index from the last shown patient list)","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"SherisseTJW"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":" public static final String COMMAND_WORD \u003d \"adde\";","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":" + \": Adds an event for a Patient. \"","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" + \"Parameters: INDEX (must be a positive integer matching that of the Patient in the `list` command) \"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":" + PREFIX_NAME + \" [Name of the Event that falls on this Date] \"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":" + PREFIX_DATETIME + \" [Date / Datetime, in the format DD-MM-YYYY\"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":" + \" / DD-MM-YYYY, HH:mm - HH:mm respectively]\\n\"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":" + \"Example: \"","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":" + PREFIX_NAME + \" Father Birthday \"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":" + PREFIX_DATETIME + \"29-09-1789\";","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Event %1$s successfully added for Patient %2$s with ID %3$s for %4$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":" public static final String MESSAGE_DUPLICATE \u003d \"Event %1$s already exists for Patient %2$s with ID %3$s for %4$s\";","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":" private final Index index;","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":" private final Event dateToAdd;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" private final EditPatientDescriptor editPatientDescriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":" * Constructs an AddEventCommand to add the specified {@code event}","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" * to the Patient with id {@code index}","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":" * @param index","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"SherisseTJW"},"content":" * @param event","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"SherisseTJW"},"content":" public AddEventCommand(Index index, Event event) {","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SherisseTJW"},"content":" requireAllNonNull(index, event);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"SherisseTJW"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"SherisseTJW"},"content":" this.dateToAdd \u003d event;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SherisseTJW"},"content":" this.editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"SherisseTJW"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"SherisseTJW"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"SherisseTJW"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"SherisseTJW"},"content":" List\u003cPatient\u003e lastShownList \u003d model.getFilteredPatientList();","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"SherisseTJW"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"SherisseTJW"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":" Patient patientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cEvent\u003e newEventsList \u003d new HashSet\u003c\u003e(patientToEdit.getEvents());","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"SherisseTJW"},"content":" if (newEventsList.contains(this.dateToAdd)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"SherisseTJW"},"content":" return new CommandResult(String.format(MESSAGE_DUPLICATE, dateToAdd.name, patientToEdit.getName(),","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"SherisseTJW"},"content":" index.getOneBased(), dateToAdd.date));","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"SherisseTJW"},"content":" newEventsList.add(this.dateToAdd);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setEvents(newEventsList);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"SherisseTJW"},"content":" Patient editedPatient \u003d createEditedPatient(patientToEdit, editPatientDescriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"SherisseTJW"},"content":" model.setPatient(patientToEdit, editedPatient);","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"SherisseTJW"},"content":" model.updateFilteredPatientList(Model.PREDICATE_SHOW_ALL_PATIENTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"SherisseTJW"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, dateToAdd.name, editedPatient.getName(),","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"SherisseTJW"},"content":" index.getOneBased(), dateToAdd.date));","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"SherisseTJW"},"content":" * Returns true if both AddEventCommands have the same index and important date to add.","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"SherisseTJW"},"content":" * @param other Another object to compare to.","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"SherisseTJW"},"content":" * @return True if the other object is an AddEventCommand with the same index and date / datetime to add.","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"SherisseTJW"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"SherisseTJW"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"SherisseTJW"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"SherisseTJW"},"content":" if (!(other instanceof AddEventCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"SherisseTJW"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand otherAddEventCommand \u003d (AddEventCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"SherisseTJW"},"content":" return index.equals(otherAddEventCommand.index)","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 dateToAdd.equals(otherAddEventCommand.dateToAdd);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"SherisseTJW"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"SherisseTJW"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"SherisseTJW"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"SherisseTJW"},"content":" .add(\"index\", index)","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"SherisseTJW"},"content":" .add(\"event\", dateToAdd)","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"SherisseTJW"},"content":" .toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"SherisseTJW"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"SherisseTJW":119}},{"path":"src/main/java/seedu/address/logic/commands/AddTagsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.EditCommand.createEditedPatient;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PATIENTS;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import java.util.List;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import java.util.logging.Level;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import javafx.util.Pair;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * Adds one or more tags to the specified patient.","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * Repeated tags in command will be added as a single tag.","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * If the patient already has the tag, it will not be added.","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"public class AddTagsCommand extends Command {","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" public static final String COMMAND_WORD \u003d \"addt\";","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" + \": Adds one or more tags to the patient identified \"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" + \"by the index number used in the last patient listing. \"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" + PREFIX_TAG + \"[TAG]+ \\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" + PREFIX_TAG + \"fall risk\";","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_ADD_TAG_SUCCESS \u003d \"Added the tag: %2$s for Patient: %1$s\"","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" + \" successfully\";","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_DUPLICATE_TAG \u003d \"The tag: %2$s already exists\"","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" + \" for Patient: %1$s\";","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddTagsCommand.class);","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" private final Index index;","lastModifiedDate":"2024-03-10"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" private final Set\u003cTag\u003e tagsToAdd;","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" private final EditPatientDescriptor editPatientDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" * @param index of the patient in the filtered patient list to add the tags","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" * @param tagsToAdd to be added to the patient","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" public AddTagsCommand(Index index, Set\u003cTag\u003e tagsToAdd) {","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" requireAllNonNull(index, tagsToAdd);","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-10"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" this.tagsToAdd \u003d tagsToAdd;","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" this.editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" * Executes the add tag command to add one or more tags to the patient.","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" * @return A command result message indicating the success of the operation.","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" * @throws CommandException If there is an error executing the command.","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-10"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" List\u003cPatient\u003e lastShownList \u003d model.getFilteredPatientList();","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.WARNING, \"Invalid patient index for Add Tags Command: \" + index);","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" Patient patientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" // Create new Hashset to add in new tags as Patient.getTags() return unmodifiableSet","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e(patientToEdit.getTags());","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" Pair\u003cSet\u003cTag\u003e, String\u003e result \u003d addTagsToPatient(patientToEdit, tagSet, tagsToAdd);","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e newTagSet \u003d result.getKey();","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" String commandResultString \u003d result.getValue();","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" editPatientDescriptor.setTags(newTagSet);","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" Patient editedPatient \u003d createEditedPatient(patientToEdit, editPatientDescriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" model.setPatient(patientToEdit, editedPatient);","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" model.updateFilteredPatientList(PREDICATE_SHOW_ALL_PATIENTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.INFO, \"Successfully called AddTagsCommand for patient: \" + editedPatient.getName());","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" return new CommandResult(commandResultString);","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" * Adds the specified tags to a patient\u0027s tag set.","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" * @param patient The patient whose tags are being modified.","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" * @param tagSet The current set of tags for the patient.","lastModifiedDate":"2024-03-22"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":" * @param toAddTags The Tags to be added.","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" * @return A Pair containing the updated tag set and a string describing the outcome of the deletion.","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":" public Pair\u003cSet\u003cTag\u003e, String\u003e addTagsToPatient(Patient patient, Set\u003cTag\u003e tagSet,","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e toAddTags) {","lastModifiedDate":"2024-03-22"},{"lineNumber":112,"author":{"gitId":"NeoHW"},"content":" requireAllNonNull(tagSet, toAddTags);","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" StringBuilder commandOutcome \u003d new StringBuilder();","lastModifiedDate":"2024-03-22"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" for (Tag tag : toAddTags) {","lastModifiedDate":"2024-03-22"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":" assert tag !\u003d null : \"Tag cannot be null\";","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":" if (tagSet.contains(tag)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":" commandOutcome.append(String.format(MESSAGE_DUPLICATE_TAG, patient.getName(), tag)).append(\"\\n\");","lastModifiedDate":"2024-03-22"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" } else {","lastModifiedDate":"2024-03-22"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":" tagSet.add(tag);","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":" commandOutcome.append(String.format(MESSAGE_ADD_TAG_SUCCESS, patient.getName(), tag)).append(\"\\n\");","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":" return new Pair\u003c\u003e(tagSet, commandOutcome.toString());","lastModifiedDate":"2024-03-22"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"NeoHW"},"content":" * Returns true if both add tag commands have the same index and tags to add.","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"NeoHW"},"content":" * @param other Another object to compare to.","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"NeoHW"},"content":" * @return True if the other object is an AddTagsCommand with the same index and tags to add.","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-10"},{"lineNumber":136,"author":{"gitId":"NeoHW"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-10"},{"lineNumber":137,"author":{"gitId":"NeoHW"},"content":" return true;","lastModifiedDate":"2024-03-10"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":140,"author":{"gitId":"NeoHW"},"content":" if (!(other instanceof AddTagsCommand)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-03-10"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand otherTagCommand \u003d (AddTagsCommand) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":145,"author":{"gitId":"NeoHW"},"content":" return index.equals(otherTagCommand.index)","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"NeoHW"},"content":" \u0026\u0026 tagsToAdd.equals(otherTagCommand.tagsToAdd);","lastModifiedDate":"2024-03-22"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"NeoHW"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"NeoHW"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-11"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" .add(\"index\", index)","lastModifiedDate":"2024-03-11"},{"lineNumber":153,"author":{"gitId":"NeoHW"},"content":" .add(\"tags\", tagsToAdd)","lastModifiedDate":"2024-03-22"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":" .toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":156,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"NeoHW":156}},{"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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * Deletes a patient identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" + \": Deletes the patient identified by the index number used in the displayed patient list.\\n\"","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":" public static final String MESSAGE_DELETE_PATIENT_SUCCESS \u003d \"Patient %1$s with ID %2$s \"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" + \"has been successfully deleted.\";","lastModifiedDate":"2024-03-17"},{"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":"guohuang88"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":" * DeleteCommand Constructor.","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":" * @param targetIndex Index of the list in the address book.","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":" * Returns CommandResult containing success message.","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":" * @return CommandResult containing success message.","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":" * @throws CommandException When the provided index is invalid.","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":" */","lastModifiedDate":"2024-03-14"},{"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":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" List\u003cPatient\u003e lastShownList \u003d model.getFilteredPatientList();","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" Patient patientToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" model.deletePatient(patientToDelete);","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"guohuang88"},"content":" String.format(MESSAGE_DELETE_PATIENT_SUCCESS, patientToDelete.getName(), targetIndex.getOneBased())","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"guohuang88"},"content":" );","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"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 DeleteCommand)) {","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":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"guohuang88":13,"choowengyan":2,"NeoHW":7,"-":60}},{"path":"src/main/java/seedu/address/logic/commands/DeleteEventCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.logic.commands.EditCommand.createEditedPatient;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PATIENTS;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.logging.Level;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.parser.DeleteEventCommandParser;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":" * Deletes a patient identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":"public class DeleteEventCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":" public static final String COMMAND_WORD \u003d \"deletee\";","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":" + \": Deletes a specified event for a specific patient identified by index number of patient \"","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":" + \" in the displayed patient list as well as the event index.\\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":" + \"Parameters: INDEX of PATIENT (must be a positive integer matching that of the Patient in the\"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":" + \"`list` command) \"","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":" + \"e/ [Index of the Event] (must be a positive integer matching that of the event of the patient. \\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":" + \"Example: \"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":" + \"e/ 1 \";","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" public static final String MESSAGE_DELETE_EVENT_SUCCESS \u003d \"Deleted Event: %2$s for Patient: %1$s\"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":" + \"successfully\";","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":" private final Index targetPatientIndex;","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":" private final Index targetEventIndex;","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":" private final EditPatientDescriptor editPatientDescriptor;","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"SherisseTJW"},"content":" * Constructs a DeleteEventCommand to delete the specified {@code event} using","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"ZhiWei1010"},"content":" * {@code targetEventIndex} from the Patient with id {@code targetPatientIndex}","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"ZhiWei1010"},"content":" * @param targetPatientIndex","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"ZhiWei1010"},"content":" * @param targetEventIndex","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"SherisseTJW"},"content":" public DeleteEventCommand(Index targetPatientIndex, Index targetEventIndex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"ZhiWei1010"},"content":" requireAllNonNull(targetPatientIndex, targetEventIndex);","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"ZhiWei1010"},"content":" this.targetPatientIndex \u003d targetPatientIndex;","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"ZhiWei1010"},"content":" this.targetEventIndex \u003d targetEventIndex;","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"ZhiWei1010"},"content":" this.editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"ZhiWei1010"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"ZhiWei1010"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"ZhiWei1010"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"ZhiWei1010"},"content":" List\u003cPatient\u003e lastShownList \u003d model.getFilteredPatientList();","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"ZhiWei1010"},"content":" if (targetPatientIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"ZhiWei1010"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":" Patient patientToDeleteEvent \u003d lastShownList.get(targetPatientIndex.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cEvent\u003e eventSet \u003d patientToDeleteEvent.getEvents();","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"SherisseTJW"},"content":" if (targetEventIndex.getZeroBased() \u003e\u003d eventSet.size()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"SherisseTJW"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_EVENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cEvent\u003e currEventSet \u003d new HashSet\u003c\u003e(patientToDeleteEvent.getEvents());","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"SherisseTJW"},"content":" List\u003cEvent\u003e currEventList \u003d new ArrayList\u003c\u003e(currEventSet);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"SherisseTJW"},"content":" Collections.sort(currEventList);","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"SherisseTJW"},"content":" Event eventToDelete \u003d currEventList.get(targetEventIndex.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"SherisseTJW"},"content":" currEventList.remove(targetEventIndex.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cEvent\u003e newEventSet \u003d new HashSet\u003c\u003e(currEventList);","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"SherisseTJW"},"content":" Logger logger \u003d LogsCenter.getLogger(DeleteEventCommandParser.class);","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"SherisseTJW"},"content":" logger.log(Level.INFO, \"old set: \" + currEventSet);","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"SherisseTJW"},"content":" logger.log(Level.INFO, \"new set: \" + newEventSet);","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setName(patientToDeleteEvent.getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setTags(patientToDeleteEvent.getTags());","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setPatientHospitalId(patientToDeleteEvent.getPatientHospitalId());","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setPreferredName(patientToDeleteEvent.getPreferredName());","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setFoodPreference(patientToDeleteEvent.getFoodPreference());","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setFamilyCondition(patientToDeleteEvent.getFamilyCondition());","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setHobby(patientToDeleteEvent.getHobby());","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setName(patientToDeleteEvent.getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setTags(patientToDeleteEvent.getTags());","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setEvents(newEventSet);","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"SherisseTJW"},"content":" Patient editedPatient \u003d createEditedPatient(patientToDeleteEvent, editPatientDescriptor);","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"SherisseTJW"},"content":" model.setPatient(patientToDeleteEvent, editedPatient);","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"ZhiWei1010"},"content":" model.updateFilteredPatientList(PREDICATE_SHOW_ALL_PATIENTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"SherisseTJW"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_EVENT_SUCCESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" Messages.format(patientToDeleteEvent),","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"ZhiWei1010"},"content":" eventToDelete));","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"ZhiWei1010"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"ZhiWei1010"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"ZhiWei1010"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"ZhiWei1010"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"ZhiWei1010"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"SherisseTJW"},"content":" if (!(other instanceof DeleteEventCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"ZhiWei1010"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand otherDeleteEventCommand \u003d (DeleteEventCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"SherisseTJW"},"content":" return targetPatientIndex.equals(otherDeleteEventCommand.targetPatientIndex)","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 targetEventIndex.equals(otherDeleteEventCommand.targetEventIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":127,"author":{"gitId":"ZhiWei1010"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"ZhiWei1010"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"ZhiWei1010"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"ZhiWei1010"},"content":" .add(\"targetPatientIndex\", targetPatientIndex)","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"ZhiWei1010"},"content":" .add(\"targetEventIndex\", targetEventIndex)","lastModifiedDate":"2024-03-15"},{"lineNumber":132,"author":{"gitId":"ZhiWei1010"},"content":" .toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":134,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"SherisseTJW":43,"ZhiWei1010":91}},{"path":"src/main/java/seedu/address/logic/commands/DeleteTagsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.EditCommand.createEditedPatient;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PATIENTS;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import java.util.logging.Level;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import javafx.util.Pair;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * Deletes given Tags from a patient identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"public class DeleteTagsCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" public static final String COMMAND_WORD \u003d \"deletet\";","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" + \": Deletes the specified tags to the patient identified \"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" + \"by the index number used in the last patient listing. \"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" + PREFIX_TAG + \"[TAG]+ \\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" + PREFIX_TAG + \"fall risk\";","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_DELETE_TAG_SUCCESS \u003d \"Deleted the tag: %2$s for Patient: %1$s\"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" + \" successfully\";","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_INVALID_TAG \u003d \"The tag: %2$s does not exists\"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" + \" for Patient: %1$s\";","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(DeleteTagsCommand.class);","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" private final Index index;","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" private final Set\u003cTag\u003e tagsToDelete;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" private final EditPatientDescriptor editPatientDescriptor;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" * Constructs a DeleteTagsCommand to delete the specified {@code Tag} using","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" * from the Patient with id {@code index}","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" * @param index of the patient in the filtered patient list to delete the tags","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" * @param tagsToDelete to be deleted from the patient","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" public DeleteTagsCommand(Index index, Set\u003cTag\u003e tagsToDelete) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" requireAllNonNull(index, tagsToDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" this.tagsToDelete \u003d tagsToDelete;","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" this.editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" * Executes the delete tag command to delete one or more tags to the patient.","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" * @return A command result message indicating the success of the operation.","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" * @throws CommandException If there is an error executing the command.","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" List\u003cPatient\u003e lastShownList \u003d model.getFilteredPatientList();","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.WARNING, \"Invalid patient index for Delete Tags Command: \" + index);","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" Patient patientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" // Create new Hashset for tags as Patient.getTags() return unmodifiableSet","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e(patientToEdit.getTags());","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" Pair\u003cSet\u003cTag\u003e, String\u003e result \u003d deleteTagsFromPatient(patientToEdit, tagSet, tagsToDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e newTagSet \u003d result.getKey();","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" String commandResultString \u003d result.getValue();","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" editPatientDescriptor.setTags(newTagSet);","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" Patient editedPatient \u003d createEditedPatient(patientToEdit, editPatientDescriptor);","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" model.setPatient(patientToEdit, editedPatient);","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" model.updateFilteredPatientList(PREDICATE_SHOW_ALL_PATIENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.INFO, \"Successfully called delete tags command from patient: \" + editedPatient.getName());","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" return new CommandResult(commandResultString);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" * Deletes specified tags from a patient\u0027s tag set.","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" * @param patient The patient whose tags are being modified.","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" * @param tagSet The current set of tags for the patient.","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" * @param toDeleteTags The Tags to be deleted.","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":" * @return A Pair containing the updated tag set and a string describing the outcome of the deletion.","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" public Pair\u003cSet\u003cTag\u003e, String\u003e deleteTagsFromPatient(Patient patient, Set\u003cTag\u003e tagSet,","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e toDeleteTags) {","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" requireAllNonNull(tagSet, toDeleteTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":" StringBuilder commandOutcome \u003d new StringBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":" for (Tag tag : toDeleteTags) {","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" if (!tagSet.contains(tag)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":" commandOutcome.append(String.format(MESSAGE_INVALID_TAG, patient.getName(), tag)).append(\"\\n\");","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":" tagSet.remove(tag);","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" commandOutcome.append(String.format(MESSAGE_DELETE_TAG_SUCCESS, patient.getName(), tag)).append(\"\\n\");","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"NeoHW"},"content":" return new Pair\u003c\u003e(tagSet, commandOutcome.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":" * Returns true if both delete tag commands have the same index and tags to delete.","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"NeoHW"},"content":" * @param other Another object to compare to.","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"NeoHW"},"content":" * @return True if the other object is an DeleteTagsCommand with the same index and tags to add.","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" if (!(other instanceof DeleteTagsCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand otherTagCommand \u003d (DeleteTagsCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":" return index.equals(otherTagCommand.index)","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"NeoHW"},"content":" \u0026\u0026 tagsToDelete.equals(otherTagCommand.tagsToDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"NeoHW"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"NeoHW"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"NeoHW"},"content":" .add(\"targetPatientIndex\", index)","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" .add(\"tags\", tagsToDelete)","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"NeoHW"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"NeoHW":155}},{"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":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FAMILY_CONDITION;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FOOD_PREFERENCE;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOBBY;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PID;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PREFERRED_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PATIENTS;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"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.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":"SherisseTJW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-14"},{"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":"NeoHW"},"content":" * Edits the details of an existing patient in the address book.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the patient identified \"","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" + \"by the index number used in the displayed patient list. \"","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":" + \"[\" + PREFIX_PID + \"PATIENT HOSPITAL ID] \"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" + \"[\" + PREFIX_PREFERRED_NAME + \"PREFERRED NAME] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" + \"[\" + PREFIX_FOOD_PREFERENCE + \"FOOD PREFERENCE] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" + \"[\" + PREFIX_FAMILY_CONDITION + \"FAMILY CONDITION] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" + \"[\" + PREFIX_HOBBY + \"HOBBY] \"","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" + PREFIX_FOOD_PREFERENCE + \"Laksa \"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" + PREFIX_FAMILY_CONDITION + \"Sister moved to Indonesia\";","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_EDIT_PATIENT_SUCCESS \u003d \"Edited Patient: %1$s\";","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public static final String MESSAGE_DUPLICATE_PATIENT \u003d \"This patient already exists in the address book.\";","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" private final EditPatientDescriptor editPatientDescriptor;","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" * @param index of the patient in the filtered patient list to edit","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" * @param editPatientDescriptor details to edit the patient with","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" public EditCommand(Index index, EditPatientDescriptor editPatientDescriptor) {","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" requireNonNull(editPatientDescriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" this.editPatientDescriptor \u003d new EditPatientDescriptor(editPatientDescriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" List\u003cPatient\u003e lastShownList \u003d model.getFilteredPatientList();","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" Patient patientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-08"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" Patient editedPatient \u003d createEditedPatient(patientToEdit, editPatientDescriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" if (!patientToEdit.isSamePatient(editedPatient) \u0026\u0026 model.hasPatient(editedPatient)) {","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PATIENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" model.setPatient(patientToEdit, editedPatient);","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" model.updateFilteredPatientList(PREDICATE_SHOW_ALL_PATIENTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PATIENT_SUCCESS, Messages.format(editedPatient)));","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" * Creates and returns a {@code Patient} with the details of {@code patientToEdit}","lastModifiedDate":"2024-03-08"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" * edited with {@code editPatientDescriptor}.","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" static Patient createEditedPatient(Patient patientToEdit, EditPatientDescriptor editPatientDescriptor) {","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" assert patientToEdit !\u003d null;","lastModifiedDate":"2024-03-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"choowengyan"},"content":" PatientHospitalId originalPatientHospitalId \u003d editPatientDescriptor.getPatientHospitalId()","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"choowengyan"},"content":" .orElse(patientToEdit.getPatientHospitalId());","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" Name updatedName \u003d editPatientDescriptor.getName().orElse(patientToEdit.getName());","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"choowengyan"},"content":" PreferredName updatedPreferredName \u003d editPatientDescriptor.getPreferredName()","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"choowengyan"},"content":" .orElse(patientToEdit.getPreferredName());","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"choowengyan"},"content":" FoodPreference updatedFoodPreference \u003d editPatientDescriptor.getFoodPreference()","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"choowengyan"},"content":" .orElse(patientToEdit.getFoodPreference());","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"choowengyan"},"content":" FamilyCondition updatedFamilyCondition \u003d editPatientDescriptor.getFamilyCondition()","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"choowengyan"},"content":" .orElse(patientToEdit.getFamilyCondition());","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"choowengyan"},"content":" Hobby updatedHobby \u003d editPatientDescriptor.getHobby().orElse(patientToEdit.getHobby());","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e updatedTags \u003d editPatientDescriptor.getTags().orElse(patientToEdit.getTags());","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cEvent\u003e updatedEvents \u003d editPatientDescriptor.getEvents()","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"SherisseTJW"},"content":" .orElse(patientToEdit.getEvents());","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":115,"author":{"gitId":"choowengyan"},"content":" return new Patient(originalPatientHospitalId, updatedName, updatedPreferredName, updatedFoodPreference,","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"SherisseTJW"},"content":" updatedFamilyCondition, updatedHobby, updatedTags, updatedEvents);","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"NeoHW"},"content":" \u0026\u0026 editPatientDescriptor.equals(otherEditCommand.editPatientDescriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" .add(\"editPatientDescriptor\", editPatientDescriptor)","lastModifiedDate":"2024-03-09"},{"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":"2016-12-26"}],"authorContributionMap":{"SherisseTJW":8,"choowengyan":27,"NeoHW":28,"-":79}},{"path":"src/main/java/seedu/address/logic/commands/EditEventCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.commands.EditCommand.createEditedPatient;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PATIENTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":" * Edits an event for a patient in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":"public class EditEventCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":" public static final String COMMAND_WORD \u003d \"edite\";","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":" + \": Edits an event for a specific patient using the patient index\"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":" + \" in the patient list and event index.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":" + \"Parameters: INDEX (must be a positive integer matching that of the Patient in the `list` command)\"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":" + \" e/ [Index of the updated Event]\"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":" + \" n/ [Name of the updated Event]\"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":" + \" d/ [Updated Date / Datetime, in the format DD-MM-YYYY\"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":" + \" / DD-MM-YYYY, HH:mm - HH:mm respectively]\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":" + \"Example: \"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":" + PREFIX_EVENT + \" 1\"","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":" + PREFIX_NAME + \" Updated Event \"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":" + PREFIX_DATETIME + \" 12-10-2024\";","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"guohuang88"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Event %1$s with ID %2$s on %3$s successfully updated \"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"guohuang88"},"content":" + \"for Patient %4$s with ID %5$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"guohuang88"},"content":" public static final String MESSAGE_DUPLICATE \u003d \"Event %1$s on %2$s already exists for Patient %3$s with ID %4$s \"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"guohuang88"},"content":" + \"so only one entry is kept.\";","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"guohuang88"},"content":" private final Index patientIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"guohuang88"},"content":" private final Index eventIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"guohuang88"},"content":" private final Event eventToUpdate;","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"guohuang88"},"content":" private final EditPatientDescriptor editPatientDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"guohuang88"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":" * Constructs an EditEventCommand to edit the specified {@code eventToUpdate}","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"guohuang88"},"content":" * for {@code eventIndex} to the Patient with id {@code patientIndex}","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"guohuang88"},"content":" * @param patientIndex The id of the patient.","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"guohuang88"},"content":" * @param eventIndex The id of the event.","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"guohuang88"},"content":" * @param eventToUpdate The updated event.","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"guohuang88"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"guohuang88"},"content":" public EditEventCommand(Index patientIndex, Index eventIndex, Event eventToUpdate) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"guohuang88"},"content":" requireAllNonNull(patientIndex, eventIndex, eventToUpdate);","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"guohuang88"},"content":" this.patientIndex \u003d patientIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"guohuang88"},"content":" this.eventIndex \u003d eventIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"guohuang88"},"content":" this.eventToUpdate \u003d eventToUpdate;","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"guohuang88"},"content":" this.editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"guohuang88"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"guohuang88"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"guohuang88"},"content":" List\u003cPatient\u003e lastShownList \u003d model.getFilteredPatientList();","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"guohuang88"},"content":" if (patientIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"guohuang88"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"guohuang88"},"content":" Patient patientToEditEvent \u003d lastShownList.get(patientIndex.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"guohuang88"},"content":" Set\u003cEvent\u003e events \u003d patientToEditEvent.getEvents();","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"guohuang88"},"content":" if (eventIndex.getZeroBased() \u003e\u003d events.size()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"guohuang88"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_EVENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"guohuang88"},"content":" List\u003cEvent\u003e eventList \u003d new ArrayList\u003c\u003e(events);","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"SherisseTJW"},"content":" Collections.sort(eventList);","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"guohuang88"},"content":" eventList.set(eventIndex.getZeroBased(), eventToUpdate);","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"guohuang88"},"content":" Set\u003cEvent\u003e updatedEvents \u003d new HashSet\u003c\u003e(eventList);","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"guohuang88"},"content":" editPatientDescriptor.setEvents(updatedEvents);","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"guohuang88"},"content":" Patient updatedPatient \u003d createEditedPatient(patientToEditEvent, editPatientDescriptor);","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"guohuang88"},"content":" model.setPatient(patientToEditEvent, updatedPatient);","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"guohuang88"},"content":" model.updateFilteredPatientList(PREDICATE_SHOW_ALL_PATIENTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"guohuang88"},"content":" if (events.contains(eventToUpdate)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"guohuang88"},"content":" return new CommandResult(String.format(MESSAGE_DUPLICATE, eventToUpdate.name, eventToUpdate.date,","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"guohuang88"},"content":" updatedPatient.getName(), patientIndex.getOneBased()));","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"guohuang88"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, eventToUpdate.name, eventIndex.getOneBased(),","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"guohuang88"},"content":" eventToUpdate.date, updatedPatient.getName(), patientIndex.getOneBased()));","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"guohuang88"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"guohuang88"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"guohuang88"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"guohuang88"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"guohuang88"},"content":" if (!(other instanceof EditEventCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"guohuang88"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"guohuang88"},"content":" EditEventCommand otherEditEventCommand \u003d (EditEventCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"guohuang88"},"content":" return patientIndex.equals(otherEditEventCommand.patientIndex)","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"guohuang88"},"content":" \u0026\u0026 eventIndex.equals(otherEditEventCommand.eventIndex)","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"guohuang88"},"content":" \u0026\u0026 eventToUpdate.equals(otherEditEventCommand.eventToUpdate);","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"guohuang88"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"guohuang88"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"guohuang88"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"guohuang88"},"content":" .add(\"patientIndex\", patientIndex)","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"guohuang88"},"content":" .add(\"eventIndex\", eventIndex)","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"guohuang88"},"content":" .add(\"eventToUpdate\", eventToUpdate)","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"guohuang88"},"content":" .toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"guohuang88"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"guohuang88":126,"SherisseTJW":3}},{"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":"NeoHW"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" * Finds and lists all patients in address book whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all patients whose names contain any of \"","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" model.updateFilteredPatientList(predicate);","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" String.format(Messages.MESSAGE_PATIENT_LISTED_OVERVIEW, model.getFilteredPatientList().size()));","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":5,"-":53}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PATIENTS;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Lists all patients in the address book to the user.","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all patients\";","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" model.updateFilteredPatientList(PREDICATE_SHOW_ALL_PATIENTS);","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":4,"-":20}},{"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":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FAMILY_CONDITION;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FOOD_PREFERENCE;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOBBY;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PID;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PREFERRED_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"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":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_PID, PREFIX_NAME, PREFIX_PREFERRED_NAME, PREFIX_FOOD_PREFERENCE,","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" PREFIX_FAMILY_CONDITION, PREFIX_HOBBY, PREFIX_TAG);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_PID, PREFIX_NAME, PREFIX_PREFERRED_NAME, PREFIX_FOOD_PREFERENCE,","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" PREFIX_FAMILY_CONDITION, PREFIX_HOBBY) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-18"},{"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":"choowengyan"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_PID, PREFIX_NAME, PREFIX_PREFERRED_NAME, PREFIX_FOOD_PREFERENCE,","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" PREFIX_FAMILY_CONDITION, PREFIX_HOBBY);","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" PatientHospitalId patientHospitalId \u003d ParserUtil.parsePatientHospitalId(argMultimap.getValue(PREFIX_PID).get());","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" PreferredName preferredName \u003d ParserUtil.parsePreferredName(argMultimap.getValue(PREFIX_PREFERRED_NAME).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" FoodPreference foodPreference \u003d ParserUtil.parseFoodPreference(argMultimap","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" .getValue(PREFIX_FOOD_PREFERENCE).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" FamilyCondition familyCondition \u003d ParserUtil.parseFamilyCondition(argMultimap","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" .getValue(PREFIX_FAMILY_CONDITION).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" Hobby hobby \u003d ParserUtil.parseHobby(argMultimap.getValue(PREFIX_HOBBY).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":"choowengyan"},"content":" Patient patient \u003d new Patient(patientHospitalId, name, preferredName, foodPreference, familyCondition, hobby,","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" tagList);","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" return new AddCommand(patient);","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"choowengyan":25,"NeoHW":3,"-":44}},{"path":"src/main/java/seedu/address/logic/parser/AddEventParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SherisseTJW"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.parser.ParserUtil.arePrefixesPresent;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.commands.AddEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":" * Parses the user\u0027s input arguments and creates a new AddEvent Command","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":"public class AddEventParser implements Parser\u003cAddEventCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"SherisseTJW"},"content":" public AddEventCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"SherisseTJW"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_DATETIME);","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_DATETIME) || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":" Index index;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":" } catch (IllegalValueException e) {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand.MESSAGE_USAGE), e);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":" Event event \u003d ParserUtil.parseEvent(argMultimap.getValue(PREFIX_NAME).get(),","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":" argMultimap.getValue(PREFIX_DATETIME).get());","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":" return new AddEventCommand(index, event);","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"SherisseTJW":45}},{"path":"src/main/java/seedu/address/logic/parser/AddTagsCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.parser.ParserUtil.arePrefixesPresent;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import java.util.logging.Level;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.AddTagsCommand;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" * Parses input arguments and creates a new AddTagsCommand object","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"public class AddTagsCommandParser implements Parser\u003cAddTagsCommand\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddTagsCommandParser.class);","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * Parses the given {@code String} of arguments in the context of the AddTagsCommand","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * and returns an AddTagsCommand object for execution.","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" public AddTagsCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.INFO, \"Parsing AddTagsCommand: \" + args);","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_TAG);","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_TAG) || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.WARNING, \"Invalid command format for AddTagsCommand: \" + args);","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" Index index;","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-03-10"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-10"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" logger.warning(\"Index is not a non-zero unsigned integer in AddTagsCommand: \" + args);","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTagsCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagList;","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.WARNING, \"Invalid tags provided in AddTagsCommand: \" + args);","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" throw new ParseException(pe.getMessage(), pe);","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.INFO, \"Successfully parsed AddTagsCommand with index \" + index + \" and tags \" + tagList);","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" return new AddTagsCommand(index, tagList);","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"NeoHW":63}},{"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":"SherisseTJW"},"content":"import seedu.address.logic.commands.AddEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.AddTagsCommand;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.commands.DeleteEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.DeleteTagsCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.commands.EditEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"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":"SherisseTJW"},"content":" case AddEventCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SherisseTJW"},"content":" return new AddEventParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"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":"NeoHW"},"content":" case AddTagsCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" return new AddTagsCommandParser().parse(arguments);","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" case DeleteTagsCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" return new DeleteTagsCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"SherisseTJW"},"content":" case DeleteEventCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"SherisseTJW"},"content":" return new DeleteEventCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"guohuang88"},"content":" case EditEventCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"guohuang88"},"content":" return new EditEventCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"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":{"guohuang88":4,"SherisseTJW":7,"ZhiWei1010":1,"NeoHW":8,"-":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":"choowengyan"},"content":" public static final Prefix PREFIX_PID \u003d new Prefix(\"id/\");","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":" public static final Prefix PREFIX_PREFERRED_NAME \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":" public static final Prefix PREFIX_FOOD_PREFERENCE \u003d new Prefix(\"f/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":" public static final Prefix PREFIX_FAMILY_CONDITION \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":" public static final Prefix PREFIX_HOBBY \u003d new Prefix(\"h/\");","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":" public static final Prefix PREFIX_DATETIME \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":" public static final Prefix PREFIX_EVENT \u003d new Prefix(\"e/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"SherisseTJW":2,"choowengyan":5,"-":12}},{"path":"src/main/java/seedu/address/logic/parser/DeleteEventCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.logic.parser.ParserUtil.arePrefixesPresent;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.logging.Level;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.commands.DeleteEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":" * Parses the user\u0027s input arguments and creates a new DeleteEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":"public class DeleteEventCommandParser implements Parser\u003cDeleteEventCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(DeleteEventCommandParser.class);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":" public DeleteEventCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_EVENT);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_EVENT) || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":" Index patientIndex;","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":" Index eventIndex;","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":" patientIndex \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":" logger.log(Level.INFO, \"patient index: \" + patientIndex);","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":" if (argMultimap.getValue(PREFIX_EVENT).isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":" eventIndex \u003d ParserUtil.parseIndex(argMultimap.getValue(PREFIX_EVENT).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":" logger.log(Level.INFO, \"Event index: \" + eventIndex);","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" return new DeleteEventCommand(patientIndex, null);","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":" return new DeleteEventCommand(patientIndex, eventIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteEventCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"SherisseTJW":14,"ZhiWei1010":38}},{"path":"src/main/java/seedu/address/logic/parser/DeleteTagsCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.parser.ParserUtil.arePrefixesPresent;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import java.util.logging.Level;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.AddTagsCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.DeleteTagsCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" * Parses the user\u0027s input arguments and creates a new DeleteTagsCommand object","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"public class DeleteTagsCommandParser implements Parser\u003cDeleteTagsCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(DeleteTagsCommandParser.class);","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * and returns an DeleteTagsCommand object for execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" public DeleteTagsCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.INFO, \"Parsing DeleteTagsCommand: \" + args);","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_TAG);","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_TAG) || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.WARNING, \"Invalid command format for DeleteTagsCommand: \" + args);","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" Index index;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.WARNING, \"Index is not a non-zero unsigned integer in DeleteTagsCommand: \" + args);","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTagsCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagList;","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.WARNING, \"Invalid tags provided in DeleteTagsCommand: \" + args);","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" throw new ParseException(pe.getMessage(), pe);","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.INFO, \"Successfully parsed DeleteTagsCommand with index \" + index + \" and tags \" + tagList);","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" return new DeleteTagsCommand(index, tagList);","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"NeoHW":63}},{"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":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FAMILY_CONDITION;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FOOD_PREFERENCE;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOBBY;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PID;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PREFERRED_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_PID, PREFIX_NAME, PREFIX_PREFERRED_NAME, PREFIX_FOOD_PREFERENCE,","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" PREFIX_FAMILY_CONDITION, PREFIX_HOBBY, PREFIX_TAG);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" EditPatientDescriptor editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" if (argMultimap.getValue(PREFIX_PID).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" editPatientDescriptor.setPatientHospitalId(ParserUtil.parsePatientHospitalId(","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" argMultimap.getValue(PREFIX_PID).get()));","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" editPatientDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" if (argMultimap.getValue(PREFIX_PREFERRED_NAME).isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" editPatientDescriptor.setPreferredName(ParserUtil.parsePreferredName(","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" argMultimap.getValue(PREFIX_PREFERRED_NAME).get()));","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":" if (argMultimap.getValue(PREFIX_FOOD_PREFERENCE).isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":" editPatientDescriptor.setFoodPreference(ParserUtil.parseFoodPreference(","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" argMultimap.getValue(PREFIX_FOOD_PREFERENCE).get()));","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" if (argMultimap.getValue(PREFIX_FAMILY_CONDITION).isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" editPatientDescriptor.setFamilyCondition(ParserUtil.parseFamilyCondition(","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":" argMultimap.getValue(PREFIX_FAMILY_CONDITION).get()));","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":" if (argMultimap.getValue(PREFIX_HOBBY).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":" editPatientDescriptor.setHobby(ParserUtil.parseHobby(","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":" argMultimap.getValue(PREFIX_HOBBY).get()));","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPatientDescriptor::setTags);","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" if (!editPatientDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" return new EditCommand(index, editPatientDescriptor);","lastModifiedDate":"2024-03-09"},{"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":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"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":{"choowengyan":23,"NeoHW":6,"-":68}},{"path":"src/main/java/seedu/address/logic/parser/EditEventCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.ParserUtil.arePrefixesPresent;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"guohuang88"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.commands.EditEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":" * Parses the user\u0027s input arguments and creates a new EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":"public class EditEventCommandParser implements Parser\u003cEditEventCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":" * Returns a new EditEventCommand instance.","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":" * @param args User\u0027s input.","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":" * @return A new EditEventCommand.","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":" public EditEventCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_EVENT,","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":" PREFIX_NAME, PREFIX_DATETIME);","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_EVENT, PREFIX_NAME, PREFIX_DATETIME)","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":" || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":" EditEventCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":" Index patientIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":" Index eventIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":" Event event;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":" patientIndex \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":" eventIndex \u003d ParserUtil.parseIndex(argMultimap.getValue(PREFIX_EVENT).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"guohuang88"},"content":" } catch (IllegalValueException e) {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"guohuang88"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"guohuang88"},"content":" EditEventCommand.MESSAGE_USAGE), e);","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"guohuang88"},"content":" event \u003d ParserUtil.parseEvent(argMultimap.getValue(PREFIX_NAME).get(),","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"guohuang88"},"content":" argMultimap.getValue(PREFIX_DATETIME).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"guohuang88"},"content":" return new EditEventCommand(patientIndex, eventIndex, event);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"guohuang88"},"content":"}","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"guohuang88":56}},{"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":"NeoHW"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-08"},{"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":{"NeoHW":1,"-":32}},{"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":"SherisseTJW"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-12"},{"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":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" * Parses a {@code String patientHospitalId} into a {@code PatientHospitalId}.","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" * @throws ParseException if the given {@code patientHospitalId} is invalid.","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" public static PatientHospitalId parsePatientHospitalId(String patientHospitalId) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" requireNonNull(patientHospitalId);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" String trimmedId \u003d patientHospitalId.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" if (!PatientHospitalId.isValidPatientHospitalId(trimmedId)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" throw new ParseException(PatientHospitalId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" return new PatientHospitalId(trimmedId);","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":" * Parses a {@code String preferredName} into a {@code PreferredName}.","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"choowengyan"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"choowengyan"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"choowengyan"},"content":" * @throws ParseException if the given {@code preferredName} is invalid.","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"choowengyan"},"content":" public static PreferredName parsePreferredName(String preferredName) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"choowengyan"},"content":" requireNonNull(preferredName);","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"choowengyan"},"content":" String trimmedPreferredName \u003d preferredName.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"choowengyan"},"content":" if (!PreferredName.isValidPreferredName(trimmedPreferredName)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"choowengyan"},"content":" throw new ParseException(PreferredName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"choowengyan"},"content":" return new PreferredName(trimmedPreferredName);","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"choowengyan"},"content":" * Parses a {@code String food} into a {@code FoodPreference}.","lastModifiedDate":"2024-03-12"},{"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":"choowengyan"},"content":" * @throws ParseException if the given {@code food} is invalid.","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"choowengyan"},"content":" public static FoodPreference parseFoodPreference(String food) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"choowengyan"},"content":" requireNonNull(food);","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"choowengyan"},"content":" String trimmedFood \u003d food.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"choowengyan"},"content":" if (!FoodPreference.isValidFoodPreference(trimmedFood)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"choowengyan"},"content":" throw new ParseException(FoodPreference.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"choowengyan"},"content":" return new FoodPreference(trimmedFood);","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"choowengyan"},"content":" * Parses a {@code String condition} into an {@code FamilyCondition}.","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"choowengyan"},"content":" * @throws ParseException if the given {@code condition} is invalid.","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"choowengyan"},"content":" public static FamilyCondition parseFamilyCondition(String condition) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"choowengyan"},"content":" requireNonNull(condition);","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"choowengyan"},"content":" String trimmedFamilyCondition \u003d condition.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"choowengyan"},"content":" if (!FamilyCondition.isValidFamilyCondition(trimmedFamilyCondition)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"choowengyan"},"content":" throw new ParseException(FamilyCondition.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"choowengyan"},"content":" return new FamilyCondition(trimmedFamilyCondition);","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"choowengyan"},"content":" * Parses a {@code String hobby} into an {@code Hobby}.","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"choowengyan"},"content":" * @throws ParseException if the given {@code hobby} is invalid.","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"choowengyan"},"content":" public static Hobby parseHobby(String hobby) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"choowengyan"},"content":" requireNonNull(hobby);","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"choowengyan"},"content":" String trimmedEmail \u003d hobby.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"choowengyan"},"content":" if (!Hobby.isValidHobby(trimmedEmail)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"choowengyan"},"content":" throw new ParseException(Hobby.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"choowengyan"},"content":" return new Hobby(trimmedEmail);","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":142,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" String parsedTag \u003d removeExtraSpaces(tag.trim().toLowerCase());","lastModifiedDate":"2024-03-22"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":" if (!Tag.isValidTagName(parsedTag)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":" if (!Tag.isValidTagLength(parsedTag)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":" throw new ParseException(Tag.MESSAGE_LENGTH_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":150,"author":{"gitId":"NeoHW"},"content":" return new Tag(parsedTag);","lastModifiedDate":"2024-03-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":164,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":165,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":166,"author":{"gitId":"NeoHW"},"content":" * Removes extra spaces between words.","lastModifiedDate":"2024-03-22"},{"lineNumber":167,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-03-22"},{"lineNumber":168,"author":{"gitId":"NeoHW"},"content":" * @param toBeProcessed The string to be processed.","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"NeoHW"},"content":" * @return The string with extra spaces removed.","lastModifiedDate":"2024-03-22"},{"lineNumber":170,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":171,"author":{"gitId":"NeoHW"},"content":" public static String removeExtraSpaces(String toBeProcessed) {","lastModifiedDate":"2024-03-22"},{"lineNumber":172,"author":{"gitId":"NeoHW"},"content":" return Arrays.stream(toBeProcessed.split(\"\\\\s+\"))","lastModifiedDate":"2024-03-22"},{"lineNumber":173,"author":{"gitId":"NeoHW"},"content":" .filter(word -\u003e !word.isEmpty())","lastModifiedDate":"2024-03-22"},{"lineNumber":174,"author":{"gitId":"NeoHW"},"content":" .collect(Collectors.joining(\" \"));","lastModifiedDate":"2024-03-22"},{"lineNumber":175,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":176,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":177,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"SherisseTJW"},"content":" * Parses a {@param String event} into a {@code Event}.","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"SherisseTJW"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"SherisseTJW"},"content":" * @throws ParseException if the given {@code event} is invalid.","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"SherisseTJW"},"content":" public static Event parseEvent(String name, String event) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":184,"author":{"gitId":"SherisseTJW"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"SherisseTJW"},"content":" String trimmedEventDateTimeStr \u003d event.trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"SherisseTJW"},"content":" requireAllNonNull(name, event);","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"SherisseTJW"},"content":" if (!Event.isValidEvent(trimmedEventDateTimeStr)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":189,"author":{"gitId":"SherisseTJW"},"content":" throw new ParseException(Event.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"SherisseTJW"},"content":" return new Event(trimmedName, trimmedEventDateTimeStr);","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":196,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"SherisseTJW"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"SherisseTJW"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-13"},{"lineNumber":199,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":200,"author":{"gitId":"SherisseTJW"},"content":" public static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-13"},{"lineNumber":201,"author":{"gitId":"SherisseTJW"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-13"},{"lineNumber":202,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"SherisseTJW":28,"ZhiWei1010":1,"choowengyan":59,"NeoHW":22,"-":93}},{"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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.UniquePatientList;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * Duplicates are not allowed (by .isSamePatient comparison)","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" private final UniquePatientList patients;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" patients \u003d new UniquePatientList();","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Creates an AddressBook using the Patients in the {@code toBeCopied}","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Replaces the contents of the patient list with {@code patients}.","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" * {@code patients} must not contain duplicate patients.","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" public void setPatients(List\u003cPatient\u003e patients) {","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" this.patients.setPatients(patients);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" setPatients(newData.getPatientList());","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" //// patient-level operations","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" * Returns true if a patient with the same identity as {@code patient} exists in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" public boolean hasPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" return patients.contains(patient);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Adds a patient to the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" * The patient must not already exist in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" public void addPatient(Patient p) {","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" patients.add(p);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Replaces the given patient {@code target} in the list with {@code editedPatient}.","lastModifiedDate":"2024-03-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" * The patient identity of {@code editedPatient} must not be the","lastModifiedDate":"2024-03-08"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" * same as another existing patient in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" public void setPatient(Patient target, Patient editedPatient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" requireNonNull(editedPatient);","lastModifiedDate":"2024-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" patients.setPatient(target, editedPatient);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void removePatient(Patient key) {","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" patients.remove(key);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" .add(\"patients\", patients)","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public ObservableList\u003cPatient\u003e getPatientList() {","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" return patients.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-09"},{"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":"-"},"content":" if (!(other instanceof AddressBook)) {","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":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" return patients.equals(otherAddressBook.patients);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" return patients.hashCode();","lastModifiedDate":"2024-03-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"NeoHW":33,"-":98}},{"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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" Predicate\u003cPatient\u003e PREDICATE_SHOW_ALL_PATIENTS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Returns true if a patient with the same identity as {@code patient} exists in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" boolean hasPatient(Patient patient);","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" * Deletes the given patient.","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" * The patient must exist in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" void deletePatient(Patient target);","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" * Adds the given patient.","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" * {@code patient} must not already exist in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" void addPatient(Patient patient);","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" * Replaces the given patient {@code target} with {@code editedPatient}.","lastModifiedDate":"2024-03-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" * The patient identity of {@code editedPatient} must not be the same as","lastModifiedDate":"2024-03-08"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" * another existing patient in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" void setPatient(Patient target, Patient editedPatient);","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" /** Returns an unmodifiable view of the filtered patient list */","lastModifiedDate":"2024-03-08"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" ObservableList\u003cPatient\u003e getFilteredPatientList();","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" * Updates the filter of the filtered patient list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" void updateFilteredPatientList(Predicate\u003cPatient\u003e predicate);","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"ZhiWei1010":1,"NeoHW":18,"-":70}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" private final FilteredList\u003cPatient\u003e filteredPatients;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" filteredPatients \u003d new FilteredList\u003c\u003e(this.addressBook.getPatientList());","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public boolean hasPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-08"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" return addressBook.hasPatient(patient);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void deletePatient(Patient target) {","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" addressBook.removePatient(target);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void addPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" addressBook.addPatient(patient);","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" updateFilteredPatientList(PREDICATE_SHOW_ALL_PATIENTS);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void setPatient(Patient target, Patient editedPatient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" requireAllNonNull(target, editedPatient);","lastModifiedDate":"2024-03-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" addressBook.setPatient(target, editedPatient);","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Patient 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-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":" * Returns an unmodifiable view of the list of {@code Patient} backed by the internal list of","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public ObservableList\u003cPatient\u003e getFilteredPatientList() {","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":" return filteredPatients;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void updateFilteredPatientList(Predicate\u003cPatient\u003e predicate) {","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":" filteredPatients.setPredicate(predicate);","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" \u0026\u0026 filteredPatients.equals(otherModelManager.filteredPatients);","lastModifiedDate":"2024-03-08"},{"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":{"NeoHW":21,"-":127}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * Returns an unmodifiable view of the patients list.","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" * This list will not contain any duplicate patients.","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" ObservableList\u003cPatient\u003e getPatientList();","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"NeoHW":4,"-":13}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"patientsync.json\");","lastModifiedDate":"2024-03-21"},{"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":{"ZhiWei1010":1,"-":87}},{"path":"src/main/java/seedu/address/model/patient/EditPatientDescriptor.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SherisseTJW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"SherisseTJW"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":" * Stores the details to edit the patient with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":" * corresponding field value of the patient.","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":"public class EditPatientDescriptor {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" private PatientHospitalId patientHospitalId;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":" private Name name;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":" private PreferredName preferredName;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":" private FoodPreference foodPreference;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":" private FamilyCondition familyCondition;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" private Hobby hobby;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"SherisseTJW"},"content":" private Set\u003cEvent\u003e events;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":" public EditPatientDescriptor() {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":" public EditPatientDescriptor(EditPatientDescriptor toCopy) {","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" setPatientHospitalId(toCopy.patientHospitalId);","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":" setName(toCopy.name);","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" setPreferredName(toCopy.preferredName);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" setFoodPreference(toCopy.foodPreference);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" setFamilyCondition(toCopy.familyCondition);","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" setHobby(toCopy.hobby);","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":" setEvents(toCopy.events);","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" return CollectionUtil.isAnyNonNull(patientHospitalId, name, preferredName, foodPreference, familyCondition,","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":" hobby, tags, events);","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" public void setPatientHospitalId(PatientHospitalId id) {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" this.patientHospitalId \u003d id;","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" public Optional\u003cPatientHospitalId\u003e getPatientHospitalId() {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" return Optional.ofNullable(patientHospitalId);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"SherisseTJW"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"SherisseTJW"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"SherisseTJW"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"SherisseTJW"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":" public void setPreferredName(PreferredName preferredName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":" this.preferredName \u003d preferredName;","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"choowengyan"},"content":" public Optional\u003cPreferredName\u003e getPreferredName() {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"choowengyan"},"content":" return Optional.ofNullable(preferredName);","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"choowengyan"},"content":" public void setFoodPreference(FoodPreference foodPreference) {","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"choowengyan"},"content":" this.foodPreference \u003d foodPreference;","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"choowengyan"},"content":" public Optional\u003cFoodPreference\u003e getFoodPreference() {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"choowengyan"},"content":" return Optional.ofNullable(foodPreference);","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"choowengyan"},"content":" public void setFamilyCondition(FamilyCondition familyCondition) {","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"choowengyan"},"content":" this.familyCondition \u003d familyCondition;","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"choowengyan"},"content":" public Optional\u003cFamilyCondition\u003e getFamilyCondition() {","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"choowengyan"},"content":" return Optional.ofNullable(familyCondition);","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"choowengyan"},"content":" public void setHobby(Hobby hobby) {","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"choowengyan"},"content":" this.hobby \u003d hobby;","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"choowengyan"},"content":" public Optional\u003cHobby\u003e getHobby() {","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"choowengyan"},"content":" return Optional.ofNullable(hobby);","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"SherisseTJW"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"SherisseTJW"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"SherisseTJW"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"SherisseTJW"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"SherisseTJW"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"SherisseTJW"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"SherisseTJW"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"SherisseTJW"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"SherisseTJW"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"SherisseTJW"},"content":" public Optional\u003cSet\u003cEvent\u003e\u003e getEvents() {","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"SherisseTJW"},"content":" return events !\u003d null ? Optional.of(Collections.unmodifiableSet(events)) : Optional.empty();","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"SherisseTJW"},"content":" public void setEvents(Set\u003cEvent\u003e events) {","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"SherisseTJW"},"content":" this.events \u003d events !\u003d null ? new HashSet\u003c\u003e(events) : null;","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"SherisseTJW"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"SherisseTJW"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"SherisseTJW"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"SherisseTJW"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"SherisseTJW"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"SherisseTJW"},"content":" if (!(other instanceof EditPatientDescriptor)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"SherisseTJW"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"SherisseTJW"},"content":" EditPatientDescriptor otherEditPatientDescriptor \u003d (EditPatientDescriptor) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"choowengyan"},"content":" return Objects.equals(patientHospitalId, otherEditPatientDescriptor.patientHospitalId)","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 Objects.equals(name, otherEditPatientDescriptor.name)","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 Objects.equals(preferredName, otherEditPatientDescriptor.preferredName)","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 Objects.equals(foodPreference, otherEditPatientDescriptor.foodPreference)","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 Objects.equals(familyCondition, otherEditPatientDescriptor.familyCondition)","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 Objects.equals(hobby, otherEditPatientDescriptor.hobby)","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPatientDescriptor.tags)","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 Objects.equals(events, otherEditPatientDescriptor.events);","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"SherisseTJW"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"SherisseTJW"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"SherisseTJW"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"choowengyan"},"content":" .add(\"patientHospitalId\", patientHospitalId)","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"SherisseTJW"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"choowengyan"},"content":" .add(\"preferredName\", preferredName)","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"choowengyan"},"content":" .add(\"foodPreference\", foodPreference)","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"choowengyan"},"content":" .add(\"familyCondition\", familyCondition)","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"choowengyan"},"content":" .add(\"hobby\", hobby)","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"SherisseTJW"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"SherisseTJW"},"content":" .add(\"events\", events)","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"SherisseTJW"},"content":" .toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"SherisseTJW"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"SherisseTJW":112,"choowengyan":50}},{"path":"src/main/java/seedu/address/model/patient/Event.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SherisseTJW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"SherisseTJW"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":" * Represents Events for a Patient","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":"public class Event implements Comparable\u003cEvent\u003e {","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":" \"Dates should be in the format: DD-MM-YYYY, HH:mm - HH:mm, OR if there is no time period,\"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":" + \"in the format: DD-MM-YYYY\";","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":" public static final String DATE_PATTERN \u003d \"dd-MM-yyyy\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":" public static final String TIME_PATTERN \u003d \"HH:mm\";","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"SherisseTJW"},"content":" /** The name of the Event */","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":" public final String name;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"SherisseTJW"},"content":" /** The Date of the Event */","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":" public final String date;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":" /** The Start Time of the Event, null if there is no specific start time */","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":" public final String startTime;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":" /** The End Time of the Event, null if there is no specific end time */","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" public final String endTime;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":" * Constructs a {@Code Event}","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" * @param event","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":" public Event(String name, String event) {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" event \u003d event.strip();","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":" checkArgument(isValidEvent(event), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":" String[] args \u003d extractDateTimeArgs(event);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" this.date \u003d args[0];","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":" this.startTime \u003d args[1];","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":" this.endTime \u003d args[2];","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"SherisseTJW"},"content":" * Returns true if the given string is a valid Date / Datetime String","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"SherisseTJW"},"content":" * @param test the given string","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"SherisseTJW"},"content":" * @return true if the {@param test} is valid,","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"SherisseTJW"},"content":" * false is the {@param test} is not valid","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"SherisseTJW"},"content":" public static boolean isValidEvent(String test) {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SherisseTJW"},"content":" String[] args \u003d test.split(\",\");","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"SherisseTJW"},"content":" try {","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"SherisseTJW"},"content":" LocalDate.parse(args[0].trim(), DateTimeFormatter.ofPattern(DATE_PATTERN));","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SherisseTJW"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SherisseTJW"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"SherisseTJW"},"content":" if (args.length \u003e 1) {","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"SherisseTJW"},"content":" return isValidDateTimeStr(args[1]);","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SherisseTJW"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"SherisseTJW"},"content":" * Returns true if the given string is a valid time String","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"SherisseTJW"},"content":" * @param timeStr the given string","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"SherisseTJW"},"content":" * @return true if the {@param timeStr} is valid,","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"SherisseTJW"},"content":" * false is the {@param timeStr} is not valid","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"SherisseTJW"},"content":" public static boolean isValidDateTimeStr(String timeStr) {","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"SherisseTJW"},"content":" String[] args \u003d timeStr.split(\"-\");","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"SherisseTJW"},"content":" try {","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"SherisseTJW"},"content":" LocalTime.parse(args[0].trim(), DateTimeFormatter.ofPattern(TIME_PATTERN)); // start time","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"SherisseTJW"},"content":" LocalTime.parse(args[1].trim(), DateTimeFormatter.ofPattern(TIME_PATTERN)); // end time","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"SherisseTJW"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"SherisseTJW"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"SherisseTJW"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" * Extracts the date and/or time arguments from the user input","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"SherisseTJW"},"content":" * @param userInput","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"SherisseTJW"},"content":" * @return a String[] of the arguments extracted","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"SherisseTJW"},"content":" public static String[] extractDateTimeArgs(String userInput) {","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"SherisseTJW"},"content":" String[] args \u003d userInput.split(\",\");","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"SherisseTJW"},"content":" args[0] \u003d args[0].strip();","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" String[] temp \u003d new String[2];","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"SherisseTJW"},"content":" if (args.length \u003e 1) {","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"SherisseTJW"},"content":" temp \u003d args[1].split(\"-\");","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"SherisseTJW"},"content":" temp[0] \u003d temp[0].strip();","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"SherisseTJW"},"content":" temp[1] \u003d temp[1].strip();","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"SherisseTJW"},"content":" } else {","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"SherisseTJW"},"content":" temp[0] \u003d null;","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"SherisseTJW"},"content":" temp[1] \u003d null;","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"SherisseTJW"},"content":" return new String[] {args[0], temp[0], temp[1]};","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"SherisseTJW"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"SherisseTJW"},"content":" public int compareTo(Event other) {","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"SherisseTJW"},"content":" if (!this.date.equals(other.date)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"SherisseTJW"},"content":" return this.date.compareTo(other.date);","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"SherisseTJW"},"content":" if (this.startTime !\u003d null \u0026\u0026 other.startTime !\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"SherisseTJW"},"content":" // If both events have time information, sort by start time then end time","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"SherisseTJW"},"content":" if (!this.startTime.equals(other.startTime)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"SherisseTJW"},"content":" return this.startTime.compareTo(other.startTime);","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"SherisseTJW"},"content":" if (!this.endTime.equals(other.endTime)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"SherisseTJW"},"content":" return this.endTime.compareTo(other.endTime);","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":136,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":137,"author":{"gitId":"SherisseTJW"},"content":" // If only 1 event has time information, that event should be sorted behind","lastModifiedDate":"2024-03-23"},{"lineNumber":138,"author":{"gitId":"SherisseTJW"},"content":" if (this.startTime !\u003d null \u0026\u0026 other.startTime \u003d\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":139,"author":{"gitId":"SherisseTJW"},"content":" return 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":140,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":141,"author":{"gitId":"SherisseTJW"},"content":" if (this.startTime \u003d\u003d null \u0026\u0026 other.startTime !\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"SherisseTJW"},"content":" return -1;","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"SherisseTJW"},"content":" // If all date / datetime information is the same, sort by name","lastModifiedDate":"2024-03-23"},{"lineNumber":146,"author":{"gitId":"SherisseTJW"},"content":" return this.name.compareTo(other.name);","lastModifiedDate":"2024-03-23"},{"lineNumber":147,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":148,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"SherisseTJW"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"SherisseTJW"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"SherisseTJW"},"content":" // If there is a start time, there must be a end time","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"SherisseTJW"},"content":" if (this.startTime !\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"SherisseTJW"},"content":" return String.format(\"%s (%s, from %s to %s)\", this.name, this.date, this.startTime, this.endTime);","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"SherisseTJW"},"content":" return String.format(\"%s (%s)\", this.name, this.date);","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"SherisseTJW"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"SherisseTJW"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"SherisseTJW"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"SherisseTJW"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"SherisseTJW"},"content":" if (!(other instanceof Event)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"SherisseTJW"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"SherisseTJW"},"content":" Event otherEvent \u003d (Event) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"SherisseTJW"},"content":" if (this.startTime \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"SherisseTJW"},"content":" return this.name.equals(otherEvent.name)","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 this.date.equals(otherEvent.date);","lastModifiedDate":"2024-03-18"},{"lineNumber":173,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"SherisseTJW"},"content":" return this.name.equals(otherEvent.name)","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 this.date.equals(otherEvent.date)","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 this.startTime.equals(otherEvent.startTime)","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 this.endTime.equals(otherEvent.endTime);","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"SherisseTJW"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":182,"author":{"gitId":"SherisseTJW"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"SherisseTJW"},"content":" return date.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":184,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":185,"author":{"gitId":"SherisseTJW"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"SherisseTJW":185}},{"path":"src/main/java/seedu/address/model/patient/FamilyCondition.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"choowengyan"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"choowengyan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":" * Represents a Patient\u0027s family condition in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidFamilyCondition(String)}","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"public class FamilyCondition {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":" \"Family condition can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":" public final String familyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":" * Constructs a {@code FamilyCondition}.","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":" * @param condition A valid family condition.","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" public FamilyCondition(String condition) {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":" requireNonNull(condition);","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" checkArgument(isValidFamilyCondition(condition), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":" familyCondition \u003d condition;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":" * Returns true if a given string is a valid family condition.","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" public static boolean isValidFamilyCondition(String test) {","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" return familyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" if (!(other instanceof FamilyCondition)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" FamilyCondition otherFamilyCondition \u003d (FamilyCondition) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" return familyCondition.equals(otherFamilyCondition.familyCondition);","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" return familyCondition.hashCode();","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"choowengyan":61}},{"path":"src/main/java/seedu/address/model/patient/FoodPreference.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":" * Represents a Patient\u0027s preferred food in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidFood(String)}","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"public class FoodPreference {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Food preferences can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-12"},{"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":"choowengyan"},"content":" public final String foodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" * Constructs an {@code FoodPreference}.","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" * @param food A valid food preference.","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" public FoodPreference(String food) {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" requireNonNull(food);","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" checkArgument(isValidFoodPreference(food), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":" foodPreference \u003d food;","lastModifiedDate":"2024-03-12"},{"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":"choowengyan"},"content":" * Returns true if a given string is a valid food details.","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" public static boolean isValidFoodPreference(String test) {","lastModifiedDate":"2024-03-18"},{"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":"choowengyan"},"content":" return foodPreference;","lastModifiedDate":"2024-03-12"},{"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":"choowengyan"},"content":" if (!(other instanceof FoodPreference)) {","lastModifiedDate":"2024-03-12"},{"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":"choowengyan"},"content":" FoodPreference otherFoodPreference \u003d (FoodPreference) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" return foodPreference.equals(otherFoodPreference.foodPreference);","lastModifiedDate":"2024-03-12"},{"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":"choowengyan"},"content":" return foodPreference.hashCode();","lastModifiedDate":"2024-03-12"},{"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":{"choowengyan":18,"NeoHW":1,"-":46}},{"path":"src/main/java/seedu/address/model/patient/Hobby.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":" * Represents a Patient\u0027s hobby in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidHobby(String)}","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"public class Hobby {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Hobby can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":" public final String hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" * Constructs a {@code Hobby}.","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":" * @param description A valid hobby.","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":" public Hobby(String description) {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" requireNonNull(description);","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":" checkArgument(isValidHobby(description), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" hobby \u003d description;","lastModifiedDate":"2024-03-12"},{"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":"choowengyan"},"content":" * Returns true if a given string is a valid hobby.","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" public static boolean isValidHobby(String test) {","lastModifiedDate":"2024-03-12"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" return hobby;","lastModifiedDate":"2024-03-12"},{"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 boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"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":"choowengyan"},"content":" if (!(other instanceof Hobby)) {","lastModifiedDate":"2024-03-12"},{"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":"choowengyan"},"content":" Hobby otherHobby \u003d (Hobby) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" return hobby.equals(otherHobby.hobby);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" return hobby.hashCode();","lastModifiedDate":"2024-03-12"},{"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"}],"authorContributionMap":{"choowengyan":19,"NeoHW":1,"-":40}},{"path":"src/main/java/seedu/address/model/patient/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * Represents a Patient\u0027s name in the address book.","lastModifiedDate":"2024-03-08"},{"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":{"NeoHW":2,"-":65}},{"path":"src/main/java/seedu/address/model/patient/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * Tests that a {@code Patient}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPatient\u003e {","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public boolean test(Patient patient) {","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(patient.getName().fullName,","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" keyword));","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"guohuang88":1,"choowengyan":1,"NeoHW":4,"-":39}},{"path":"src/main/java/seedu/address/model/patient/Patient.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * Represents a Patient in the address book.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":"public class Patient {","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":" private final PatientHospitalId patientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":" private final PreferredName preferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" private final FoodPreference foodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":" private final FamilyCondition familyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" private final Hobby hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":" private final Set\u003cEvent\u003e events \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"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":"choowengyan"},"content":" public Patient(PatientHospitalId patientHospitalId, Name name, PreferredName preferredName,","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" FoodPreference foodPreference, FamilyCondition familyCondition, Hobby hobby,","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" requireAllNonNull(patientHospitalId, name, preferredName, foodPreference, familyCondition, hobby, tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" this.patientHospitalId \u003d patientHospitalId;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" this.preferredName \u003d preferredName;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" this.foodPreference \u003d foodPreference;","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" this.familyCondition \u003d familyCondition;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" this.hobby \u003d hobby;","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" * Constructs a Patient with {@param patientHospitalId},{@param name}, {@param preferredName},","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" * {@param foodPreference}, {@param familyCondition}, {@param hobby},{@param tags}, {@param events}","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" * @param patientHospitalId patient\u0027s hospital ID","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" * @param name patient\u0027s full name","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" * @param preferredName patient\u0027s preferred name","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" * @param foodPreference patient\u0027s preferred food","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" * @param familyCondition patient\u0027s family condition","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":" * @param hobby patient\u0027s hobby","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" * @param tags tag for patient","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"SherisseTJW"},"content":" * @param events","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":" public Patient(PatientHospitalId patientHospitalId, Name name, PreferredName preferredName,","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":" FoodPreference foodPreference, FamilyCondition familyCondition, Hobby hobby,","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cTag\u003e tags, Set\u003cEvent\u003e events) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" requireAllNonNull(patientHospitalId, name, preferredName, foodPreference, familyCondition, hobby, tags);","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"choowengyan"},"content":" this.patientHospitalId \u003d patientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" this.preferredName \u003d preferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":" this.foodPreference \u003d foodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":" this.familyCondition \u003d familyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":" this.hobby \u003d hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"SherisseTJW"},"content":" this.events.addAll(events);","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"choowengyan"},"content":" public PatientHospitalId getPatientHospitalId() {","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"choowengyan"},"content":" return patientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"choowengyan"},"content":" public PreferredName getPreferredName() {","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"choowengyan"},"content":" return preferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"choowengyan"},"content":" public FamilyCondition getFamilyCondition() {","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"choowengyan"},"content":" return familyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"choowengyan"},"content":" public FoodPreference getFoodPreference() {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"choowengyan"},"content":" return foodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"choowengyan"},"content":" public Hobby getHobby() {","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"choowengyan"},"content":" return hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" * Returns an immutable date set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"SherisseTJW"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"SherisseTJW"},"content":" public Set\u003cEvent\u003e getEvents() {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"SherisseTJW"},"content":" return Collections.unmodifiableSet(this.events);","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":115,"author":{"gitId":"choowengyan"},"content":" * Returns true if both patients have the same patientHospitalId.","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" * This defines a weaker notion of equality between two patients.","lastModifiedDate":"2024-03-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":" public boolean isSamePatient(Patient otherPatient) {","lastModifiedDate":"2024-03-08"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":" if (otherPatient \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":123,"author":{"gitId":"NeoHW"},"content":" return otherPatient !\u003d null","lastModifiedDate":"2024-03-08"},{"lineNumber":124,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 otherPatient.getPatientHospitalId().equals(getPatientHospitalId());","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":" * Returns true if both patients have the same identity and data fields.","lastModifiedDate":"2024-03-08"},{"lineNumber":129,"author":{"gitId":"NeoHW"},"content":" * This defines a stronger notion of equality between two patients.","lastModifiedDate":"2024-03-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":" if (!(other instanceof Patient)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":" Patient otherPatient \u003d (Patient) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":143,"author":{"gitId":"choowengyan"},"content":" return patientHospitalId.equals(otherPatient.patientHospitalId)","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 name.equals(otherPatient.name)","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 preferredName.equals(otherPatient.preferredName)","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 foodPreference.equals(otherPatient.foodPreference)","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 familyCondition.equals(otherPatient.familyCondition)","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 hobby.equals(otherPatient.hobby)","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 tags.equals(otherPatient.tags)","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 events.equals(otherPatient.events);","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":156,"author":{"gitId":"choowengyan"},"content":" return Objects.hash(patientHospitalId, name, preferredName, foodPreference, familyCondition, hobby, tags,","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"SherisseTJW"},"content":" events);","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":163,"author":{"gitId":"choowengyan"},"content":" .add(\"patientHospitalId\", patientHospitalId)","lastModifiedDate":"2024-03-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":165,"author":{"gitId":"choowengyan"},"content":" .add(\"preferredName\", preferredName)","lastModifiedDate":"2024-03-14"},{"lineNumber":166,"author":{"gitId":"choowengyan"},"content":" .add(\"foodPreference\", foodPreference)","lastModifiedDate":"2024-03-14"},{"lineNumber":167,"author":{"gitId":"choowengyan"},"content":" .add(\"familyCondition\", familyCondition)","lastModifiedDate":"2024-03-14"},{"lineNumber":168,"author":{"gitId":"choowengyan"},"content":" .add(\"hobby\", hobby)","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":170,"author":{"gitId":"SherisseTJW"},"content":" .add(\"events\", this.events)","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"SherisseTJW":24,"choowengyan":56,"NeoHW":11,"-":83}},{"path":"src/main/java/seedu/address/model/patient/PatientHospitalId.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"choowengyan"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"choowengyan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":" * Represents a Patient ID in hospital in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPatientHospitalId(String)}","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"public class PatientHospitalId {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":" \"Patient Hospital ID should only contain numeric characters, and it should not be blank\";","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":" /*","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":" public static final String VALIDATION_REGEX \u003d \"^[0-9]+$\";","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":" public final String patientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":" * Constructs a {@code id}.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":" * @param id A valid patient hospital ID.","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" public PatientHospitalId(String id) {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" requireNonNull(id);","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":" checkArgument(isValidPatientHospitalId(id), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" patientHospitalId \u003d id;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" public static boolean isValidPatientHospitalId(String test) {","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" return patientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" if (!(other instanceof PatientHospitalId)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" PatientHospitalId otherId \u003d (PatientHospitalId) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" return patientHospitalId.equals(otherId.patientHospitalId);","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"choowengyan"},"content":" return patientHospitalId.hashCode();","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"choowengyan":67}},{"path":"src/main/java/seedu/address/model/patient/PreferredName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"choowengyan"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"choowengyan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":" * Represents a Patient\u0027s name in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPreferredName(String)}","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"public class PreferredName {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":" \"Preferred name should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":" /*","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":" public final String preferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":" * @param name A valid preferred name.","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" public PreferredName(String name) {","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":" checkArgument(isValidPreferredName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" preferredName \u003d name;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" public static boolean isValidPreferredName(String test) {","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" return preferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" if (!(other instanceof PreferredName)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" PreferredName otherName \u003d (PreferredName) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" return preferredName.equals(otherName.preferredName);","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"choowengyan"},"content":" return preferredName.hashCode();","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"choowengyan":67}},{"path":"src/main/java/seedu/address/model/patient/UniquePatientList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":"import seedu.address.model.patient.exceptions.DuplicatePatientException;","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.exceptions.PatientNotFoundException;","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * A list of patients that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" * A patient is considered unique by comparing using {@code Patient#isSamePatient(Patient)}.","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * As such, adding and updating of patients uses Patient#isSamePatient(Patient) for equality so as to ensure","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" * that the patient being added or updated is unique in terms of identity in the UniquePatientList.","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" * However, the removal of a patient uses Patient#equals(Object) so as to ensure that","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" * the patient with exactly the same fields will be removed.","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * @see Patient#isSamePatient(Patient)","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"public class UniquePatientList implements Iterable\u003cPatient\u003e {","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" private final ObservableList\u003cPatient\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" private final ObservableList\u003cPatient\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" * Returns true if the list contains an equivalent patient as the given argument.","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" public boolean contains(Patient toCheck) {","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" return internalList.stream().anyMatch(toCheck::isSamePatient);","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","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":"NeoHW"},"content":" * Adds a patient to the list.","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" * The patient must not already exist in the list.","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" public void add(Patient toAdd) {","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" throw new DuplicatePatientException();","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" * Replaces the patient {@code target} in the list with {@code editedPatient}.","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" * The patient identity of {@code editedPatient} must not be the same as another existing patient in the list.","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" public void setPatient(Patient target, Patient editedPatient) {","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" requireAllNonNull(target, editedPatient);","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" throw new PatientNotFoundException();","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" if (!target.isSamePatient(editedPatient) \u0026\u0026 contains(editedPatient)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" throw new DuplicatePatientException();","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" internalList.set(index, editedPatient);","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" * Removes the equivalent patient from the list.","lastModifiedDate":"2024-03-08"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" * The patient must exist in the list.","lastModifiedDate":"2024-03-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" public void remove(Patient toRemove) {","lastModifiedDate":"2024-03-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" throw new PatientNotFoundException();","lastModifiedDate":"2024-03-08"},{"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"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" public void setPatients(UniquePatientList replacement) {","lastModifiedDate":"2024-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" * Replaces the contents of this list with {@code patients}.","lastModifiedDate":"2024-03-08"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" * {@code patients} must not contain duplicate patients.","lastModifiedDate":"2024-03-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" public void setPatients(List\u003cPatient\u003e patients) {","lastModifiedDate":"2024-03-08"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" requireAllNonNull(patients);","lastModifiedDate":"2024-03-08"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" if (!patientsAreUnique(patients)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" throw new DuplicatePatientException();","lastModifiedDate":"2024-03-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" internalList.setAll(patients);","lastModifiedDate":"2024-03-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" public ObservableList\u003cPatient\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" public Iterator\u003cPatient\u003e iterator() {","lastModifiedDate":"2024-03-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" if (!(other instanceof UniquePatientList)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" UniquePatientList otherUniquePatientList \u003d (UniquePatientList) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":" return internalList.equals(otherUniquePatientList.internalList);","lastModifiedDate":"2024-03-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" * Returns true if {@code patients} contains only unique patients.","lastModifiedDate":"2024-03-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":" private boolean patientsAreUnique(List\u003cPatient\u003e patients) {","lastModifiedDate":"2024-03-08"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":" for (int i \u003d 0; i \u003c patients.size() - 1; i++) {","lastModifiedDate":"2024-03-08"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" for (int j \u003d i + 1; j \u003c patients.size(); j++) {","lastModifiedDate":"2024-03-08"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":" if (patients.get(i).isSamePatient(patients.get(j))) {","lastModifiedDate":"2024-03-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return false;","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":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"NeoHW":50,"-":101}},{"path":"src/main/java/seedu/address/model/patient/exceptions/DuplicatePatientException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient.exceptions;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":" * Signals that the operation will result in duplicate Patients (Patients are considered duplicates","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" * if they have the same identity).","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"public class DuplicatePatientException extends RuntimeException {","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":" public DuplicatePatientException() {","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" super(\"Operation would result in duplicate patients\");","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"NeoHW":11}},{"path":"src/main/java/seedu/address/model/patient/exceptions/PatientNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient.exceptions;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":" * Signals that the operation is unable to find the specified patient.","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"public class PatientNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"NeoHW":6}},{"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":"NeoHW"},"content":" public static final int MAX_TAG_LENGTH \u003d 50;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_LENGTH_CONSTRAINTS \u003d \"Tag names must be less than \"","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" + MAX_TAG_LENGTH + \" characters\";","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tag names must not be empty, less than\" + MAX_TAG_LENGTH","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" + \" characters and can only contain alphanumeric characters or spaces\";","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" public static final String VALIDATION_REGEX \u003d \"^[\\\\p{Alnum}][\\\\p{Alnum} ]*$\";","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" public Tag(String tagName) throws IllegalArgumentException {","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" checkArgument(tagName.length() \u003c\u003d MAX_TAG_LENGTH, MESSAGE_LENGTH_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" * Returns true if a given string is of valid tag length.","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" public static boolean isValidTagLength(String test) {","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" return test.length() \u003c\u003d MAX_TAG_LENGTH;","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-23"},{"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 Tag)) {","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":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","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 tagName.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"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","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":{"NeoHW":15,"-":58}},{"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":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-12"},{"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":"NeoHW"},"content":" public static Patient[] getSamplePatients() {","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" return new Patient[] {","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" new Patient(new PatientHospitalId(\"12345\"), new Name(\"Alex Yeoh Jia Jun\"), new PreferredName(\"Alex\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":" new FoodPreference(\"Curry chicken\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" new FamilyCondition(\"Stable, Has 2 sons that visits him regularly\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" new Hobby(\"Singing karaoke\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":" getTagSet(\"diabetes\"), getEventSet(new String[] {\"Birthday\"}, new String[] {\"20-01-2022\"})),","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":" new Patient(new PatientHospitalId(\"12346\"), new Name(\"Bernice Yu Sheng Huat\"), new PreferredName(\"Bern\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" new FoodPreference(\"Char Kuay Tiao, Black Carrot Cake\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" new FamilyCondition(\"Lives alone, no family members around\"), new Hobby(\"Playing Mahjong\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":" getTagSet(\"HighBloodPressure\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":" getEventSet(new String[] {\"Family Visit\"}, new String[] {\"30-03-2022, 15:00 - 18:00\"})),","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" new Patient(new PatientHospitalId(\"12347\"), new Name(\"Mary Jane\"), new PreferredName(\"Mary\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" new FoodPreference(\"Korean\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" new FamilyCondition(\"Lives with only daughter, quarrels regularly with daughter\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" new Hobby(\"Watching Drama\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" getTagSet(\"heart\")),","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" new Patient(new PatientHospitalId(\"12348\"), new Name(\"David Li\"), new PreferredName(\"David\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" new FoodPreference(\"Bak Kut Teh\"), new FamilyCondition(\"Son visits him every weekend\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" new Hobby(\"Plays erhu\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" getTagSet(\"diabetes\", \"skin\")),","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" new Patient(new PatientHospitalId(\"12349\"), new Name(\"Irfan Ibrahim\"), new PreferredName(\"Fan\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" new FoodPreference(\"Roti Prata\"), new FamilyCondition(\"Children encountered accident 2 months ago\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" new Hobby(\"Plays badminton\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" getTagSet(\"tumour\")),","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" new Patient(new PatientHospitalId(\"12350\"), new Name(\"Roy Balakrishnan\"), new PreferredName(\"Rony\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" new FoodPreference(\"Fish Ball Soup\"), new FamilyCondition(\"Financial problem\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" new Hobby(\"Jog around park\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" getTagSet(\"wheelchair\")),","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" for (Patient samplePatient : getSamplePatients()) {","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" sampleAb.addPatient(samplePatient);","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":" * Returns a set of Events containing the list of strings given.","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"SherisseTJW"},"content":" public static Set\u003cEvent\u003e getEventSet(String[] names, String[] dates) {","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"SherisseTJW"},"content":" Event[] events \u003d new Event[names.length];","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"SherisseTJW"},"content":" for (int i \u003d 0; i \u003c names.length; i++) {","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"SherisseTJW"},"content":" events[i] \u003d new Event(names[i], dates[i]);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"SherisseTJW"},"content":" return Arrays.stream(events).collect(Collectors.toSet());","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"SherisseTJW":16,"choowengyan":29,"NeoHW":6,"-":33}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedEvent.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SherisseTJW"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":" * Jackson-friendly version of {@link Event}.","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"public class JsonAdaptedEvent {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":" private final String name;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":" private final String dateTime;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":" * Constructs a {@code JsonAdaptedEvent} with the given {@code eventName}, {@code dateTime}","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SherisseTJW"},"content":" @JsonCreator","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":" public JsonAdaptedEvent(@JsonProperty(\"name\") String name,","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":" @JsonProperty(\"dateTime\") String dateTime) {","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SherisseTJW"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":" * Converts a given {@code Event} into this class for Jackson use.","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" public JsonAdaptedEvent(Event source) {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":" this.name \u003d source.name;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":" this.dateTime \u003d convertToExpectedDateTimeFormat(source.date, source.startTime, source.endTime);","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Event} object.","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted Event.","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":" public Event toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":" if (!Event.isValidEvent(this.dateTime)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":" throw new IllegalValueException(Event.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" return new Event(this.name, this.dateTime);","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":" private String convertToExpectedDateTimeFormat(String date, String startTime, String endTime) {","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":" if (startTime \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" return date;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SherisseTJW"},"content":" return String.format(\"%s, %s - %s\", date, startTime, endTime);","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SherisseTJW"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SherisseTJW":54}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPatient.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":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * Jackson-friendly version of {@link Patient}.","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"class JsonAdaptedPatient {","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Patient\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":" private final String patientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" private final String preferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" private final String foodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" private final String familyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" private final String hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":" private final List\u003cJsonAdaptedEvent\u003e events \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" * Constructs a {@code JsonAdaptedPatient} with the given patient details.","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" public JsonAdaptedPatient(@JsonProperty(\"patientHospitalId\") String patientHospitalId,","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" @JsonProperty(\"name\") String name, @JsonProperty(\"preferredName\") String preferredName,","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" @JsonProperty(\"foodPreference\") String foodPreference,","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" @JsonProperty(\"familyCondition\") String familyCondition,","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" @JsonProperty(\"hobby\") String hobby,","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" @JsonProperty(\"events\") List\u003cJsonAdaptedEvent\u003e events) {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" this.patientHospitalId \u003d patientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" this.preferredName \u003d preferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" this.foodPreference \u003d foodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" this.familyCondition \u003d familyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" this.hobby \u003d hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"SherisseTJW"},"content":" if (events !\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SherisseTJW"},"content":" this.events.addAll(events);","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-15"},{"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":"choowengyan"},"content":" * Converts a given {@code Patient} into this class for Alex use.","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" public JsonAdaptedPatient(Patient source) {","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":" patientHospitalId \u003d source.getPatientHospitalId().patientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":" preferredName \u003d source.getPreferredName().preferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":" foodPreference \u003d source.getFoodPreference().foodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":" familyCondition \u003d source.getFamilyCondition().familyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"choowengyan"},"content":" hobby \u003d source.getHobby().hobby;","lastModifiedDate":"2024-03-12"},{"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":"SherisseTJW"},"content":" events.addAll(source.getEvents().stream()","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"SherisseTJW"},"content":" .map(JsonAdaptedEvent::new)","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"SherisseTJW"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","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":"NeoHW"},"content":" * Converts this Jackson-friendly adapted patient object into the model\u0027s {@code Patient} object.","lastModifiedDate":"2024-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted patient.","lastModifiedDate":"2024-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" public Patient toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-08"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" final List\u003cTag\u003e patientTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" patientTags.add(tag.toModelType());","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"SherisseTJW"},"content":" final List\u003cEvent\u003e patientEvents \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"SherisseTJW"},"content":" for (JsonAdaptedEvent date : events) {","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"SherisseTJW"},"content":" patientEvents.add(date.toModelType());","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"choowengyan"},"content":" if (patientHospitalId \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"choowengyan"},"content":" PatientHospitalId.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"choowengyan"},"content":" if (!PatientHospitalId.isValidPatientHospitalId(patientHospitalId)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(PatientHospitalId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"choowengyan"},"content":" final PatientHospitalId modelPatientHospitalId \u003d new PatientHospitalId(patientHospitalId);","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"choowengyan"},"content":" if (preferredName \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"choowengyan"},"content":" PreferredName.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"choowengyan"},"content":" if (!PreferredName.isValidPreferredName(preferredName)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(PreferredName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"choowengyan"},"content":" final PreferredName modelPreferredName \u003d new PreferredName(preferredName);","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"choowengyan"},"content":" if (foodPreference \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"choowengyan"},"content":" FoodPreference.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"choowengyan"},"content":" if (!FoodPreference.isValidFoodPreference(foodPreference)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(FoodPreference.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"choowengyan"},"content":" final FoodPreference modelFoodPreference \u003d new FoodPreference(foodPreference);","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"choowengyan"},"content":" if (familyCondition \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"choowengyan"},"content":" FamilyCondition.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"choowengyan"},"content":" if (!FamilyCondition.isValidFamilyCondition(familyCondition)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(FamilyCondition.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"choowengyan"},"content":" final FamilyCondition modelFamilyCondition \u003d new FamilyCondition(familyCondition);","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":144,"author":{"gitId":"choowengyan"},"content":" if (hobby \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Hobby.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"choowengyan"},"content":" if (!Hobby.isValidHobby(hobby)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(Hobby.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"choowengyan"},"content":" final Hobby modelHobby \u003d new Hobby(hobby);","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(patientTags);","lastModifiedDate":"2024-03-09"},{"lineNumber":153,"author":{"gitId":"SherisseTJW"},"content":" final Set\u003cEvent\u003e modelEvents \u003d new HashSet\u003c\u003e(patientEvents);","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":155,"author":{"gitId":"choowengyan"},"content":" return new Patient(modelPatientHospitalId, modelName, modelPreferredName, modelFoodPreference,","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"SherisseTJW"},"content":" modelFamilyCondition, modelHobby, modelTags, modelEvents);","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"SherisseTJW":20,"choowengyan":64,"NeoHW":11,"-":64}},{"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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public static final String MESSAGE_DUPLICATE_PATIENT \u003d \"Patients list contains duplicate patient(s).\";","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" private final List\u003cJsonAdaptedPatient\u003e patients \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given patients.","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"patients\") List\u003cJsonAdaptedPatient\u003e patients) {","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" this.patients.addAll(patients);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" patients.addAll(source.getPatientList().stream().map(JsonAdaptedPatient::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" for (JsonAdaptedPatient jsonAdaptedPatient : patients) {","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" Patient patient \u003d jsonAdaptedPatient.toModelType();","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" if (addressBook.hasPatient(patient)) {","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PATIENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" addressBook.addPatient(patient);","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":12,"-":48}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" private PatientListPanel patientListPanel;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" private StackPane patientListPanelPlaceholder;","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" patientListPanel \u003d new PatientListPanel(logic.getFilteredPatientList());","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" patientListPanelPlaceholder.getChildren().add(patientListPanel.getRoot());","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public PatientListPanel getPatientListPanel() {","lastModifiedDate":"2024-03-09"},{"lineNumber":167,"author":{"gitId":"NeoHW"},"content":" return patientListPanel;","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":6,"-":190}},{"path":"src/main/java/seedu/address/ui/PatientCard.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":"SherisseTJW"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * An UI component that displays information of a {@code Patient}.","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"public class PatientCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" private static final String FXML \u003d \"PatientListCard.fxml\";","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"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":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" public final Patient patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" private Label patientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" private Label preferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" private Label foodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" @FXML","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" private Label familyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" @FXML","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" private Label hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":" @FXML","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"SherisseTJW"},"content":" private VBox events;","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" * Creates a {@code PatientCode} with the given {@code Patient} and index to display.","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" public PatientCard(Patient patient, int displayedIndex) {","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" this.patient \u003d patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" name.setText(patient.getName().fullName);","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":" preferredName.setText(patient.getPreferredName().preferredName);","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" foodPreference.setText(patient.getFoodPreference().foodPreference);","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"choowengyan"},"content":" familyCondition.setText(patient.getFamilyCondition().familyCondition);","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" hobby.setText(patient.getHobby().hobby);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" patient.getTags().stream()","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":69,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"SherisseTJW"},"content":" if (patient.getEvents().size() \u003e\u003d 1) {","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SherisseTJW"},"content":" events.getChildren().add(new Label(\"Upcoming:\\n\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":" ArrayList\u003cEvent\u003e allEvents \u003d new ArrayList\u003c\u003e(patient.getEvents());","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SherisseTJW"},"content":" Collections.sort(allEvents);","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"SherisseTJW"},"content":" for (int i \u003d 1; i \u003c\u003d allEvents.size(); i++) {","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"SherisseTJW"},"content":" events.getChildren().add(new Label((i) + \". \"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"SherisseTJW"},"content":" + allEvents.get(i - 1).toString() + \"\\n\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"SherisseTJW"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"SherisseTJW":17,"choowengyan":11,"NeoHW":10,"-":43}},{"path":"src/main/java/seedu/address/ui/PatientListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" * Panel containing the list of patients.","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"public class PatientListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" private static final String FXML \u003d \"PatientListPanel.fxml\";","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PatientListPanel.class);","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" private ListView\u003cPatient\u003e patientListView;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * Creates a {@code PatientListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" public PatientListPanel(ObservableList\u003cPatient\u003e patientList) {","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" patientListView.setItems(patientList);","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" patientListView.setCellFactory(listView -\u003e new PatientListViewCell());","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Patient} using a {@code PatientCard}.","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" class PatientListViewCell extends ListCell\u003cPatient\u003e {","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" protected void updateItem(Patient patient, boolean empty) {","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" super.updateItem(patient, empty);","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" if (empty || patient \u003d\u003d null) {","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" setGraphic(new PatientCard(patient, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":16,"-":33}},{"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":"ZhiWei1010"},"content":" title\u003d\"PatientSync\" 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":"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":"NeoHW"},"content":" \u003cVBox fx:id\u003d\"patientList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-08"},{"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":"SherisseTJW"},"content":" \u003cStackPane fx:id\u003d\"patientListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-10"},{"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":{"SherisseTJW":1,"ZhiWei1010":1,"NeoHW":1,"-":57}},{"path":"src/main/resources/view/PatientListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"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":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" \u003cLabel fx:id\u003d\"preferredNameLabel\" styleClass\u003d\"cell_small_label\" text\u003d\"Preferred Name:\"/\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" \u003cLabel fx:id\u003d\"preferredName\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$preferredName\"/\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" \u003cLabel fx:id\u003d\"foodPreferenceLabel\" styleClass\u003d\"cell_small_label\" text\u003d\"Food Preference:\"/\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" \u003cLabel fx:id\u003d\"foodPreference\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$foodPreference\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" \u003cLabel fx:id\u003d\"familyConditionLabel\" styleClass\u003d\"cell_small_label\" text\u003d\"Family Condition:\"/\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" \u003cLabel fx:id\u003d\"familyCondition\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$familyCondition\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" \u003cLabel fx:id\u003d\"hobbyLabel\" styleClass\u003d\"cell_small_label\" text\u003d\"Hobby:\"/\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" \u003cLabel fx:id\u003d\"hobby\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$hobby\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":" \u003cVBox fx:id\u003d\"events\" GridPane.columnIndex\u003d\"1\" alignment\u003d\"CENTER\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"SherisseTJW":3,"choowengyan":17,"-":33}},{"path":"src/main/resources/view/PatientListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":" \u003cListView fx:id\u003d\"patientListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"SherisseTJW":1,"-":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":"NeoHW"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FAMILY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FOOD_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOBBY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ID_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREFERRED_NAME_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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.AMY;","lastModifiedDate":"2024-03-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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void getFilteredPatientList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPatientList().remove(0));","lastModifiedDate":"2024-03-09"},{"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":"choowengyan"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + ID_DESC_AMY + NAME_DESC_AMY + PREFERRED_NAME_DESC_AMY","lastModifiedDate":"2024-03-14"},{"lineNumber":171,"author":{"gitId":"choowengyan"},"content":" + FOOD_DESC_AMY + FAMILY_DESC_AMY + HOBBY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":172,"author":{"gitId":"NeoHW"},"content":" Patient expectedPatient \u003d new PatientBuilder(AMY).withTags().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"NeoHW"},"content":" expectedModel.addPatient(expectedPatient);","lastModifiedDate":"2024-03-09"},{"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":{"choowengyan":7,"NeoHW":9,"-":161}},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" public void execute_duplicatePatient_throwsCommandException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" Patient patientInList \u003d model.getAddressBook().getPatientList().get(0);","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" assertCommandFailure(new AddCommand(patientInList), model,","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" AddCommand.MESSAGE_DUPLICATE_PATIENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"NeoHW":6,"-":27}},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-09"},{"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.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":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" public void constructor_nullPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" public void execute_duplicatePatient_throwsCommandException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" Patient validPatient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" AddCommand addCommand \u003d new AddCommand(validPatient);","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" ModelStub modelStub \u003d new ModelStubWithPatient(validPatient);","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PATIENT, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" Patient alice \u003d new PatientBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" Patient bob \u003d new PatientBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" // different patient -\u003e returns false","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"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":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","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":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"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 Path getAddressBookFilePath() {","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 void setAddressBookFilePath(Path addressBookFilePath) {","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":"2017-05-12"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" public void addPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":123,"author":{"gitId":"NeoHW"},"content":" public boolean hasPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":" public void deletePatient(Patient target) {","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void setPatient(Patient target, Patient editedPatient) {","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public ObservableList\u003cPatient\u003e getFilteredPatientList() {","lastModifiedDate":"2024-03-09"},{"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":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" public void updateFilteredPatientList(Predicate\u003cPatient\u003e predicate) {","lastModifiedDate":"2024-03-09"},{"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":"","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":149,"author":{"gitId":"NeoHW"},"content":" * A Model stub that contains a single patient.","lastModifiedDate":"2024-03-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"NeoHW"},"content":" private class ModelStubWithPatient extends ModelStub {","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" private final Patient patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":" ModelStubWithPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-08"},{"lineNumber":156,"author":{"gitId":"NeoHW"},"content":" this.patient \u003d patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"NeoHW"},"content":" public boolean hasPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":161,"author":{"gitId":"NeoHW"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-08"},{"lineNumber":162,"author":{"gitId":"NeoHW"},"content":" return this.patient.isSamePatient(patient);","lastModifiedDate":"2024-03-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":167,"author":{"gitId":"NeoHW"},"content":" * A Model stub that always accept the patient being added.","lastModifiedDate":"2024-03-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":169,"author":{"gitId":"NeoHW"},"content":" private class ModelStubAcceptingPatientAdded extends ModelStub {","lastModifiedDate":"2024-03-09"},{"lineNumber":170,"author":{"gitId":"NeoHW"},"content":" final ArrayList\u003cPatient\u003e patientsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-09"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":173,"author":{"gitId":"NeoHW"},"content":" public boolean hasPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":174,"author":{"gitId":"NeoHW"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-08"},{"lineNumber":175,"author":{"gitId":"NeoHW"},"content":" return patientsAdded.stream().anyMatch(patient::isSamePatient);","lastModifiedDate":"2024-03-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"NeoHW"},"content":" public void addPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":180,"author":{"gitId":"NeoHW"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-08"},{"lineNumber":181,"author":{"gitId":"NeoHW"},"content":" patientsAdded.add(patient);","lastModifiedDate":"2024-03-09"},{"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 ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":186,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"NeoHW":36,"-":154}},{"path":"src/test/java/seedu/address/logic/commands/AddEventCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SherisseTJW"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SherisseTJW"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SherisseTJW"},"content":"public class AddEventCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":" private final Event validDate \u003d new Event(\"Test\", \"20-02-2022\");","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":" private final Event secondValidDate \u003d new Event(\"SomethingElse\", \"20-02-2022\");","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":" private final Event thirdValidDate \u003d new Event(\"Test\", \"20-02-2023\");","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":" public void constructor_nullIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddEventCommand(null, validDate));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" public void constructor_nullEventDateTimeStr_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":" Index index \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddEventCommand(index, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" public void constructor_nullIndexAndEventDateTimeStr_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddEventCommand(null, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" public void execute_addValidEventToInvalidPatient_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":" Index invalidIndex \u003d Index.fromOneBased(model.getFilteredPatientList().size() + 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand addEventCommand \u003d new AddEventCommand(invalidIndex, validDate);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SherisseTJW"},"content":" CommandException exception \u003d assertThrows(CommandException.class, () -\u003e addEventCommand.execute(model));","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SherisseTJW"},"content":" assertEquals(MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX, exception.getMessage());","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SherisseTJW"},"content":" public void execute_addValidEvent_success() throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SherisseTJW"},"content":" Index validIndex \u003d Index.fromZeroBased(1);","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand addEventCommand \u003d new AddEventCommand(validIndex, validDate);","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SherisseTJW"},"content":" CommandResult result \u003d addEventCommand.execute(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"SherisseTJW"},"content":" Patient editedPatient \u003d model.getFilteredPatientList().get(validIndex.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"SherisseTJW"},"content":" String expected \u003d String.format(AddEventCommand.MESSAGE_SUCCESS, validDate.name,","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"SherisseTJW"},"content":" editedPatient.getName(), validIndex.getOneBased(), validDate.date);","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SherisseTJW"},"content":" assertEquals(expected, result.getFeedbackToUser());","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cEvent\u003e expectedEvents \u003d new HashSet\u003c\u003e(editedPatient.getEvents());","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(editedPatient.getEvents().equals(expectedEvents));","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":" public void execute_addDuplicateEvent_success() throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"SherisseTJW"},"content":" Index validIndex \u003d Index.fromZeroBased(1);","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand addEventCommand \u003d new AddEventCommand(validIndex, validDate);","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"SherisseTJW"},"content":" CommandResult result;","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"SherisseTJW"},"content":" String expected;","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"SherisseTJW"},"content":" Patient editedPatient;","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cEvent\u003e expectedEvents;","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"SherisseTJW"},"content":" // Confirm the basic add works","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"SherisseTJW"},"content":" result \u003d addEventCommand.execute(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"SherisseTJW"},"content":" editedPatient \u003d model.getFilteredPatientList().get(validIndex.getZeroBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"SherisseTJW"},"content":" expected \u003d String.format(AddEventCommand.MESSAGE_SUCCESS, validDate.name,","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"SherisseTJW"},"content":" editedPatient.getName(), validIndex.getOneBased(), validDate.date);","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"SherisseTJW"},"content":" assertEquals(expected, result.getFeedbackToUser());","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"SherisseTJW"},"content":" expectedEvents \u003d new HashSet\u003c\u003e(editedPatient.getEvents());","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(editedPatient.getEvents().equals(expectedEvents));","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"SherisseTJW"},"content":" // Attempt to insert duplicate","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"SherisseTJW"},"content":" result \u003d addEventCommand.execute(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"SherisseTJW"},"content":" editedPatient \u003d model.getFilteredPatientList().get(validIndex.getZeroBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"SherisseTJW"},"content":" expected \u003d String.format(AddEventCommand.MESSAGE_DUPLICATE, validDate.name,","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"SherisseTJW"},"content":" editedPatient.getName(), validIndex.getOneBased(), validDate.date);","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" assertEquals(expected, result.getFeedbackToUser());","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"SherisseTJW"},"content":" expectedEvents \u003d new HashSet\u003c\u003e(editedPatient.getEvents());","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(editedPatient.getEvents().equals(expectedEvents));","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"SherisseTJW"},"content":" public void equalsTest() {","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand addEventCommandFirst \u003d new AddEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" INDEX_FIRST_PATIENT, validDate);","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand addEventCommandSecond \u003d new AddEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"SherisseTJW"},"content":" INDEX_SECOND_PATIENT, validDate);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand addEventCommandThird \u003d new AddEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"SherisseTJW"},"content":" INDEX_FIRST_PATIENT, secondValidDate);","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand addEventCommandFourth \u003d new AddEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"SherisseTJW"},"content":" INDEX_FIRST_PATIENT, thirdValidDate);","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(addEventCommandFirst.equals(addEventCommandSecond));","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(addEventCommandFirst.equals(addEventCommandThird));","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(addEventCommandFirst.equals(addEventCommandFourth));","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(addEventCommandFirst.equals(addEventCommandFirst));","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"SherisseTJW"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand addEventCommand \u003d new AddEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"SherisseTJW"},"content":" INDEX_FIRST_PATIENT, validDate);","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"SherisseTJW"},"content":" String expected \u003d AddEventCommand.class.getCanonicalName() + \"{index\u003d\" + INDEX_FIRST_PATIENT","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"SherisseTJW"},"content":" + \", event\u003d\" + validDate + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(addEventCommand.toString().equals(expected));","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"SherisseTJW"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SherisseTJW":133}},{"path":"src/test/java/seedu/address/logic/commands/AddTagsCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION_OUTPUT;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DIABETES;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DIABETES_OUTPUT;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"public class AddTagsCommandTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" public void execute_validTagsUnfilteredList_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" Index index \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagsToAdd \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" tagsToAdd.add(new Tag(VALID_TAG_DIABETES));","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand addTagsCommand \u003d new AddTagsCommand(index, tagsToAdd);","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" CommandResult commandResult \u003d addTagsCommand.execute(model);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" Patient editedPatient \u003d model.getFilteredPatientList().get(index.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(AddTagsCommand.MESSAGE_ADD_TAG_SUCCESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" editedPatient.getName(), VALID_TAG_DIABETES_OUTPUT) + \"\\n\";","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedMessage, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e expectedTagsSet \u003d new HashSet\u003c\u003e(editedPatient.getTags());","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" expectedTagsSet.add(new Tag(VALID_TAG_DIABETES));","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" assertEquals(editedPatient.getTags(), expectedTagsSet);","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" // The command should not throw an exception in this test","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" throw new AssertionError(\"Execution of command should not fail.\", e);","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" public void execute_addDuplicateTagsUnfilteredList_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" Index index \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagsToAdd \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":" tagsToAdd.add(new Tag(VALID_TAG_DIABETES));","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" tagsToAdd.add(new Tag(VALID_TAG_DIABETES)); // Adding a duplicate tag should result in one unique tag","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand addTagsCommand \u003d new AddTagsCommand(index, tagsToAdd);","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" CommandResult commandResult \u003d addTagsCommand.execute(model);","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" Patient editedPatient \u003d model.getFilteredPatientList().get(index.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(AddTagsCommand.MESSAGE_ADD_TAG_SUCCESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" editedPatient.getName(), VALID_TAG_DIABETES_OUTPUT) + \"\\n\";","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedMessage, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e expectedTagsSet \u003d new HashSet\u003c\u003e(editedPatient.getTags());","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"choowengyan"},"content":" expectedTagsSet.add(new Tag(VALID_TAG_DIABETES));","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" assertEquals(editedPatient.getTags(), expectedTagsSet);","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" // The command should not throw an exception in this test","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" throw new AssertionError(\"Execution of command should not fail.\", e);","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" public void execute_addPreExistingTagsUnfilteredList_logOutputFailure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" Index index \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagsToAdd \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"choowengyan"},"content":" tagsToAdd.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand addTagsCommand \u003d new AddTagsCommand(index, tagsToAdd);","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" CommandResult commandResult \u003d addTagsCommand.execute(model);","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" Patient editedPatient \u003d model.getFilteredPatientList().get(index.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(AddTagsCommand.MESSAGE_DUPLICATE_TAG,","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" editedPatient.getName(), VALID_TAG_DEPRESSION_OUTPUT) + \"\\n\";","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedMessage, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e expectedTagsSet \u003d new HashSet\u003c\u003e(editedPatient.getTags());","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" assertTrue(editedPatient.getTags().equals(expectedTagsSet));","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" // The command should not throw an exception in this test","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" throw new AssertionError(\"Execution of command should not fail.\", e);","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPatientList().size() + 1);","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagsToAdd \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"choowengyan"},"content":" tagsToAdd.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand addTagsCommand \u003d new AddTagsCommand(outOfBoundIndex, tagsToAdd);","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":" CommandException exception \u003d assertThrows(CommandException.class, () -\u003e addTagsCommand.execute(model));","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" assertEquals(MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX, exception.getMessage());","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" public void equals() {","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":" final Index index \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":" final Set\u003cTag\u003e firstTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"choowengyan"},"content":" firstTags.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" final Set\u003cTag\u003e secondTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"choowengyan"},"content":" secondTags.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":" final AddTagsCommand standardCommand \u003d new AddTagsCommand(index, firstTags);","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"NeoHW"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand commandWithSameValues \u003d new AddTagsCommand(index, secondTags);","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"NeoHW"},"content":" assertEquals(standardCommand, commandWithSameValues);","lastModifiedDate":"2024-03-22"},{"lineNumber":132,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":" assertEquals(standardCommand, standardCommand);","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"NeoHW"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"NeoHW"},"content":" assertNotEquals(null, standardCommand);","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"NeoHW"},"content":" assertNotEquals(standardCommand, new ClearCommand());","lastModifiedDate":"2024-03-22"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" assertNotEquals(standardCommand, new AddTagsCommand(INDEX_SECOND_PATIENT, firstTags));","lastModifiedDate":"2024-03-22"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":145,"author":{"gitId":"NeoHW"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"NeoHW"},"content":" assertNotEquals(standardCommand, new AddTagsCommand(index, new HashSet\u003c\u003e()));","lastModifiedDate":"2024-03-22"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"NeoHW"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"NeoHW"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-11"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":153,"author":{"gitId":"choowengyan"},"content":" tags.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"choowengyan"},"content":" tags.add(new Tag(VALID_TAG_DIABETES));","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":156,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand addTagsCommand \u003d new AddTagsCommand(index, tags);","lastModifiedDate":"2024-03-11"},{"lineNumber":157,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":158,"author":{"gitId":"NeoHW"},"content":" String expected \u003d AddTagsCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", tags\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":159,"author":{"gitId":"NeoHW"},"content":" + tags + \"}\";","lastModifiedDate":"2024-03-11"},{"lineNumber":160,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"NeoHW"},"content":" assertEquals(expected, addTagsCommand.toString());","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":163,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":164,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"choowengyan":13,"NeoHW":151}},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"NeoHW":1,"-":31}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FAMILY_CONDITION;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FOOD_PREFERENCE;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOBBY;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PID;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PREFERRED_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"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":"NeoHW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-09"},{"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":"choowengyan"},"content":" public static final String VALID_ID_AMY \u003d \"12345\";","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_ID_BOB \u003d \"12234\";","lastModifiedDate":"2024-03-17"},{"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":"SherisseTJW"},"content":" public static final String VALID_EVENT_NAME \u003d \"Birthday\";","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" public static final String VALID_EVENT_DATE \u003d \"20-02-2022\";","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":" public static final String VALID_EVENT_DATETIME \u003d \"20-02-2022, 12:12 - 15:15\";","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_PREFERRED_NAME_AMY \u003d \"Amy\";","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_PREFERRED_NAME_BOB \u003d \"Bob\";","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_FOOD_AMY \u003d \"Dim sum\";","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_FOOD_BOB \u003d \"Chicken rice\";","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_FAMILY_CONDITION_AMY \u003d \"2 sons migrated to Korea\";","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_FAMILY_CONDITION_BOB \u003d \"Always quarrels with daughter\";","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_HOBBY_AMY \u003d \"Watch Hong Kong Drama\";","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_HOBBY_BOB \u003d \"Interested in calligraphy\";","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_TAG_DIABETES \u003d \"diabetes\";","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_TAG_DEPRESSION \u003d \"depression\";","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" public static final String VALID_TAG_DIABETES_OUTPUT \u003d \"[diabetes]\";","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" public static final String VALID_TAG_DEPRESSION_OUTPUT \u003d \"[depression]\";","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" public static final String ID_DESC_AMY \u003d \" \" + PREFIX_PID + VALID_ID_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" public static final String ID_DESC_BOB \u003d \" \" + PREFIX_PID + VALID_ID_BOB;","lastModifiedDate":"2024-03-14"},{"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":"SherisseTJW"},"content":" public static final String EVENT_DESC_DATE \u003d \" \" + PREFIX_NAME + VALID_EVENT_NAME + \" \"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SherisseTJW"},"content":" + PREFIX_DATETIME + VALID_EVENT_DATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SherisseTJW"},"content":" public static final String EVENT_DESC_DATETIME \u003d \" \" + PREFIX_NAME + VALID_EVENT_NAME + \" \"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SherisseTJW"},"content":" + PREFIX_DATETIME + VALID_EVENT_DATETIME;","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"SherisseTJW"},"content":" public static final String INVALID_EVENT_DESC \u003d \" \" + PREFIX_NAME + VALID_EVENT_NAME","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SherisseTJW"},"content":" + PREFIX_DATETIME + \"Invalid\";","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" public static final String PREFERRED_NAME_DESC_AMY \u003d \" \" + PREFIX_PREFERRED_NAME + VALID_PREFERRED_NAME_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"choowengyan"},"content":" public static final String PREFERRED_NAME_DESC_BOB \u003d \" \" + PREFIX_PREFERRED_NAME + VALID_PREFERRED_NAME_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" public static final String FOOD_DESC_BOB \u003d \" \" + PREFIX_FOOD_PREFERENCE + VALID_FOOD_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" public static final String FOOD_DESC_AMY \u003d \" \" + PREFIX_FOOD_PREFERENCE + VALID_FOOD_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":" public static final String FAMILY_DESC_AMY \u003d \" \" + PREFIX_FAMILY_CONDITION + VALID_FAMILY_CONDITION_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":" public static final String FAMILY_DESC_BOB \u003d \" \" + PREFIX_FAMILY_CONDITION + VALID_FAMILY_CONDITION_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":" public static final String HOBBY_DESC_AMY \u003d \" \" + PREFIX_HOBBY + VALID_HOBBY_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":" public static final String HOBBY_DESC_BOB \u003d \" \" + PREFIX_HOBBY + VALID_HOBBY_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":" public static final String TAG_DESC_DIABETES \u003d \" \" + PREFIX_TAG + VALID_TAG_DIABETES;","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":" public static final String TAG_DESC_DEPRESSION \u003d \" \" + PREFIX_TAG + VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"choowengyan"},"content":" public static final String INVALID_ID_DESC \u003d \" \" + PREFIX_PID + \"10 a\"; // only digits are allowed in ID","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"choowengyan"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026 Lee Kuang\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":" // \u0027\u0026\u0027 not allowed in preferred name","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"choowengyan"},"content":" public static final String INVALID_PREFERRED_NAME_DESC \u003d \" \" + PREFIX_PREFERRED_NAME + \"James\u0026\";","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"choowengyan"},"content":" // empty string not allowed for food description","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"choowengyan"},"content":" public static final String INVALID_FOOD_DESC \u003d \" \" + PREFIX_FOOD_PREFERENCE;","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"choowengyan"},"content":" // empty string not allowed for family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"choowengyan"},"content":" public static final String INVALID_FAMILY_DESC \u003d \" \" + PREFIX_FAMILY_CONDITION;","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"choowengyan"},"content":" // empty string not allowed for hobby","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"choowengyan"},"content":" public static final String INVALID_HOBBY_DESC \u003d \" \" + PREFIX_HOBBY;","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"choowengyan"},"content":" // \u0027*\u0027 and spacing not allowed in tags","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"choowengyan"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hearing loss*\";","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" public static final EditPatientDescriptor DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" public static final EditPatientDescriptor DESC_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" DESC_AMY \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(VALID_PREFERRED_NAME_AMY).withFoodPreference(VALID_FOOD_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"choowengyan"},"content":" .withFamilyCondition(VALID_FAMILY_CONDITION_AMY).withHobby(VALID_HOBBY_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"choowengyan"},"content":" .withTags(VALID_TAG_DIABETES).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" DESC_BOB \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(VALID_PREFERRED_NAME_BOB).withFoodPreference(VALID_FOOD_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"choowengyan"},"content":" .withFamilyCondition(VALID_FAMILY_CONDITION_BOB).withHobby(VALID_HOBBY_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"choowengyan"},"content":" .withTags(VALID_TAG_DEPRESSION, VALID_TAG_DIABETES).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"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":"NeoHW"},"content":" * - the address book, filtered patient list and selected patient in {@code actualModel} remain unchanged","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" List\u003cPatient\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPatientList());","lastModifiedDate":"2024-03-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPatientList());","lastModifiedDate":"2024-03-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":" * Updates {@code model}\u0027s filtered list to show only the patient at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":150,"author":{"gitId":"NeoHW"},"content":" public static void showPatientAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-03-09"},{"lineNumber":151,"author":{"gitId":"NeoHW"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPatientList().size());","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":153,"author":{"gitId":"NeoHW"},"content":" Patient patient \u003d model.getFilteredPatientList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-09"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":" final String[] splitName \u003d patient.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-08"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":" model.updateFilteredPatientList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-03-09"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":157,"author":{"gitId":"NeoHW"},"content":" assertEquals(1, model.getFilteredPatientList().size());","lastModifiedDate":"2024-03-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"SherisseTJW":10,"choowengyan":47,"NeoHW":20,"-":83}},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" Patient patientToDelete \u003d model.getFilteredPatientList().get(INDEX_FIRST_PATIENT.getZeroBased());","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PATIENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PATIENT_SUCCESS,","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" patientToDelete.getName(), INDEX_FIRST_PATIENT.getOneBased());","lastModifiedDate":"2024-03-17"},{"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":"NeoHW"},"content":" expectedModel.deletePatient(patientToDelete);","lastModifiedDate":"2024-03-09"},{"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":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPatientList().size() + 1);","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-09"},{"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":"2018-01-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PATIENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PATIENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PATIENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" // different patient -\u003e returns false","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","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":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" private void showNoPatient(Model model) {","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" model.updateFilteredPatientList(p -\u003e false);","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" assertTrue(model.getFilteredPatientList().isEmpty());","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"choowengyan":1,"NeoHW":17,"-":71}},{"path":"src/test/java/seedu/address/logic/commands/DeleteEventCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_EVENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.DeleteEventCommand.MESSAGE_DELETE_EVENT_SUCCESS;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EVENT;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_EVENT;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.List;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":"public class DeleteEventCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":" public void constructor_nullPatientIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeleteEventCommand(null,","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":" INDEX_FIRST_EVENT));","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":" public void constructor_nullEventIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeleteEventCommand(INDEX_FIRST_PATIENT,","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":" null));","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":" public void constructor_nullPatientAndEventIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeleteEventCommand(null,","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":" null));","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"SherisseTJW"},"content":" public void execute_deleteEventToInvalidPatient_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"ZhiWei1010"},"content":" Index invalidIndex \u003d Index.fromOneBased(model.getFilteredPatientList().size() + 1);","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand deleteEventCommand \u003d new DeleteEventCommand(invalidIndex,","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"ZhiWei1010"},"content":" INDEX_FIRST_EVENT);","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"SherisseTJW"},"content":" CommandException exception \u003d assertThrows(CommandException.class, () -\u003e deleteEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"ZhiWei1010"},"content":" .execute(model));","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX, exception.getMessage());","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"SherisseTJW"},"content":" public void execute_deleteEventWithInvalidEventId_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"ZhiWei1010"},"content":" Index invalidIndex \u003d Index.fromOneBased(model.getFilteredPatientList().get(1)","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"SherisseTJW"},"content":" .getEvents().size() + 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand deleteEventCommand \u003d new DeleteEventCommand(INDEX_FIRST_PATIENT,","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"ZhiWei1010"},"content":" invalidIndex);","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"SherisseTJW"},"content":" CommandException exception \u003d assertThrows(CommandException.class, () -\u003e deleteEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"ZhiWei1010"},"content":" .execute(model));","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":" assertEquals(MESSAGE_INVALID_EVENT_DISPLAYED_INDEX, exception.getMessage());","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"ZhiWei1010"},"content":" public void execute_deleteValidEventIndexFromValidPatient_success() throws CommandException {","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"ZhiWei1010"},"content":" Index validIndex \u003d Index.fromZeroBased(1);","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand deleteEventCommand \u003d new DeleteEventCommand(validIndex,","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"ZhiWei1010"},"content":" INDEX_FIRST_EVENT);","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"ZhiWei1010"},"content":" Patient editedPatient \u003d model.getFilteredPatientList().get(validIndex.getZeroBased());","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"SherisseTJW"},"content":" List\u003cEvent\u003e currEventList \u003d new ArrayList\u003c\u003e(editedPatient.getEvents());","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"SherisseTJW"},"content":" Event eventToDelete \u003d currEventList.get(INDEX_FIRST_EVENT.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"SherisseTJW"},"content":" CommandResult result \u003d deleteEventCommand.execute(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"SherisseTJW"},"content":" String expected \u003d String.format(MESSAGE_DELETE_EVENT_SUCCESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"ZhiWei1010"},"content":" Messages.format(editedPatient),","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"ZhiWei1010"},"content":" eventToDelete);","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(expected, result.getFeedbackToUser());","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cEvent\u003e expectedEvents \u003d new HashSet\u003c\u003e(editedPatient.getEvents());","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(editedPatient.getEvents().equals(expectedEvents));","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"ZhiWei1010"},"content":" public void equalsTest() {","lastModifiedDate":"2024-03-15"},{"lineNumber":96,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand deleteEventCommandFirst \u003d new DeleteEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"ZhiWei1010"},"content":" INDEX_FIRST_PATIENT, INDEX_FIRST_EVENT);","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand deleteEventCommandSecond \u003d new DeleteEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"ZhiWei1010"},"content":" INDEX_SECOND_PATIENT, INDEX_FIRST_EVENT);","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand deleteEventCommandThird \u003d new DeleteEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"ZhiWei1010"},"content":" INDEX_FIRST_PATIENT, INDEX_SECOND_EVENT);","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand deleteEventCommandFourth \u003d new DeleteEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"ZhiWei1010"},"content":" INDEX_SECOND_PATIENT, INDEX_SECOND_EVENT);","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"ZhiWei1010"},"content":" ListCommand listCommand \u003d new ListCommand();","lastModifiedDate":"2024-03-15"},{"lineNumber":105,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(deleteEventCommandFirst.equals(deleteEventCommandSecond));","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(deleteEventCommandFirst.equals(deleteEventCommandThird));","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(deleteEventCommandFirst.equals(deleteEventCommandFourth));","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(deleteEventCommandFirst.equals(listCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(deleteEventCommandFirst.equals(deleteEventCommandFirst));","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":114,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":117,"author":{"gitId":"ZhiWei1010"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand deleteEventCommand \u003d new DeleteEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"ZhiWei1010"},"content":" INDEX_FIRST_PATIENT, INDEX_FIRST_EVENT);","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"SherisseTJW"},"content":" String expected \u003d DeleteEventCommand.class.getCanonicalName() + \"{targetPatientIndex\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"ZhiWei1010"},"content":" + INDEX_FIRST_PATIENT","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"ZhiWei1010"},"content":" + \", targetEventIndex\u003d\" + INDEX_FIRST_EVENT + \"}\";","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(deleteEventCommand.toString().equals(expected));","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"SherisseTJW":34,"ZhiWei1010":93}},{"path":"src/test/java/seedu/address/logic/commands/DeleteTagsCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION_OUTPUT;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DIABETES;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"public class DeleteTagsCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" private final Set\u003cTag\u003e validTagSet \u003d Set.of(new Tag(\"test\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" private Model model;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" private final UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" @BeforeEach","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" public void setUp() {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), userPrefs);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" public void constructor_nullIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeleteTagsCommand(null, validTagSet));","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" public void constructor_nullTagSet_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeleteTagsCommand(INDEX_FIRST_PATIENT, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" public void constructor_nullIndexAndNullTagSet_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeleteTagsCommand(null, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" public void execute_validIndexAndTags_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" Index index \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagsToDelete \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" tagsToDelete.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand deleteTagsCommand \u003d new DeleteTagsCommand(index, tagsToDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" CommandResult commandResult \u003d deleteTagsCommand.execute(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" Patient editedPatient \u003d model.getFilteredPatientList().get(index.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(DeleteTagsCommand.MESSAGE_DELETE_TAG_SUCCESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" editedPatient.getName(), VALID_TAG_DEPRESSION_OUTPUT) + \"\\n\";","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedMessage, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e expectedTagsSet \u003d new HashSet\u003c\u003e(editedPatient.getTags());","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" assertFalse(expectedTagsSet.contains(new Tag(VALID_TAG_DEPRESSION)));","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" // The command should not throw an exception in this test","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" throw new AssertionError(\"Execution of command should not fail.\", e);","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPatientList().size() + 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagsToDelete \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" tagsToDelete.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand deleteTagsCommand \u003d new DeleteTagsCommand(outOfBoundIndex, tagsToDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" CommandException exception \u003d assertThrows(CommandException.class, () -\u003e deleteTagsCommand.execute(model));","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" assertEquals(MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX, exception.getMessage());","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" public void execute_invalidTags_logsOutcome() {","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" Index index \u003d INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagsToDelete \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" tagsToDelete.add(new Tag(\"nonExistentTag\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand deleteTagsCommand \u003d new DeleteTagsCommand(index, tagsToDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" CommandResult commandResult \u003d deleteTagsCommand.execute(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(DeleteTagsCommand.MESSAGE_INVALID_TAG,","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" model.getFilteredPatientList().get(index.getZeroBased()).getName(), \"[nonExistentTag]\") + \"\\n\";","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedMessage, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" throw new AssertionError(\"Execution of command should not fail.\", e);","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" final Index index \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"NeoHW"},"content":" final Set\u003cTag\u003e firstTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":" firstTags.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" final Set\u003cTag\u003e secondTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":" secondTags.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":" final DeleteTagsCommand standardCommand \u003d new DeleteTagsCommand(index, firstTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand commandWithSameValues \u003d new DeleteTagsCommand(index, secondTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"NeoHW"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"NeoHW"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"NeoHW"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"NeoHW"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" assertFalse(standardCommand.equals(new DeleteTagsCommand(INDEX_SECOND_PATIENT, firstTags)));","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"NeoHW"},"content":" assertFalse(standardCommand.equals(new DeleteTagsCommand(index, new HashSet\u003c\u003e())));","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"NeoHW"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" tags.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":" tags.add(new Tag(VALID_TAG_DIABETES));","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand deleteTagsCommand \u003d new DeleteTagsCommand(index, tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":" String expected \u003d DeleteTagsCommand.class.getCanonicalName() + \"{targetPatientIndex\u003d\" + index + \", tags\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"NeoHW"},"content":" + tags + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"NeoHW"},"content":" assertEquals(expected, deleteTagsCommand.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"NeoHW":154}},{"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":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"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.Messages;","lastModifiedDate":"2023-07-13"},{"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-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" Patient editedPatient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder(editedPatient).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PATIENT, descriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" EditCommand.MESSAGE_EDIT_PATIENT_SUCCESS, Messages.format(editedPatient));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" expectedModel.setPatient(model.getFilteredPatientList().get(0), editedPatient);","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" Index indexLastPatient \u003d Index.fromOneBased(model.getFilteredPatientList().size());","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" Patient lastPatient \u003d model.getFilteredPatientList().get(indexLastPatient.getZeroBased());","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" PatientBuilder patientInList \u003d new PatientBuilder(lastPatient);","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" Patient editedPatient \u003d patientInList.withName(VALID_NAME_BOB).withTags(VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":" .withTags(VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPatient, descriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" EditCommand.MESSAGE_EDIT_PATIENT_SUCCESS, Messages.format(editedPatient));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" expectedModel.setPatient(lastPatient, editedPatient);","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PATIENT, new EditPatientDescriptor());","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" Patient editedPatient \u003d model.getFilteredPatientList().get(INDEX_FIRST_PATIENT.getZeroBased());","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" EditCommand.MESSAGE_EDIT_PATIENT_SUCCESS, Messages.format(editedPatient));","lastModifiedDate":"2024-03-09"},{"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":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" public void execute_duplicatePatientUnfilteredList_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" Patient firstPatient \u003d model.getFilteredPatientList().get(INDEX_FIRST_PATIENT.getZeroBased());","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder(firstPatient).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PATIENT, descriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PATIENT);","lastModifiedDate":"2024-03-09"},{"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-18"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" public void execute_invalidPatientIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPatientList().size() + 1);","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" EditPatientDescriptor descriptor \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PATIENT, DESC_AMY);","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":" EditPatientDescriptor copyDescriptor \u003d new EditPatientDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PATIENT, copyDescriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PATIENT, DESC_AMY)));","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PATIENT, DESC_BOB)));","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"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":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" EditPatientDescriptor editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPatientDescriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPatientDescriptor\u003d\"","lastModifiedDate":"2024-03-09"},{"lineNumber":136,"author":{"gitId":"NeoHW"},"content":" + editPatientDescriptor + \"}\";","lastModifiedDate":"2024-03-09"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.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":"2017-05-08"}],"authorContributionMap":{"choowengyan":3,"NeoHW":44,"-":93}},{"path":"src/test/java/seedu/address/logic/commands/EditEventCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_EVENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EVENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_EVENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_EVENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":"public class EditEventCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":" private final Event validEvent \u003d new Event(\"Test\", \"20-02-2022\");","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":" private final Event secondValidEvent \u003d new Event(\"SomethingElse\", \"20-02-2022\");","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":" private final Event thirdValidEvent \u003d new Event(\"Test\", \"20-02-2023\");","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":" public void constructor_nullPatientIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":" null, INDEX_FIRST_EVENT, validEvent));","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":" public void constructor_nullEventIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_PATIENT, null, validEvent));","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"guohuang88"},"content":" public void constructor_nullDate_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"guohuang88"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_PATIENT, INDEX_FIRST_EVENT, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"guohuang88"},"content":" public void constructor_nullPatientIndexEventIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"guohuang88"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":" null, null, validEvent));","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"guohuang88"},"content":" public void constructor_nullPatientIndexDate_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"guohuang88"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"guohuang88"},"content":" null, INDEX_FIRST_EVENT, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"guohuang88"},"content":" public void constructor_nullEventIndexDate_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"guohuang88"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_PATIENT, null, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"guohuang88"},"content":" public void constructor_nullPatientIndexEventIndexDate_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"guohuang88"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"guohuang88"},"content":" null, null, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"guohuang88"},"content":" public void execute_editEvent_success() throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommand \u003d new EditEventCommand(INDEX_SECOND_PATIENT,","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_EVENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"guohuang88"},"content":" CommandResult result \u003d editEventCommand.execute(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"guohuang88"},"content":" Patient editedPatient \u003d model.getFilteredPatientList().get(INDEX_SECOND_PATIENT.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"guohuang88"},"content":" String expected \u003d String.format(EditEventCommand.MESSAGE_SUCCESS, validEvent.name,","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_EVENT.getOneBased(), validEvent.date, editedPatient.getName(),","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"guohuang88"},"content":" INDEX_SECOND_PATIENT.getOneBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"guohuang88"},"content":" assertEquals(expected, result.getFeedbackToUser());","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"guohuang88"},"content":" Set\u003cEvent\u003e expectedEvents \u003d new HashSet\u003c\u003e(editedPatient.getEvents());","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"guohuang88"},"content":" assertEquals(editedPatient.getEvents(), expectedEvents);","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"guohuang88"},"content":" public void execute_editEventWithInvalidPatientIndex_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"guohuang88"},"content":" Index invalidPatientIndex \u003d Index.fromOneBased(model.getFilteredPatientList().size() + 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommand \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"guohuang88"},"content":" invalidPatientIndex, INDEX_FIRST_EVENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"guohuang88"},"content":" CommandException exception \u003d assertThrows(CommandException.class, () -\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"guohuang88"},"content":" editEventCommand.execute(model));","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"guohuang88"},"content":" assertEquals(MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX, exception.getMessage());","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"guohuang88"},"content":" public void execute_editEventWithInvalidEventIndex_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"guohuang88"},"content":" Index invalidEventIndex \u003d Index.fromOneBased(model.getFilteredPatientList().get(1)","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"guohuang88"},"content":" .getEvents().size() + 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommand \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_PATIENT, invalidEventIndex, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"guohuang88"},"content":" CommandException exception \u003d assertThrows(CommandException.class, () -\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"guohuang88"},"content":" editEventCommand.execute(model));","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"guohuang88"},"content":" assertEquals(MESSAGE_INVALID_EVENT_DISPLAYED_INDEX, exception.getMessage());","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"guohuang88"},"content":" public void execute_editEventToAnExistingEvent_success() throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"guohuang88"},"content":" CommandResult result;","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"guohuang88"},"content":" String expected;","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"guohuang88"},"content":" Patient editedPatient;","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"guohuang88"},"content":" Set\u003cEvent\u003e expectedEvents;","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommand \u003d new EditEventCommand(INDEX_SECOND_PATIENT,","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_EVENT, validEvent);","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"guohuang88"},"content":" //Confirm basic edit event works","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"guohuang88"},"content":" result \u003d editEventCommand.execute(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"guohuang88"},"content":" editedPatient \u003d model.getFilteredPatientList().get(INDEX_SECOND_PATIENT.getZeroBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"guohuang88"},"content":" expected \u003d String.format(EditEventCommand.MESSAGE_SUCCESS, validEvent.name,","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_EVENT.getOneBased(), validEvent.date, editedPatient.getName(),","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"guohuang88"},"content":" INDEX_SECOND_PATIENT.getOneBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":136,"author":{"gitId":"guohuang88"},"content":" assertEquals(expected, result.getFeedbackToUser());","lastModifiedDate":"2024-03-23"},{"lineNumber":137,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":138,"author":{"gitId":"guohuang88"},"content":" expectedEvents \u003d new HashSet\u003c\u003e(editedPatient.getEvents());","lastModifiedDate":"2024-03-23"},{"lineNumber":139,"author":{"gitId":"guohuang88"},"content":" assertEquals(editedPatient.getEvents(), expectedEvents);","lastModifiedDate":"2024-03-23"},{"lineNumber":140,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":141,"author":{"gitId":"guohuang88"},"content":" //Test duplicate event using edit command","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"guohuang88"},"content":" result \u003d editEventCommand.execute(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"guohuang88"},"content":" editedPatient \u003d model.getFilteredPatientList().get(INDEX_SECOND_PATIENT.getZeroBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"guohuang88"},"content":" expected \u003d String.format(EditEventCommand.MESSAGE_DUPLICATE, validEvent.name, validEvent.date,","lastModifiedDate":"2024-03-23"},{"lineNumber":146,"author":{"gitId":"guohuang88"},"content":" editedPatient.getName(), INDEX_SECOND_PATIENT.getOneBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":147,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":148,"author":{"gitId":"guohuang88"},"content":" assertEquals(expected, result.getFeedbackToUser());","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":150,"author":{"gitId":"guohuang88"},"content":" expectedEvents \u003d new HashSet\u003c\u003e(editedPatient.getEvents());","lastModifiedDate":"2024-03-23"},{"lineNumber":151,"author":{"gitId":"guohuang88"},"content":" assertEquals(editedPatient.getEvents(), expectedEvents);","lastModifiedDate":"2024-03-23"},{"lineNumber":152,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":153,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":154,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"guohuang88"},"content":" public void equals_differentEventIndex_returnFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommandFirst \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_PATIENT, INDEX_FIRST_EVENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommandSecond \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_PATIENT, INDEX_SECOND_EVENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"guohuang88"},"content":" // Test same patient index, same event but different event index","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"guohuang88"},"content":" assertNotEquals(editEventCommandFirst, editEventCommandSecond);","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"guohuang88"},"content":" public void equals_differentPatientIndex_returnFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommandFirst \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_PATIENT, INDEX_THIRD_EVENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommandSecond \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"guohuang88"},"content":" INDEX_SECOND_PATIENT, INDEX_THIRD_EVENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"guohuang88"},"content":" // Test same event index, same event but different patient index","lastModifiedDate":"2024-03-18"},{"lineNumber":173,"author":{"gitId":"guohuang88"},"content":" assertNotEquals(editEventCommandFirst, editEventCommandSecond);","lastModifiedDate":"2024-03-18"},{"lineNumber":174,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":175,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"guohuang88"},"content":" public void equals_differentEvent_returnFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommandFirst \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"guohuang88"},"content":" INDEX_SECOND_PATIENT, INDEX_SECOND_EVENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":180,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommandSecond \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":181,"author":{"gitId":"guohuang88"},"content":" INDEX_SECOND_PATIENT, INDEX_SECOND_EVENT, secondValidEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommandThird \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":183,"author":{"gitId":"guohuang88"},"content":" INDEX_SECOND_PATIENT, INDEX_SECOND_EVENT, thirdValidEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":184,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":185,"author":{"gitId":"guohuang88"},"content":" // Test same patient index, same event index, same event date but different event name","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"guohuang88"},"content":" assertNotEquals(editEventCommandFirst, editEventCommandSecond);","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"guohuang88"},"content":" // Test same patient index, same event index, same event name but different event date","lastModifiedDate":"2024-03-18"},{"lineNumber":188,"author":{"gitId":"guohuang88"},"content":" assertNotEquals(editEventCommandFirst, editEventCommandThird);","lastModifiedDate":"2024-03-18"},{"lineNumber":189,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":192,"author":{"gitId":"guohuang88"},"content":" public void equals_differentInstance_returnFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommand \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_PATIENT, INDEX_FIRST_EVENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"guohuang88"},"content":" AddEventCommand addEventCommand \u003d new AddEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_PATIENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"guohuang88"},"content":" assertNotEquals(editEventCommand, addEventCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"guohuang88"},"content":" public void equals_sameValues_returnTrue() {","lastModifiedDate":"2024-03-18"},{"lineNumber":202,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommandFirst \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"guohuang88"},"content":" INDEX_THIRD_PATIENT, INDEX_THIRD_EVENT, thirdValidEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":204,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommandSecond \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":205,"author":{"gitId":"guohuang88"},"content":" INDEX_THIRD_PATIENT, INDEX_THIRD_EVENT, thirdValidEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":206,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":207,"author":{"gitId":"guohuang88"},"content":" // Test with the same object","lastModifiedDate":"2024-03-18"},{"lineNumber":208,"author":{"gitId":"guohuang88"},"content":" assertEquals(editEventCommandFirst, editEventCommandFirst);","lastModifiedDate":"2024-03-18"},{"lineNumber":209,"author":{"gitId":"guohuang88"},"content":" // Test with different object but same values","lastModifiedDate":"2024-03-18"},{"lineNumber":210,"author":{"gitId":"guohuang88"},"content":" assertEquals(editEventCommandFirst, editEventCommandSecond);","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":214,"author":{"gitId":"guohuang88"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-18"},{"lineNumber":215,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommand \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":216,"author":{"gitId":"guohuang88"},"content":" new EditEventCommand(INDEX_FIRST_PATIENT, INDEX_FIRST_EVENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":218,"author":{"gitId":"guohuang88"},"content":" String expected \u003d EditEventCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"guohuang88"},"content":" + \"{patientIndex\u003d\" + INDEX_FIRST_PATIENT","lastModifiedDate":"2024-03-18"},{"lineNumber":220,"author":{"gitId":"guohuang88"},"content":" + \", eventIndex\u003d\" + INDEX_FIRST_EVENT","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"guohuang88"},"content":" + \", eventToUpdate\u003d\" + validEvent + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":222,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":223,"author":{"gitId":"guohuang88"},"content":" assertEquals(editEventCommand.toString(), expected);","lastModifiedDate":"2024-03-18"},{"lineNumber":224,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":225,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":226,"author":{"gitId":"guohuang88"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"guohuang88":226}},{"path":"src/test/java/seedu/address/logic/commands/EditPatientDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_DATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_DATETIME;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FAMILY_CONDITION_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FOOD_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOBBY_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PREFERRED_NAME_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"public class EditPatientDescriptorTest {","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":" EditPatientDescriptor descriptorWithSameValues \u003d new EditPatientDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":" EditPatientDescriptor editedAmy \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" new EditPatientDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" // different id -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withPatientHospitalId(VALID_ID_BOB).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" // different preferred name -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withPreferredName(VALID_PREFERRED_NAME_BOB).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" // different food preference -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withFoodPreference(VALID_FOOD_BOB).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":" // different family condition -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withFamilyCondition(VALID_FAMILY_CONDITION_BOB).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" // different hobby -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withHobby(VALID_HOBBY_BOB).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withEvent(VALID_EVENT_NAME,","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SherisseTJW"},"content":" VALID_EVENT_DATE).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"SherisseTJW"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withEvent(VALID_EVENT_NAME,","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"SherisseTJW"},"content":" VALID_EVENT_DATETIME).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"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":"SherisseTJW"},"content":" EditPatientDescriptor editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"choowengyan"},"content":" String expected \u003d EditPatientDescriptor.class.getCanonicalName() + \"{patientHospitalId\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"choowengyan"},"content":" + editPatientDescriptor.getPatientHospitalId().orElse(null) + \", name\u003d\"","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"choowengyan"},"content":" + editPatientDescriptor.getName().orElse(null) + \", preferredName\u003d\"","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"choowengyan"},"content":" + editPatientDescriptor.getPreferredName().orElse(null) + \", foodPreference\u003d\"","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"choowengyan"},"content":" + editPatientDescriptor.getFoodPreference().orElse(null) + \", familyCondition\u003d\"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"choowengyan"},"content":" + editPatientDescriptor.getFamilyCondition().orElse(null) + \", hobby\u003d\"","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"choowengyan"},"content":" + editPatientDescriptor.getHobby().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"SherisseTJW"},"content":" + editPatientDescriptor.getTags().orElse(null) + \", events\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"SherisseTJW"},"content":" + editPatientDescriptor.getEvents().orElse(null) + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" assertEquals(expected, editPatientDescriptor.toString());","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"SherisseTJW":17,"choowengyan":28,"NeoHW":4,"-":47}},{"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":"NeoHW"},"content":"import static seedu.address.logic.Messages.MESSAGE_PATIENT_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","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":"NeoHW"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" // different patient -\u003e returns false","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","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-12"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" public void execute_zeroKeywords_noPatientFound() {","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(MESSAGE_PATIENT_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" expectedModel.updateFilteredPatientList(predicate);","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPatientList());","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"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":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"NeoHW":8,"-":70}},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"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":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"NeoHW":1,"-":31}},{"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":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FAMILY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FAMILY_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FOOD_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FOOD_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOBBY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOBBY_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ID_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ID_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_FAMILY_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_FOOD_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_HOBBY_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ID_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PREFERRED_NAME_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.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":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREFERRED_NAME_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREFERRED_NAME_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_DIABETES;","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FAMILY_CONDITION_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FOOD_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOBBY_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PREFERRED_NAME_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DIABETES;","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FAMILY_CONDITION;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FOOD_PREFERENCE;","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOBBY;","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PID;","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PREFERRED_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" Patient expectedPatient \u003d new PatientBuilder(BOB).withTags(VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":" + FOOD_DESC_BOB + FAMILY_DESC_BOB + HOBBY_DESC_BOB + TAG_DESC_DEPRESSION, new AddCommand(expectedPatient));","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":73,"author":{"gitId":"choowengyan"},"content":" Patient expectedPatientMultipleTags \u003d new PatientBuilder(BOB).withTags(VALID_TAG_DEPRESSION, VALID_TAG_DIABETES)","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":75,"author":{"gitId":"choowengyan"},"content":" assertParseSuccess(parser, ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES,","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" new AddCommand(expectedPatientMultipleTags));","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":" String validExpectedPatientString \u003d ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB + TAG_DESC_DIABETES;","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"choowengyan"},"content":" // multiple patient hospital ID","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_AMY + validExpectedPatientString,","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PID));","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPatientString,","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"choowengyan"},"content":" // multiple preferred names","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, PREFERRED_NAME_DESC_AMY + validExpectedPatientString,","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PREFERRED_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"choowengyan"},"content":" // multiple food preference","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, FOOD_DESC_AMY + validExpectedPatientString,","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FOOD_PREFERENCE));","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"choowengyan"},"content":" // multiple family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, FAMILY_DESC_AMY + validExpectedPatientString,","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FAMILY_CONDITION));","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"choowengyan"},"content":" // multiple hobbies","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, HOBBY_DESC_AMY + validExpectedPatientString,","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_HOBBY));","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, validExpectedPatientString + ID_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-03-15"},{"lineNumber":111,"author":{"gitId":"choowengyan"},"content":" + PREFERRED_NAME_DESC_AMY + FOOD_DESC_AMY + FAMILY_DESC_AMY + HOBBY_DESC_AMY","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"choowengyan"},"content":" + validExpectedPatientString, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PID, PREFIX_NAME,","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"choowengyan"},"content":" PREFIX_PREFERRED_NAME, PREFIX_FOOD_PREFERENCE, PREFIX_FAMILY_CONDITION, PREFIX_HOBBY));","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"choowengyan"},"content":" // invalid patient hospital ID","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, INVALID_ID_DESC + validExpectedPatientString,","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PID));","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPatientString,","lastModifiedDate":"2024-03-09"},{"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":"choowengyan"},"content":" // invalid preferred name","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, INVALID_PREFERRED_NAME_DESC + validExpectedPatientString,","lastModifiedDate":"2024-03-14"},{"lineNumber":127,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PREFERRED_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"choowengyan"},"content":" // invalid food preference","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, INVALID_FOOD_DESC + validExpectedPatientString,","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FOOD_PREFERENCE));","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"choowengyan"},"content":" // invalid family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":134,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, INVALID_FAMILY_DESC + validExpectedPatientString,","lastModifiedDate":"2024-03-14"},{"lineNumber":135,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FAMILY_CONDITION));","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":137,"author":{"gitId":"choowengyan"},"content":" // invalid hobby","lastModifiedDate":"2024-03-14"},{"lineNumber":138,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, INVALID_HOBBY_DESC + validExpectedPatientString,","lastModifiedDate":"2024-03-14"},{"lineNumber":139,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_HOBBY));","lastModifiedDate":"2024-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"choowengyan"},"content":" // invalid patient hospital ID","lastModifiedDate":"2024-03-14"},{"lineNumber":144,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, validExpectedPatientString + INVALID_ID_DESC,","lastModifiedDate":"2024-03-14"},{"lineNumber":145,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PID));","lastModifiedDate":"2024-03-14"},{"lineNumber":146,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":" assertParseFailure(parser, validExpectedPatientString + INVALID_NAME_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"choowengyan"},"content":" // invalid preferred name","lastModifiedDate":"2024-03-14"},{"lineNumber":152,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, validExpectedPatientString + INVALID_PREFERRED_NAME_DESC,","lastModifiedDate":"2024-03-14"},{"lineNumber":153,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PREFERRED_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":155,"author":{"gitId":"choowengyan"},"content":" // invalid food preference","lastModifiedDate":"2024-03-14"},{"lineNumber":156,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, validExpectedPatientString + INVALID_FOOD_DESC,","lastModifiedDate":"2024-03-14"},{"lineNumber":157,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FOOD_PREFERENCE));","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"choowengyan"},"content":" // invalid family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":160,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, validExpectedPatientString + INVALID_FAMILY_DESC,","lastModifiedDate":"2024-03-14"},{"lineNumber":161,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FAMILY_CONDITION));","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":163,"author":{"gitId":"choowengyan"},"content":" // invalid hobby","lastModifiedDate":"2024-03-14"},{"lineNumber":164,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, validExpectedPatientString + INVALID_HOBBY_DESC,","lastModifiedDate":"2024-03-14"},{"lineNumber":165,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_HOBBY));","lastModifiedDate":"2024-03-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"NeoHW"},"content":" Patient expectedPatient \u003d new PatientBuilder(AMY).withTags().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":172,"author":{"gitId":"choowengyan"},"content":" assertParseSuccess(parser, ID_DESC_AMY + NAME_DESC_AMY + PREFERRED_NAME_DESC_AMY + FOOD_DESC_AMY","lastModifiedDate":"2024-03-14"},{"lineNumber":173,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_AMY + HOBBY_DESC_AMY, new AddCommand(expectedPatient));","lastModifiedDate":"2024-03-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"choowengyan"},"content":" // missing patient hospital ID prefix","lastModifiedDate":"2024-03-14"},{"lineNumber":181,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, VALID_ID_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":182,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB,","lastModifiedDate":"2024-03-14"},{"lineNumber":183,"author":{"gitId":"choowengyan"},"content":" expectedMessage);","lastModifiedDate":"2024-03-14"},{"lineNumber":184,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + VALID_NAME_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":187,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB,","lastModifiedDate":"2024-03-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2024-03-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":190,"author":{"gitId":"choowengyan"},"content":" // missing preferred name prefix","lastModifiedDate":"2024-03-14"},{"lineNumber":191,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + NAME_DESC_BOB + VALID_PREFERRED_NAME_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":192,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB,","lastModifiedDate":"2024-03-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"choowengyan"},"content":" // missing food preference prefix","lastModifiedDate":"2024-03-14"},{"lineNumber":196,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + VALID_FOOD_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":197,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB,","lastModifiedDate":"2024-03-14"},{"lineNumber":198,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":200,"author":{"gitId":"choowengyan"},"content":" // missing family condition prefix","lastModifiedDate":"2024-03-14"},{"lineNumber":201,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":202,"author":{"gitId":"choowengyan"},"content":" + VALID_FAMILY_CONDITION_BOB + HOBBY_DESC_BOB,","lastModifiedDate":"2024-03-14"},{"lineNumber":203,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":205,"author":{"gitId":"choowengyan"},"content":" // missing hobby prefix","lastModifiedDate":"2024-03-14"},{"lineNumber":206,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":207,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + VALID_HOBBY_BOB,","lastModifiedDate":"2024-03-14"},{"lineNumber":208,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":211,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, VALID_ID_BOB + VALID_NAME_BOB + VALID_PREFERRED_NAME_BOB + VALID_FOOD_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":212,"author":{"gitId":"choowengyan"},"content":" + VALID_FAMILY_CONDITION_BOB + VALID_HOBBY_BOB,","lastModifiedDate":"2024-03-14"},{"lineNumber":213,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":216,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":217,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":218,"author":{"gitId":"choowengyan"},"content":" // invalid patient hospital ID","lastModifiedDate":"2024-03-14"},{"lineNumber":219,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, INVALID_ID_DESC + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":220,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES,","lastModifiedDate":"2024-03-14"},{"lineNumber":221,"author":{"gitId":"choowengyan"},"content":" PatientHospitalId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":222,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":223,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":224,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + INVALID_NAME_DESC + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":225,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":226,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":227,"author":{"gitId":"choowengyan"},"content":" // invalid preferred name","lastModifiedDate":"2024-03-14"},{"lineNumber":228,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + NAME_DESC_BOB + INVALID_PREFERRED_NAME_DESC + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":229,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES,","lastModifiedDate":"2024-03-14"},{"lineNumber":230,"author":{"gitId":"choowengyan"},"content":" PreferredName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":232,"author":{"gitId":"choowengyan"},"content":" // invalid food preference","lastModifiedDate":"2024-03-14"},{"lineNumber":233,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + INVALID_FOOD_DESC","lastModifiedDate":"2024-03-14"},{"lineNumber":234,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES,","lastModifiedDate":"2024-03-14"},{"lineNumber":235,"author":{"gitId":"choowengyan"},"content":" FoodPreference.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":237,"author":{"gitId":"choowengyan"},"content":" // invalid family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":238,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":239,"author":{"gitId":"choowengyan"},"content":" + INVALID_FAMILY_DESC + HOBBY_DESC_BOB + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES,","lastModifiedDate":"2024-03-14"},{"lineNumber":240,"author":{"gitId":"choowengyan"},"content":" FamilyCondition.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":242,"author":{"gitId":"choowengyan"},"content":" // invalid hobby","lastModifiedDate":"2024-03-14"},{"lineNumber":243,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":244,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + INVALID_HOBBY_DESC + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES,","lastModifiedDate":"2024-03-14"},{"lineNumber":245,"author":{"gitId":"choowengyan"},"content":" Hobby.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":248,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":249,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_DIABETES, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":251,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":252,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + INVALID_NAME_DESC + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":253,"author":{"gitId":"choowengyan"},"content":" + INVALID_FAMILY_DESC + HOBBY_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":257,"author":{"gitId":"choowengyan"},"content":" + FOOD_DESC_BOB + FAMILY_DESC_BOB + HOBBY_DESC_BOB + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES,","lastModifiedDate":"2024-03-14"},{"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":{"choowengyan":147,"NeoHW":10,"-":103}},{"path":"src/test/java/seedu/address/logic/parser/AddEventParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SherisseTJW"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EVENT_DESC_DATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EVENT_DESC_DATETIME;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EVENT_DESC;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_DATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_DATETIME;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.commands.AddEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"SherisseTJW"},"content":"public class AddEventParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":" private final AddEventParser parser \u003d new AddEventParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":" private final Event validDate \u003d new Event(VALID_EVENT_NAME, VALID_EVENT_DATE);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SherisseTJW"},"content":" private final Event validDateTime \u003d new Event(VALID_EVENT_NAME, VALID_EVENT_DATETIME);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(VALID_EVENT_DATE));","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\" + INVALID_EVENT_DESC));","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + VALID_EVENT_DATE));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + VALID_EVENT_DATETIME));","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + INVALID_EVENT_DESC));","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":" public void parse_validArgs_returnsAddEventCommand() throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" Index validIndex \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":" String userInput;","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand expected;","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand command;","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" userInput \u003d validIndex.getOneBased() + EVENT_DESC_DATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":" expected \u003d new AddEventCommand(validIndex, validDate);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":" command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":" assertEquals(expected, command);","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" userInput \u003d validIndex.getOneBased() + EVENT_DESC_DATETIME;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":" expected \u003d new AddEventCommand(validIndex, validDateTime);","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":" command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"SherisseTJW"},"content":" assertEquals(expected, command);","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"SherisseTJW"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"SherisseTJW":54}},{"path":"src/test/java/seedu/address/logic/parser/AddTagsCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_DEPRESSION;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_DIABETES;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DIABETES;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.AddTagsCommand;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"public class AddTagsCommandParserTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" private final AddTagsCommandParser parser \u003d new AddTagsCommandParser();","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" public void parse_validArgs_returnsAddTagsCommand() throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_DESC_DEPRESSION;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" AddTagsCommand expectedCommand \u003d new AddTagsCommand(targetIndex, Set.of(new Tag(VALID_TAG_DEPRESSION)));","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" public void parse_validDifferentCasesArgs_returnsAddTagsCommand() throws ParseException {","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" String userInput \u003d targetIndex.getOneBased() + \" t/ fall risk t/ FALL RISK t/ FaLl RiSk\";","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand expectedCommand \u003d new AddTagsCommand(targetIndex, Set.of(new Tag(\"fall risk\")));","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" public void parse_validDifferentNumOfSpacesArgs_returnsAddTagsCommand() throws ParseException {","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" String userInput \u003d targetIndex.getOneBased() + \" t/ fall risk t/ fall risk t/ FaLl RiSk\";","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand expectedCommand \u003d new AddTagsCommand(targetIndex, Set.of(new Tag(\"fall risk\")));","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" public void parse_validArgsMultipleTags_returnsAddTagsCommand() throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand expectedCommand \u003d new AddTagsCommand(targetIndex,","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":" Set.of(new Tag(VALID_TAG_DEPRESSION), new Tag(VALID_TAG_DIABETES)));","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" // Empty index","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" // Invalid tag","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\" + INVALID_TAG_DESC));","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" // Missing index","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(TAG_DESC_DEPRESSION));","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" // Empty or missing tags","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" // Only Whitespace tags","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1 \"));","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" // Mixed invalid and valid tags","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\" + INVALID_TAG_DESC","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"choowengyan"},"content":" + TAG_DESC_DEPRESSION));","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" // Multiple invalid tags","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\" + INVALID_TAG_DESC","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" + INVALID_TAG_DESC));","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" // Invalid index","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"choowengyan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"a\" + TAG_DESC_DEPRESSION));","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" // Invalid index followed by valid tag","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"choowengyan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"a\" + TAG_DESC_DEPRESSION));","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"choowengyan":12,"NeoHW":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":"SherisseTJW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.commands.AddEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.AddTagsCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-08"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.PatientUtil;","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" Patient patient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PatientUtil.getAddCommand(patient));","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" assertEquals(new AddCommand(patient), command);","lastModifiedDate":"2024-03-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" // this means that \"clear 123\" also works","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PATIENT.getOneBased());","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PATIENT), command);","lastModifiedDate":"2024-03-09"},{"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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" Patient patient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder(patient).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" + INDEX_FIRST_PATIENT.getOneBased() + \" \" + PatientUtil.getEditPatientDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PATIENT, descriptor), command);","lastModifiedDate":"2024-03-09"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" public void parseCommand_addTags() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" String args \u003d \"1 \" + PREFIX_TAG + \"tag1 \" + PREFIX_TAG + \"tag2 \" + PREFIX_TAG + \"tag3\";","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand command \u003d (AddTagsCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand.COMMAND_WORD + \" \" + args);","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e expectedTags \u003d new HashSet\u003c\u003e(Arrays.asList(new Tag(\"tag1\"), new Tag(\"tag2\"), new Tag(\"tag3\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" assertEquals(new AddTagsCommand(INDEX_FIRST_PATIENT, expectedTags), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"SherisseTJW"},"content":" public void parseCommand_addEvent() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"SherisseTJW"},"content":" String name \u003d \"Birthday\";","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"SherisseTJW"},"content":" String date \u003d \"20-01-2022\";","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"SherisseTJW"},"content":" String args \u003d \"1 \" + PREFIX_NAME + name + \" \" + PREFIX_DATETIME + date;","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand command \u003d (AddEventCommand) parser.parseCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand.COMMAND_WORD + \" \" + args);","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"SherisseTJW"},"content":" assertEquals(new AddEventCommand(INDEX_FIRST_PATIENT, new Event(name, date)), command);","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" // this means that \"exit 123\" also works","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","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_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"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_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" // this means that \"help 123\" also works","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"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_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":" // this means that \"list 123\" also works","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"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_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"SherisseTJW":13,"NeoHW":35,"-":87}},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_PATIENT));","lastModifiedDate":"2024-03-09"},{"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":"choowengyan"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"choowengyan":2,"NeoHW":2,"-":29}},{"path":"src/test/java/seedu/address/logic/parser/DeleteEventParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EVENT;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.commands.DeleteEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":"public class DeleteEventParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":" private final DeleteEventCommandParser parser \u003d new DeleteEventCommandParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" private final Index validPatientIndex \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":" private final Index validEventIndex \u003d INDEX_FIRST_EVENT;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\" + \" \"));","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + \"1\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + \" \"));","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(validPatientIndex + \" \"));","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + validEventIndex));","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":" public void parse_validArgs_returnsDeleteEventCommand() throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":" String validUserInput;","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand expected;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":" validUserInput \u003d validPatientIndex.getOneBased() + \" e/\" + validEventIndex.getOneBased();","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" expected \u003d new DeleteEventCommand(validPatientIndex, validEventIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":" assertParseSuccess(parser, validUserInput, expected);","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":" public void parse_invalidArgs_returnsDeleteEventommand() {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":" String invalidUserInput;","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":" invalidUserInput \u003d \"-1\" + \" e/\" + validEventIndex.getZeroBased();","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":" String expected \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteEventCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":" assertParseFailure(parser, invalidUserInput, expected);","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":" invalidUserInput \u003d validPatientIndex.getZeroBased() + \"d/\" + validEventIndex.getZeroBased();","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":" expected \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteEventCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":" assertParseFailure(parser, invalidUserInput, expected);","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"ZhiWei1010"},"content":" invalidUserInput \u003d validPatientIndex.getZeroBased() + \" e/\" + \"-1\";","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"SherisseTJW"},"content":" expected \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteEventCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"ZhiWei1010"},"content":" assertParseFailure(parser, invalidUserInput, expected);","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"SherisseTJW":10,"ZhiWei1010":48}},{"path":"src/test/java/seedu/address/logic/parser/DeleteTagsCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_DEPRESSION;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_DIABETES;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DIABETES;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.DeleteTagsCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"public class DeleteTagsCommandParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" private final DeleteTagsCommandParser parser \u003d new DeleteTagsCommandParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" public void parse_validArgs_returnsDeleteTagsCommand() throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_DESC_DEPRESSION;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand expectedCommand \u003d new DeleteTagsCommand(targetIndex, Set.of(new Tag(VALID_TAG_DEPRESSION)));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" public void parse_validArgsMultipleTags_returnsDeleteTagsCommand() throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand expectedCommand \u003d new DeleteTagsCommand(targetIndex,","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" Set.of(new Tag(VALID_TAG_DEPRESSION), new Tag(VALID_TAG_DIABETES)));","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" public void parse_validArgsMultipleSameTags_returnsDeleteTagsCommand() throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_DESC_DEPRESSION + TAG_DESC_DEPRESSION;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand expectedCommand \u003d new DeleteTagsCommand(targetIndex, Set.of(new Tag(VALID_TAG_DEPRESSION)));","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" // Empty index","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" // Invalid tag","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\" + INVALID_TAG_DESC));","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" // Missing index","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(TAG_DESC_DEPRESSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" // Empty or missing tags","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" // Only Whitespace tags","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1 \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" // Mixed invalid and valid tags","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\" + INVALID_TAG_DESC","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" + TAG_DESC_DEPRESSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" // Multiple invalid tags","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\" + INVALID_TAG_DESC","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" + INVALID_TAG_DESC));","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" // Invalid index","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"a\" + TAG_DESC_DEPRESSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" // Invalid index followed by valid tag","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"a\" + TAG_DESC_DEPRESSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"NeoHW":88}},{"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":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FAMILY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FAMILY_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FOOD_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOBBY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ID_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ID_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_FAMILY_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_FOOD_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_HOBBY_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ID_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PREFERRED_NAME_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREFERRED_NAME_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_DIABETES;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FAMILY_CONDITION_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FAMILY_CONDITION_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FOOD_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOBBY_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PREFERRED_NAME_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DIABETES;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PATIENT;","lastModifiedDate":"2024-03-09"},{"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.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":89,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, \"1\" + INVALID_ID_DESC, PatientHospitalId.MESSAGE_CONSTRAINTS); // invalid id","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"choowengyan"},"content":" // invalid preferred name","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, \"1\" + INVALID_PREFERRED_NAME_DESC, PreferredName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"choowengyan"},"content":" // invalid food preference","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, \"1\" + INVALID_FOOD_DESC, FoodPreference.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"choowengyan"},"content":" // invalid family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, \"1\" + INVALID_FAMILY_DESC, FamilyCondition.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, \"1\" + INVALID_HOBBY_DESC, Hobby.MESSAGE_CONSTRAINTS); // invalid hobby","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Patient} being edited,","lastModifiedDate":"2024-03-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES + TAG_EMPTY,","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"choowengyan"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_DEPRESSION + TAG_EMPTY + TAG_DESC_DIABETES,","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"choowengyan"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES,","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"choowengyan"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, \"1\" + INVALID_ID_DESC + INVALID_NAME_DESC + INVALID_PREFERRED_NAME_DESC","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"choowengyan"},"content":" + VALID_FOOD_AMY + VALID_FAMILY_CONDITION_AMY + VALID_HOBBY_AMY, PatientHospitalId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"choowengyan"},"content":" String userInput \u003d targetIndex.getOneBased() + ID_DESC_AMY + NAME_DESC_AMY + TAG_DESC_DEPRESSION","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"choowengyan"},"content":" + PREFERRED_NAME_DESC_AMY + FOOD_DESC_AMY + FAMILY_DESC_AMY + HOBBY_DESC_AMY + TAG_DESC_DIABETES;","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"choowengyan"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"choowengyan"},"content":" .withPatientHospitalId(VALID_ID_AMY).withName(VALID_NAME_AMY).withPreferredName(VALID_PREFERRED_NAME_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"choowengyan"},"content":" .withFoodPreference(VALID_FOOD_AMY).withFamilyCondition(VALID_FAMILY_CONDITION_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":123,"author":{"gitId":"choowengyan"},"content":" .withHobby(VALID_HOBBY_AMY).withTags(VALID_TAG_DIABETES, VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"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":"NeoHW"},"content":" Index targetIndex \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":132,"author":{"gitId":"choowengyan"},"content":" String userInput \u003d targetIndex.getOneBased() + FAMILY_DESC_BOB + HOBBY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"choowengyan"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"choowengyan"},"content":" .withFamilyCondition(VALID_FAMILY_CONDITION_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":136,"author":{"gitId":"choowengyan"},"content":" .withHobby(VALID_HOBBY_AMY).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_THIRD_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":147,"author":{"gitId":"SherisseTJW"},"content":" EditPatientDescriptor descriptor \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":" new EditPatientDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"choowengyan"},"content":" // preferred name","lastModifiedDate":"2024-03-14"},{"lineNumber":153,"author":{"gitId":"choowengyan"},"content":" userInput \u003d targetIndex.getOneBased() + PREFERRED_NAME_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":154,"author":{"gitId":"choowengyan"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withPreferredName(VALID_PREFERRED_NAME_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":155,"author":{"gitId":"choowengyan"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":156,"author":{"gitId":"choowengyan"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":157,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":158,"author":{"gitId":"choowengyan"},"content":" // food preference","lastModifiedDate":"2024-03-14"},{"lineNumber":159,"author":{"gitId":"choowengyan"},"content":" userInput \u003d targetIndex.getOneBased() + FOOD_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":160,"author":{"gitId":"choowengyan"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withFoodPreference(VALID_FOOD_AMY).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"choowengyan"},"content":" // family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":165,"author":{"gitId":"choowengyan"},"content":" userInput \u003d targetIndex.getOneBased() + FAMILY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":166,"author":{"gitId":"choowengyan"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withFamilyCondition(VALID_FAMILY_CONDITION_AMY).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"choowengyan"},"content":" // hobby","lastModifiedDate":"2024-03-14"},{"lineNumber":171,"author":{"gitId":"choowengyan"},"content":" userInput \u003d targetIndex.getOneBased() + HOBBY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":172,"author":{"gitId":"choowengyan"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withHobby(VALID_HOBBY_AMY).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":177,"author":{"gitId":"choowengyan"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":178,"author":{"gitId":"choowengyan"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withTags(VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"choowengyan"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_ID_DESC + ID_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"choowengyan"},"content":" userInput \u003d targetIndex.getOneBased() + ID_DESC_BOB + INVALID_ID_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"choowengyan"},"content":" userInput \u003d targetIndex.getOneBased() + ID_DESC_AMY + TAG_DESC_DIABETES + ID_DESC_AMY + TAG_DESC_DIABETES","lastModifiedDate":"2024-03-14"},{"lineNumber":197,"author":{"gitId":"choowengyan"},"content":" + ID_DESC_BOB + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES;","lastModifiedDate":"2024-03-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":"choowengyan"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_ID_DESC + INVALID_ID_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":205,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_THIRD_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"SherisseTJW"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withTags().build();","lastModifiedDate":"2024-03-13"},{"lineNumber":209,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"SherisseTJW":3,"choowengyan":75,"NeoHW":12,"-":123}},{"path":"src/test/java/seedu/address/logic/parser/EditEventCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_DATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EVENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.commands.EditEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":"public class EditEventCommandParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":" private final EditEventCommandParser editEventCommandParser \u003d new EditEventCommandParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":" private final Event validDate \u003d new Event(VALID_EVENT_NAME, VALID_EVENT_DATE);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":" assertThrows(ParseException.class, () -\u003e editEventCommandParser.parse(\"\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":" assertThrows(ParseException.class, () -\u003e editEventCommandParser.parse(\"1\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":" assertThrows(ParseException.class, () -\u003e editEventCommandParser.parse(VALID_EVENT_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":" assertThrows(ParseException.class, () -\u003e editEventCommandParser.parse(VALID_EVENT_DATE));","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":" assertThrows(ParseException.class, () -\u003e editEventCommandParser.parse(\"1\"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":" + PREFIX_EVENT + \"1\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":" assertThrows(ParseException.class, () -\u003e editEventCommandParser.parse(\"1 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":" + PREFIX_EVENT + \" 1 \" + PREFIX_NAME + VALID_EVENT_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":" assertThrows(ParseException.class, () -\u003e editEventCommandParser.parse(\"-1 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":" + PREFIX_EVENT + \" 1 \" + PREFIX_NAME + VALID_EVENT_NAME + \" \" + PREFIX_DATETIME","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":" + VALID_EVENT_DATE));","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":" assertThrows(ParseException.class, () -\u003e editEventCommandParser.parse(\"1 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":" + PREFIX_EVENT + \" -1 \" + PREFIX_NAME + VALID_EVENT_NAME + \" \" + PREFIX_DATETIME","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":" + VALID_EVENT_DATE));","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":" public void parse_validArgs_returnEditEventCommand() {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":" String userInput;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"guohuang88"},"content":" userInput \u003d INDEX_FIRST_PATIENT.getOneBased() + \" e/\" + INDEX_FIRST_EVENT.getOneBased() + \" n/\"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"guohuang88"},"content":" + VALID_EVENT_NAME + \" d/\" + VALID_EVENT_DATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"guohuang88"},"content":" editEventCommand \u003d new EditEventCommand(INDEX_FIRST_PATIENT, INDEX_FIRST_EVENT, validDate);","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"guohuang88"},"content":" assertParseSuccess(editEventCommandParser, userInput, editEventCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"guohuang88"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"guohuang88":50}},{"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":"NeoHW"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-08"},{"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":{"NeoHW":1,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-09"},{"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":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" private static final String INVALID_ID \u003d \"a3\";","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_NAME \u003d \"R@chel Lim Zhao\";","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_PREFERRED_NAME \u003d \"R@chel\";","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_FOOD_PREFERENCE \u003d \" \";","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_FAMILY_CONDITION \u003d \" \";","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_HOBBY \u003d \" \";","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_ID \u003d \"12344\";","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_NAME \u003d \"Rachel Lim Zhao\";","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_PREFERRED_NAME \u003d \"Rachel\";","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_FOOD_PREFERENCE \u003d \"Hor Fun\";","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_FAMILY_CONDITION \u003d \"Facing financial difficulty\";","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_HOBBY \u003d \"Singing\";","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_TAG_1 \u003d \"diabetes\";","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" private static final String VALID_TAG_2 \u003d \"high cholesterol\";","lastModifiedDate":"2024-03-22"},{"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":"NeoHW"},"content":" assertEquals(INDEX_FIRST_PATIENT, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" assertEquals(INDEX_FIRST_PATIENT, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" public void parsePatientHospitalId_invalidInput_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"102 a\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":" public void parsePatientHospitalId_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePatientHospitalId((String) null));","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":" public void parsePatientHospitalId_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"choowengyan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePatientHospitalId(INVALID_ID));","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"choowengyan"},"content":" public void parseHospitalPatientId_validValueWithoutWhitespace_returnsId() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"choowengyan"},"content":" PatientHospitalId expectedId \u003d new PatientHospitalId(VALID_ID);","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedId, ParserUtil.parsePatientHospitalId(VALID_ID));","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"choowengyan"},"content":" public void parseHospitalPatientId_validValueWithWhitespace_returnsTrimmedId() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"choowengyan"},"content":" String idWithWhitespace \u003d WHITESPACE + VALID_ID + WHITESPACE;","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"choowengyan"},"content":" PatientHospitalId expectedId \u003d new PatientHospitalId(VALID_ID);","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedId, ParserUtil.parsePatientHospitalId(idWithWhitespace));","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","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 parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","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 parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"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":"choowengyan"},"content":" public void parsePreferredName_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePreferredName((String) null));","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"choowengyan"},"content":" public void parsePreferredName_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":123,"author":{"gitId":"choowengyan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePreferredName(INVALID_PREFERRED_NAME));","lastModifiedDate":"2024-03-14"},{"lineNumber":124,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":125,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":127,"author":{"gitId":"choowengyan"},"content":" public void parsePreferredName_validValueWithoutWhitespace_returnsPreferredName() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"choowengyan"},"content":" PreferredName expectedPreferredName \u003d new PreferredName(VALID_PREFERRED_NAME);","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedPreferredName, ParserUtil.parsePreferredName(VALID_PREFERRED_NAME));","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":132,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"choowengyan"},"content":" public void parsePreferredName_validValueWithWhitespace_returnsTrimmedPreferredName() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":134,"author":{"gitId":"choowengyan"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_PREFERRED_NAME + WHITESPACE;","lastModifiedDate":"2024-03-14"},{"lineNumber":135,"author":{"gitId":"choowengyan"},"content":" PreferredName expectedPreferredName \u003d new PreferredName(VALID_PREFERRED_NAME);","lastModifiedDate":"2024-03-14"},{"lineNumber":136,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedPreferredName, ParserUtil.parsePreferredName(nameWithWhitespace));","lastModifiedDate":"2024-03-14"},{"lineNumber":137,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":138,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":139,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":140,"author":{"gitId":"choowengyan"},"content":" public void parseFoodPreference_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":141,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseFoodPreference((String) null));","lastModifiedDate":"2024-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":"choowengyan"},"content":" public void parseFoodPreference_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":146,"author":{"gitId":"choowengyan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseFoodPreference(INVALID_FOOD_PREFERENCE));","lastModifiedDate":"2024-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":"choowengyan"},"content":" public void parseFoodPreference_validValueWithoutWhitespace_returnsFoodPreference() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":151,"author":{"gitId":"choowengyan"},"content":" FoodPreference expectedFoodPreference \u003d new FoodPreference(VALID_FOOD_PREFERENCE);","lastModifiedDate":"2024-03-14"},{"lineNumber":152,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedFoodPreference, ParserUtil.parseFoodPreference(VALID_FOOD_PREFERENCE));","lastModifiedDate":"2024-03-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"choowengyan"},"content":" public void parseFoodPreference_validValueWithWhitespace_returnsTrimmedFoodPreference() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":157,"author":{"gitId":"choowengyan"},"content":" String foodPreferenceWithWhitespace \u003d WHITESPACE + VALID_FOOD_PREFERENCE + WHITESPACE;","lastModifiedDate":"2024-03-14"},{"lineNumber":158,"author":{"gitId":"choowengyan"},"content":" FoodPreference expectedFoodPreference \u003d new FoodPreference(VALID_FOOD_PREFERENCE);","lastModifiedDate":"2024-03-14"},{"lineNumber":159,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedFoodPreference, ParserUtil.parseFoodPreference(foodPreferenceWithWhitespace));","lastModifiedDate":"2024-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":"choowengyan"},"content":" public void parseFamilyCondition_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":164,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseFamilyCondition((String) null));","lastModifiedDate":"2024-03-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":168,"author":{"gitId":"choowengyan"},"content":" public void parseFamilyCondition_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":169,"author":{"gitId":"choowengyan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseFamilyCondition(INVALID_FAMILY_CONDITION));","lastModifiedDate":"2024-03-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":173,"author":{"gitId":"choowengyan"},"content":" public void parseFamilyCondition_validValueWithoutWhitespace_returnsFamilyCondition() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":174,"author":{"gitId":"choowengyan"},"content":" FamilyCondition expectedFamilyCondition \u003d new FamilyCondition(VALID_FAMILY_CONDITION);","lastModifiedDate":"2024-03-14"},{"lineNumber":175,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedFamilyCondition, ParserUtil.parseFamilyCondition(VALID_FAMILY_CONDITION));","lastModifiedDate":"2024-03-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":179,"author":{"gitId":"choowengyan"},"content":" public void parseFamilyCondition_validValueWithWhitespace_returnsTrimmedFamilyCondition() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":180,"author":{"gitId":"choowengyan"},"content":" String familyConditionWithWhitespace \u003d WHITESPACE + VALID_FAMILY_CONDITION + WHITESPACE;","lastModifiedDate":"2024-03-14"},{"lineNumber":181,"author":{"gitId":"choowengyan"},"content":" FamilyCondition expectedFamilyCondition \u003d new FamilyCondition(VALID_FAMILY_CONDITION);","lastModifiedDate":"2024-03-14"},{"lineNumber":182,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedFamilyCondition, ParserUtil.parseFamilyCondition(familyConditionWithWhitespace));","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" public void parseHobby_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":187,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseHobby((String) null));","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" public void parseHobby_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":192,"author":{"gitId":"choowengyan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseHobby(INVALID_HOBBY));","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" public void parseHobby_validValueWithoutWhitespace_returnsHobby() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":197,"author":{"gitId":"choowengyan"},"content":" Hobby expectedHobby \u003d new Hobby(VALID_HOBBY);","lastModifiedDate":"2024-03-14"},{"lineNumber":198,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedHobby, ParserUtil.parseHobby(VALID_HOBBY));","lastModifiedDate":"2024-03-14"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":202,"author":{"gitId":"choowengyan"},"content":" public void parseHobby_validValueWithWhitespace_returnsTrimmedHobby() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":203,"author":{"gitId":"choowengyan"},"content":" String hobbyWithWhitespace \u003d WHITESPACE + VALID_HOBBY + WHITESPACE;","lastModifiedDate":"2024-03-14"},{"lineNumber":204,"author":{"gitId":"choowengyan"},"content":" Hobby expectedHobby \u003d new Hobby(VALID_HOBBY);","lastModifiedDate":"2024-03-14"},{"lineNumber":205,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedHobby, ParserUtil.parseHobby(hobbyWithWhitespace));","lastModifiedDate":"2024-03-14"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":209,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":213,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":218,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":219,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":220,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":221,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":224,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":225,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":226,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":227,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":228,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":231,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":232,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","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_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":243,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":246,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":247,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":248,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":249,"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":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":251,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"choowengyan":100,"NeoHW":5,"-":148}},{"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":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.exceptions.DuplicatePatientException;","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" assertEquals(Collections.emptyList(), addressBook.getPatientList());","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void resetData_withDuplicatePatient_throwsDuplicatePatientException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" // Two patients with the same identity fields","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withPatientHospitalId(VALID_ID_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" .withTags(VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" List\u003cPatient\u003e newPatients \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPatients);","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" assertThrows(DuplicatePatientException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void hasPatient_nullPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPatient(null));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" assertFalse(addressBook.hasPatient(ALICE));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" addressBook.addPatient(ALICE);","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" assertTrue(addressBook.hasPatient(ALICE));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" addressBook.addPatient(ALICE);","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withPatientHospitalId(VALID_ID_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"choowengyan"},"content":" .withTags(VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" assertTrue(addressBook.hasPatient(editedAlice));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPatientList().remove(0));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{patients\u003d\" + addressBook.getPatientList() + \"}\";","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * A stub ReadOnlyAddressBook whose patients list can violate interface constraints.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" private final ObservableList\u003cPatient\u003e patients \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" AddressBookStub(Collection\u003cPatient\u003e patients) {","lastModifiedDate":"2024-03-08"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" this.patients.setAll(patients);","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public ObservableList\u003cPatient\u003e getPatientList() {","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" return patients;","lastModifiedDate":"2024-03-08"},{"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":{"choowengyan":6,"NeoHW":26,"-":76}},{"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":"NeoHW"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PATIENTS;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.BENSON;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void hasPatient_nullPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPatient(null));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void hasPatient_patientNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" assertFalse(modelManager.hasPatient(ALICE));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void hasPatient_patientInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" modelManager.addPatient(ALICE);","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" assertTrue(modelManager.hasPatient(ALICE));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPatientList().remove(0));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPatient(ALICE).withPatient(BENSON).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":" modelManager.updateFilteredPatientList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" modelManager.updateFilteredPatientList(PREDICATE_SHOW_ALL_PATIENTS);","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":15,"-":117}},{"path":"src/test/java/seedu/address/model/patient/EventTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SherisseTJW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"public class EventTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e new Event(null, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e new Event(null, \"01-01-2022\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e new Event(\"Family Visit\", null));","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":" public void constructor_invalidDate_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Event(\"Family Visit\", \"something\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Event(\"Family Visit\", \"1-1-2022\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Event(\"Family Visit\", \"01-01-22\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SherisseTJW"},"content":" public void constructor_invalidTime_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":" String validDate \u003d \"01-01-2022\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Event(\"Family Visit\",","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":" validDate + \", HH:mm - HH:mm\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Event(\"Family Visit\",","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":" validDate + \"21-02-2022, 99:88 - 99:99\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Event(\"Family Visit\",","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":" validDate + \"21-02-2022, 0000 - 2359\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":" public void isValidEvent() {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e Event.isValidEvent(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(Event.isValidEvent(\"\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(Event.isValidEvent(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(Event.isValidEvent(\"01-01-2022, HH:mm - HH:mm\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(Event.isValidEvent(\"01-01-2022, 99:99 - 99:99\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(Event.isValidEvent(\"01-01-2022, 12:12 - 99:99\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(Event.isValidEvent(\"01-01-2022, 12:12 to 12:12\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(Event.isValidEvent(\"01-01-2022 \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(Event.isValidEvent(\" 01-01-2022\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(Event.isValidEvent(\"01-01-2022\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(Event.isValidEvent(\"21-02-2022, 01:00 - 19:00\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(Event.isValidEvent(\"21-02-2022, 00:00 - 23:59\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(Event.isValidEvent(\"01-01-2022, 12:12 - 12:12 \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(Event.isValidEvent(\" 01-01-2022, 12:12 - 12:12\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"SherisseTJW"},"content":" public void compareTo() {","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"SherisseTJW"},"content":" Event earlierEvent \u003d new Event(\"Family Visit\", \"01-01-2022, 12:12 - 12:12\");","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"SherisseTJW"},"content":" Event nullTimeEvent \u003d new Event(\"Family Visit\", \"01-01-2022\");","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"SherisseTJW"},"content":" Event laterDateEvent \u003d new Event(\"Family Visit\", \"02-01-2022, 12:12 - 12:12\");","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"SherisseTJW"},"content":" Event laterMonthEvent \u003d new Event(\"Family Visit\", \"01-02-2022, 12:12 - 12:12\");","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"SherisseTJW"},"content":" Event laterYearEvent \u003d new Event(\"Family Visit\", \"01-01-2023, 12:12 - 12:12\");","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"SherisseTJW"},"content":" Event laterStartTimeEvent \u003d new Event(\"Family Visit\", \"01-01-2022, 12:13 - 12:12\");","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"SherisseTJW"},"content":" Event laterEndTimeEvent \u003d new Event(\"Family Visit\", \"01-01-2022, 12:12 - 12:13\");","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"SherisseTJW"},"content":" Event laterNameEvent \u003d new Event(\"Z\", \"01-01-2022, 12:12 - 12:12\");","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(earlierEvent.compareTo(nullTimeEvent) \u003e 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(nullTimeEvent.compareTo(earlierEvent) \u003c 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(earlierEvent.compareTo(laterDateEvent) \u003c 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(laterDateEvent.compareTo(earlierEvent) \u003e 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(earlierEvent.compareTo(laterMonthEvent) \u003c 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(laterMonthEvent.compareTo(earlierEvent) \u003e 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(earlierEvent.compareTo(laterYearEvent) \u003c 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(laterYearEvent.compareTo(earlierEvent) \u003e 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(earlierEvent.compareTo(laterStartTimeEvent) \u003c 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(laterStartTimeEvent.compareTo(earlierEvent) \u003e 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(earlierEvent.compareTo(laterEndTimeEvent) \u003c 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(laterEndTimeEvent.compareTo(earlierEvent) \u003e 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(earlierEvent.compareTo(laterNameEvent) \u003c 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(laterNameEvent.compareTo(earlierEvent) \u003e 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"SherisseTJW"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"SherisseTJW"},"content":" Event date \u003d new Event(\"Family Visit\", \"01-01-2022, 12:12 - 12:12\");","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(\"Something\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(10));","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(new Event(\"Family Visit\", \"02-01-2022, 12:12 - 12:12\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(new Event(\"Family Visit\", \"01-02-2022, 12:12 - 12:12\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(new Event(\"Family Visit\", \"01-02-2023, 12:12 - 12:12\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(new Event(\"Family Visit\", \"01-01-2022, 12:12 - 12:11\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(new Event(\"Family Visit\", \"01-01-2022, 12:12 - 11:12\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(new Event(\"Family Visit\", \"01-01-2022, 12:11 - 12:12\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(new Event(\"Family Visit\", \"01-01-2022, 11:12 - 12:12\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(date.equals(date));","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(date.equals(new Event(\"Family Visit\", \"01-01-2022, 12:12 - 12:12\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"SherisseTJW"},"content":" public void dateToString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"SherisseTJW"},"content":" Event date \u003d new Event(\"Family Visit\", \"01-01-2022\");","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(date.toString().equals(\"Family Visit (01-01-2022)\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"SherisseTJW"},"content":" public void dateTimeToString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"SherisseTJW"},"content":" Event date \u003d new Event(\"Family Visit\", \"01-01-2022, 12:12 - 12:12\");","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(date.toString().equals(\"Family Visit (01-01-2022, from 12:12 to 12:12)\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"SherisseTJW"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SherisseTJW":122}},{"path":"src/test/java/seedu/address/model/patient/FamilyConditionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"choowengyan"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"choowengyan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"choowengyan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"public class FamilyConditionTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e new FamilyCondition(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":" public void constructor_invalidFamilyCondition_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" String invalidFamilyCondition \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new FamilyCondition(invalidFamilyCondition));","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" public void isValidFamilyCondition() {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":" // null family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e FamilyCondition.isValidFamilyCondition(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" // invalid family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" assertFalse(FamilyCondition.isValidFamilyCondition(\"\")); // empty string","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" assertFalse(FamilyCondition.isValidFamilyCondition(\" \")); // spaces only","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" // valid family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" assertTrue(FamilyCondition.isValidFamilyCondition(\"Wife not around\")); // with spaces","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" assertTrue(FamilyCondition.isValidFamilyCondition(\"Overseas\")); // without spaces","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" assertTrue(FamilyCondition.isValidFamilyCondition(\"Has 2 sons\")); // allow numeric and alphabets","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" FamilyCondition familyCondition \u003d new FamilyCondition(\"good relationship\");","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" assertTrue(familyCondition.equals(new FamilyCondition(\"good relationship\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" assertTrue(familyCondition.equals(familyCondition));","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" assertFalse(familyCondition.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" assertFalse(familyCondition.equals(5.0f));","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" assertFalse(familyCondition.equals(new FoodPreference(\"son just met accident\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"choowengyan":56}},{"path":"src/test/java/seedu/address/model/patient/FoodPreferenceTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":"public class FoodPreferenceTest {","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e new FoodPreference(null));","lastModifiedDate":"2024-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":"choowengyan"},"content":" public void constructor_invalidFoodPreference_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" String invalidFoodPreference \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new FoodPreference(invalidFoodPreference));","lastModifiedDate":"2024-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":"choowengyan"},"content":" public void isValidFoodPreference() {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":" // null food preference","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e FoodPreference.isValidFoodPreference(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" // invalid food preference","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" assertFalse(FoodPreference.isValidFoodPreference(\"\")); // empty string","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" assertFalse(FoodPreference.isValidFoodPreference(\" \")); // spaces onl","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" // valid food preference","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" assertTrue(FoodPreference.isValidFoodPreference(\"chicken rice\")); // with spaces","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" assertTrue(FoodPreference.isValidFoodPreference(\"pasta\")); // without spaces","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" FoodPreference foodPreference \u003d new FoodPreference(\"pasta\");","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" assertTrue(foodPreference.equals(new FoodPreference(\"pasta\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" assertTrue(foodPreference.equals(foodPreference));","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" assertFalse(foodPreference.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" assertFalse(foodPreference.equals(5.0f));","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" assertFalse(foodPreference.equals(new FoodPreference(\"spaghetti\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"choowengyan":22,"NeoHW":1,"-":32}},{"path":"src/test/java/seedu/address/model/patient/HobbyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"choowengyan"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"choowengyan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"choowengyan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"public class HobbyTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Hobby(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":" public void constructor_invalidHobby_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" String invalidHobby \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Hobby(invalidHobby));","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" public void isValidHobby() {","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":" // null hobby","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e Hobby.isValidHobby(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" // invalid hobby","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" assertFalse(Hobby.isValidHobby(\"\")); // empty string","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" assertFalse(Hobby.isValidHobby(\" \")); // spaces only","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" // valid hobby","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" assertTrue(Hobby.isValidHobby(\"rock climbing\")); // with spaces","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" assertTrue(Hobby.isValidHobby(\"hiking\")); // without spaces","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" Hobby hobby \u003d new Hobby(\"hiking\");","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" assertTrue(hobby.equals(new Hobby(\"hiking\")));","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" assertTrue(hobby.equals(hobby));","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" assertFalse(hobby.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" assertFalse(hobby.equals(5.0f));","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" assertFalse(hobby.equals(new Hobby(\"swimming\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"choowengyan":55}},{"path":"src/test/java/seedu/address/model/patient/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" // different patient -\u003e returns false","lastModifiedDate":"2024-03-08"},{"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_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" assertFalse(predicate.test(new PatientBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" assertFalse(predicate.test(new PatientBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"guohuang88"},"content":" // Keywords match patient hospital id, preferred name, food preference, family condition and hobby,","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"guohuang88"},"content":" // but does not match patient name","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Lee\", \"Ali\", \"Pasta\", \"Daughter\", \"not\",","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"guohuang88"},"content":" \"in\", \"Singapore\", \"swimming\", \"12344\"));","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":" assertFalse(predicate.test(new PatientBuilder().withPatientHospitalId(\"12344\").withName(\"Carol Li\")","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"guohuang88"},"content":" .withPreferredName(\"Alice\").withFoodPreference(\"Pasta\").withFamilyCondition(\"Daughter not in Singapore\")","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" .withHobby(\"swimming\").build()));","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"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":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"guohuang88":5,"choowengyan":2,"NeoHW":5,"-":57}},{"path":"src/test/java/seedu/address/model/patient/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"NeoHW":1,"-":59}},{"path":"src/test/java/seedu/address/model/patient/PatientHospitalIdTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":"public class PatientHospitalIdTest {","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e new PatientHospitalId(null));","lastModifiedDate":"2024-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":"choowengyan"},"content":" public void constructor_invalidId_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" String invalidId \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new PatientHospitalId(invalidId));","lastModifiedDate":"2024-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":"choowengyan"},"content":" public void isValidId() {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e PatientHospitalId.isValidPatientHospitalId(null));","lastModifiedDate":"2024-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":"choowengyan"},"content":" assertFalse(PatientHospitalId.isValidPatientHospitalId(\"\")); // empty string","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" assertFalse(PatientHospitalId.isValidPatientHospitalId(\" \")); // spaces only","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" assertFalse(PatientHospitalId.isValidPatientHospitalId(\"@23\")); // contains non-integer character","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" assertFalse(PatientHospitalId.isValidPatientHospitalId(\"@!\")); // contains non-integer character","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" assertFalse(PatientHospitalId.isValidPatientHospitalId(\"abc\")); // contains character","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" assertFalse(PatientHospitalId.isValidPatientHospitalId(\"123ab\")); // contains character and integer","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" assertFalse(PatientHospitalId.isValidPatientHospitalId(\"-123\")); // contains negative integer","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" // valid patient hospital id","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" assertTrue(PatientHospitalId.isValidPatientHospitalId(\"12345\")); // contains all integers","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" assertTrue(PatientHospitalId.isValidPatientHospitalId(\"123\")); // contains all integers in different length","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" PatientHospitalId patientHospitalId \u003d new PatientHospitalId(\"11234\");","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" assertTrue(patientHospitalId.equals(new PatientHospitalId(\"11234\")));","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" assertTrue(patientHospitalId.equals(patientHospitalId));","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" assertFalse(patientHospitalId.equals(null));","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" assertFalse(patientHospitalId.equals(5.0f));","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" assertFalse(patientHospitalId.equals(new PatientHospitalId(\"11235\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"choowengyan":24,"NeoHW":1,"-":37}},{"path":"src/test/java/seedu/address/model/patient/PatientTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FAMILY_CONDITION_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FOOD_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOBBY_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_AMY;","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":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PREFERRED_NAME_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.BOB;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"public class PatientTest {","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" Patient patient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e patient.getTags().remove(0));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" assertTrue(ALICE.isSamePatient(ALICE));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" assertFalse(ALICE.isSamePatient(null));","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" // same id, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(VALID_PREFERRED_NAME_BOB).withFoodPreference(VALID_FOOD_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" .withFamilyCondition(VALID_FAMILY_CONDITION_BOB).withHobby(VALID_HOBBY_BOB).withTags(VALID_TAG_DEPRESSION)","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" .build();","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" assertTrue(ALICE.isSamePatient(editedAlice));","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" // different id, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withPatientHospitalId(VALID_ID_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" assertFalse(ALICE.isSamePatient(editedAlice));","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" Patient aliceCopy \u003d new PatientBuilder(ALICE).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" // different patient -\u003e returns false","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":" // different patient hospital id -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withPatientHospitalId(VALID_ID_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"choowengyan"},"content":" // different preferred name -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withPreferredName(VALID_PREFERRED_NAME_BOB).build();","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" // different food preference -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"choowengyan"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withFoodPreference(VALID_FOOD_BOB).build();","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" // different family condition -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"choowengyan"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withFamilyCondition(VALID_FAMILY_CONDITION_BOB).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":87,"author":{"gitId":"choowengyan"},"content":" // different hobby -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"choowengyan"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withHobby(VALID_HOBBY_BOB).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"choowengyan"},"content":" String expected \u003d Patient.class.getCanonicalName() + \"{patientHospitalId\u003d\" + ALICE.getPatientHospitalId()","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"choowengyan"},"content":" + \", name\u003d\" + ALICE.getName() + \", preferredName\u003d\" + ALICE.getPreferredName()","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"choowengyan"},"content":" + \", foodPreference\u003d\" + ALICE.getFoodPreference() + \", familyCondition\u003d\" + ALICE.getFamilyCondition()","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"choowengyan"},"content":" + \", hobby\u003d\" + ALICE.getHobby()","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" + \", tags\u003d\" + ALICE.getTags() + \", events\u003d\" + ALICE.getEvents() + \"}\";;","lastModifiedDate":"2024-03-18"},{"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":{"SherisseTJW":1,"choowengyan":27,"NeoHW":14,"-":59}},{"path":"src/test/java/seedu/address/model/patient/PreferredNameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":"public class PreferredNameTest {","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e new PreferredName(null));","lastModifiedDate":"2024-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":"choowengyan"},"content":" public void constructor_invalidPreferredName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" String invalidPreferredName \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new PreferredName(invalidPreferredName));","lastModifiedDate":"2024-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":"choowengyan"},"content":" public void isValidPreferredName() {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null address","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e PreferredName.isValidPreferredName(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" // invalid preferred name","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" assertFalse(PreferredName.isValidPreferredName(\"\")); // empty string","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" assertFalse(PreferredName.isValidPreferredName(\" \")); // spaces only","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" // valid preferred name","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" assertTrue(PreferredName.isValidPreferredName(\"Kenny\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" assertTrue(PreferredName.isValidPreferredName(\"Ah Ken\")); // with spaces","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" PreferredName preferredName \u003d new PreferredName(\"Valid Preferred Name\");","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" assertTrue(preferredName.equals(new PreferredName(\"Valid Preferred Name\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" assertTrue(preferredName.equals(preferredName));","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" assertFalse(preferredName.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" assertFalse(preferredName.equals(5.0f));","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" assertFalse(preferredName.equals(new PreferredName(\"Other Valid Preferred Name\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"choowengyan":19,"NeoHW":1,"-":35}},{"path":"src/test/java/seedu/address/model/patient/UniquePatientListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.testutil.TypicalPatients.AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.BOB;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":"import seedu.address.model.patient.exceptions.DuplicatePatientException;","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.exceptions.PatientNotFoundException;","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"public class UniquePatientListTest {","lastModifiedDate":"2024-03-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" private final UniquePatientList uniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" public void contains_nullPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.contains(null));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void contains_patientNotInList_returnsFalse() {","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" assertFalse(uniquePatientList.contains(ALICE));","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" public void contains_patientInList_returnsTrue() {","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" assertTrue(uniquePatientList.contains(ALICE));","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" public void contains_patientWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withPatientHospitalId(VALID_ID_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" .withTags(VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" assertTrue(uniquePatientList.contains(editedAlice));","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" public void add_nullPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.add(null));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void add_duplicatePatient_throwsDuplicatePatientException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" assertThrows(DuplicatePatientException.class, () -\u003e uniquePatientList.add(ALICE));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void setPatient_nullTargetPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.setPatient(null, ALICE));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void setPatient_nullEditedPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.setPatient(ALICE, null));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void setPatient_targetPatientNotInList_throwsPatientNotFoundException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" assertThrows(PatientNotFoundException.class, () -\u003e uniquePatientList.setPatient(ALICE, ALICE));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void setPatient_editedPatientIsSamePatient_success() {","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.setPatient(ALICE, ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-08"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" expectedUniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" public void setPatient_editedPatientHasSameIdentity_success() {","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":89,"author":{"gitId":"choowengyan"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withPatientHospitalId(VALID_ID_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"choowengyan"},"content":" .withTags(VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.setPatient(ALICE, editedAlice);","lastModifiedDate":"2024-03-08"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-08"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" expectedUniquePatientList.add(editedAlice);","lastModifiedDate":"2024-03-08"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" public void setPatient_editedPatientHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.setPatient(ALICE, BOB);","lastModifiedDate":"2024-03-08"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-08"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" expectedUniquePatientList.add(BOB);","lastModifiedDate":"2024-03-08"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" public void setPatient_editedPatientHasNonUniqueIdentity_throwsDuplicatePatientException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":109,"author":{"gitId":"choowengyan"},"content":" uniquePatientList.add(AMY);","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"choowengyan"},"content":" assertThrows(DuplicatePatientException.class, () -\u003e uniquePatientList.setPatient(ALICE, AMY));","lastModifiedDate":"2024-03-17"},{"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":"NeoHW"},"content":" public void remove_nullPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.remove(null));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void remove_patientDoesNotExist_throwsPatientNotFoundException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" assertThrows(PatientNotFoundException.class, () -\u003e uniquePatientList.remove(ALICE));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void remove_existingPatient_removesPatient() {","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.remove(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-08"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" public void setPatients_nullUniquePatientList_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.setPatients((UniquePatientList) null));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void setPatients_uniquePatientList_replacesOwnListWithProvidedUniquePatientList() {","lastModifiedDate":"2024-03-09"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-08"},{"lineNumber":140,"author":{"gitId":"NeoHW"},"content":" expectedUniquePatientList.add(BOB);","lastModifiedDate":"2024-03-08"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.setPatients(expectedUniquePatientList);","lastModifiedDate":"2024-03-08"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" public void setPatients_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.setPatients((List\u003cPatient\u003e) null));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void setPatients_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":153,"author":{"gitId":"NeoHW"},"content":" List\u003cPatient\u003e patientList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-03-08"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.setPatients(patientList);","lastModifiedDate":"2024-03-08"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-08"},{"lineNumber":156,"author":{"gitId":"NeoHW"},"content":" expectedUniquePatientList.add(BOB);","lastModifiedDate":"2024-03-08"},{"lineNumber":157,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" public void setPatients_listWithDuplicatePatients_throwsDuplicatePatientException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":162,"author":{"gitId":"NeoHW"},"content":" List\u003cPatient\u003e listWithDuplicatePatients \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":163,"author":{"gitId":"NeoHW"},"content":" assertThrows(DuplicatePatientException.class, () -\u003e uniquePatientList.setPatients(listWithDuplicatePatients));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" -\u003e uniquePatientList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" assertEquals(uniquePatientList.asUnmodifiableObservableList().toString(), uniquePatientList.toString());","lastModifiedDate":"2024-03-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"choowengyan":9,"NeoHW":80,"-":87}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPatientTest.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":"NeoHW"},"content":"import static seedu.address.storage.JsonAdaptedPatient.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.BENSON;","lastModifiedDate":"2024-03-09"},{"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":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"public class JsonAdaptedPatientTest {","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_ID \u003d \"-1\";","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_NAME \u003d \"R@chel Lim\";","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_PREFERRED_NAME \u003d \"R@chel\";","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_FOOD_PREFERENCE \u003d \" \";","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_FAMILY_CONDITION \u003d \" \";","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_HOBBY \u003d \" \";","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_TAG \u003d \"#Diabetes\";","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" private static final String INVALID_EVENT_DATETIME_STR \u003d \"Something\";","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_PATIENT_HOSPITAL_ID \u003d BENSON.getPatientHospitalId().patientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_PREFERRED_NAME \u003d BENSON.getPreferredName().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_FOOD_PREFERENCE \u003d BENSON.getFoodPreference().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_FAMILY_CONDITION \u003d BENSON.getFamilyCondition().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_HOBBY \u003d BENSON.getHobby().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":" private static final String VALID_EVENT_NAME \u003d \"Birthday\";","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":" private static final List\u003cJsonAdaptedEvent\u003e VALID_EVENTS \u003d BENSON.getEvents().stream()","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":" .map(JsonAdaptedEvent::new)","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-15"},{"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":"NeoHW"},"content":" JsonAdaptedPatient person \u003d new JsonAdaptedPatient(BENSON);","lastModifiedDate":"2024-03-09"},{"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":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" public void toModelType_invalidPatientHospitalId_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" JsonAdaptedPatient person \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" new JsonAdaptedPatient(INVALID_ID, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d PatientHospitalId.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":" public void toModelType_nullPatientHospitalId_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" JsonAdaptedPatient person \u003d new JsonAdaptedPatient(null, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, PatientHospitalId.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" JsonAdaptedPatient person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":" new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, INVALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.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_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"choowengyan"},"content":" JsonAdaptedPatient person \u003d new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, null, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"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":"choowengyan"},"content":" public void toModelType_invalidPreferredName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"choowengyan"},"content":" JsonAdaptedPatient person \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"choowengyan"},"content":" new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, INVALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d PreferredName.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"choowengyan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"choowengyan"},"content":" public void toModelType_nullPreferredName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"choowengyan"},"content":" JsonAdaptedPatient person \u003d new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, null,","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, PreferredName.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"choowengyan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"choowengyan"},"content":" public void toModelType_invalidFoodPreference_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" JsonAdaptedPatient person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"choowengyan"},"content":" new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" INVALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d FoodPreference.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"choowengyan"},"content":" public void toModelType_nullFoodPreference_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"choowengyan"},"content":" JsonAdaptedPatient person \u003d new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"SherisseTJW"},"content":" null, VALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, FoodPreference.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"choowengyan"},"content":" public void toModelType_invalidFamilyCondition_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":" JsonAdaptedPatient person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"choowengyan"},"content":" new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, INVALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d FamilyCondition.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"choowengyan"},"content":" public void toModelType_nullFamilyCondition_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"choowengyan"},"content":" JsonAdaptedPatient person \u003d new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, null, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, FamilyCondition.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"choowengyan"},"content":" public void toModelType_invalidHobby_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" JsonAdaptedPatient person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":140,"author":{"gitId":"choowengyan"},"content":" new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, INVALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d Hobby.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, 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":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"choowengyan"},"content":" public void toModelType_nullHobby_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"choowengyan"},"content":" JsonAdaptedPatient person \u003d new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, null, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Hobby.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":158,"author":{"gitId":"NeoHW"},"content":" JsonAdaptedPatient person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":159,"author":{"gitId":"choowengyan"},"content":" new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, VALID_HOBBY, invalidTags, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":164,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":165,"author":{"gitId":"SherisseTJW"},"content":" public void toModelType_invalidDateTime_throwsIllegalValueException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":166,"author":{"gitId":"SherisseTJW"},"content":" List\u003cJsonAdaptedEvent\u003e invalidImportantDates \u003d new ArrayList\u003c\u003e(VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"SherisseTJW"},"content":" invalidImportantDates.add(new JsonAdaptedEvent(VALID_EVENT_NAME,","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"SherisseTJW"},"content":" INVALID_EVENT_DATETIME_STR));","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"SherisseTJW"},"content":" JsonAdaptedPatient person \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":170,"author":{"gitId":"choowengyan"},"content":" new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"choowengyan"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, invalidImportantDates);","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-03-15"},{"lineNumber":173,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"SherisseTJW":27,"choowengyan":70,"NeoHW":9,"-":68}},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.HOON;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.IDA;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" public void readAddressBook_invalidPatientAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPatientAddressBook.json\"));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void readAddressBook_invalidAndValidPatientAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPatientAddressBook.json\"));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" original.addPatient(HOON);","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" original.removePatient(ALICE);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" original.addPatient(IDA);","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":11,"-":99}},{"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":"NeoHW"},"content":"import seedu.address.testutil.TypicalPatients;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPatientAddressBook.json\");","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPatientAddressBook.json\");","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePatientAddressBook.json\");","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPatients.getTypicalAddressBook();","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PATIENT,","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":6,"-":41}},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"NeoHW":1,"-":67}},{"path":"src/test/java/seedu/address/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withPatient(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Adds a new {@code Patient} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" public AddressBookBuilder withPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" addressBook.addPatient(patient);","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":5,"-":29}},{"path":"src/test/java/seedu/address/testutil/EditPatientDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" * A utility class to help with building EditPatientDescriptor objects.","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"public class EditPatientDescriptorBuilder {","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":" private EditPatientDescriptor descriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" public EditPatientDescriptorBuilder() {","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":" descriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" public EditPatientDescriptorBuilder(EditPatientDescriptor descriptor) {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":" this.descriptor \u003d new EditPatientDescriptor(descriptor);","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" * Returns an {@code EditPatientDescriptor} with fields containing {@code patient}\u0027s details","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" public EditPatientDescriptorBuilder(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" descriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" descriptor.setPatientHospitalId(patient.getPatientHospitalId());","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" descriptor.setName(patient.getName());","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" descriptor.setPreferredName(patient.getPreferredName());","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" descriptor.setFoodPreference(patient.getFoodPreference());","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" descriptor.setFamilyCondition(patient.getFamilyCondition());","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" descriptor.setHobby(patient.getHobby());","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" descriptor.setTags(patient.getTags());","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" * Sets the {@code PatientHospitalId} of the {@code EditPatientDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" public EditPatientDescriptorBuilder withPatientHospitalId(String id) {","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" descriptor.setPatientHospitalId(new PatientHospitalId(id));","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" * Sets the {@code Name} of the {@code EditPatientDescriptor} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" public EditPatientDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" * Sets the {@code PreferredName} of the {@code EditPatientDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":" public EditPatientDescriptorBuilder withPreferredName(String preferredName) {","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":" descriptor.setPreferredName(new PreferredName(preferredName));","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"choowengyan"},"content":" * Sets the {@code FoodPreference} of the {@code EditPatientDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"choowengyan"},"content":" public EditPatientDescriptorBuilder withFoodPreference(String food) {","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":" descriptor.setFoodPreference(new FoodPreference(food));","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"choowengyan"},"content":" * Sets the {@code FamilyCondition} of the {@code EditPatientDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"choowengyan"},"content":" public EditPatientDescriptorBuilder withFamilyCondition(String familyCondition) {","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"choowengyan"},"content":" descriptor.setFamilyCondition(new FamilyCondition(familyCondition));","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"choowengyan"},"content":" * Sets the {@code Hobby} of the {@code EditPatientDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"choowengyan"},"content":" public EditPatientDescriptorBuilder withHobby(String hobby) {","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"choowengyan"},"content":" descriptor.setHobby(new Hobby(hobby));","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPatientDescriptor}","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" * that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" public EditPatientDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" * Parses the name and dateTimeStr into a {@code Set\u003cEvent\u003e} and set it to the","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"SherisseTJW"},"content":" * {@code EditPatientDescriptor} that we are building.","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"SherisseTJW"},"content":" public EditPatientDescriptorBuilder withEvent(String name, String dateTimeStr) {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cEvent\u003e events \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"SherisseTJW"},"content":" events.add(new Event(name, dateTimeStr));","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"SherisseTJW"},"content":" descriptor.setEvents(events);","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"SherisseTJW"},"content":" return this;","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"SherisseTJW"},"content":" public EditPatientDescriptor build() {","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":" return descriptor;","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"SherisseTJW":21,"choowengyan":35,"NeoHW":65}},{"path":"src/test/java/seedu/address/testutil/PatientBuilder.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":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" * A utility class to help with building Patient objects.","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"public class PatientBuilder {","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":" public static final String DEFAULT_ID \u003d \"12334\";","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee Kian Ling\";","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":" public static final String DEFAULT_PREFERRED_NAME \u003d \"Amy\";","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" public static final String DEFAULT_FOOD_PREFERENCE \u003d \"Hor Fun\";","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":" public static final String DEFAULT_FAMILY_CONDITION \u003d \"Financially unstable\";","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" public static final String DEFAULT_HOBBY \u003d \"Singing karaoke\";","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" private PatientHospitalId patientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" private PreferredName preferredName;","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" private FoodPreference foodPreference;","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" private FamilyCondition familyCondition;","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" private Hobby hobby;","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":" private Set\u003cEvent\u003e events;","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * Creates a {@code PatientBuilder} with the default details.","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" public PatientBuilder() {","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" patientHospitalId \u003d new PatientHospitalId(DEFAULT_ID);","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" preferredName \u003d new PreferredName(DEFAULT_PREFERRED_NAME);","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" foodPreference \u003d new FoodPreference(DEFAULT_FOOD_PREFERENCE);","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" familyCondition \u003d new FamilyCondition(DEFAULT_FAMILY_CONDITION);","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" hobby \u003d new Hobby(DEFAULT_HOBBY);","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" events \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"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":"NeoHW"},"content":" * Initializes the PatientBuilder with the data of {@code patientToCopy}.","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" public PatientBuilder(Patient patientToCopy) {","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":" patientHospitalId \u003d patientToCopy.getPatientHospitalId();","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" name \u003d patientToCopy.getName();","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" preferredName \u003d patientToCopy.getPreferredName();","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" foodPreference \u003d patientToCopy.getFoodPreference();","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":" familyCondition \u003d patientToCopy.getFamilyCondition();","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":" hobby \u003d patientToCopy.getHobby();","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" tags \u003d new HashSet\u003c\u003e(patientToCopy.getTags());","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"SherisseTJW"},"content":" events \u003d new HashSet\u003c\u003e(patientToCopy.getEvents());","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":" * Sets the {@code PatientHospitalId} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":" public PatientBuilder withPatientHospitalId(String id) {","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":" this.patientHospitalId \u003d new PatientHospitalId(id);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" * Sets the {@code Name} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" public PatientBuilder withName(String name) {","lastModifiedDate":"2024-03-09"},{"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":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"choowengyan"},"content":" * Sets the {@code PreferredName} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"choowengyan"},"content":" public PatientBuilder withPreferredName(String preferredName) {","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"choowengyan"},"content":" this.preferredName \u003d new PreferredName(preferredName);","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"choowengyan"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Patient} that we are building.","lastModifiedDate":"2024-03-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" public PatientBuilder withTags(String ... tags) {","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","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":"choowengyan"},"content":" * Sets the {@code FoodPreference} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":101,"author":{"gitId":"choowengyan"},"content":" public PatientBuilder withFoodPreference(String foodPreference) {","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"choowengyan"},"content":" this.foodPreference \u003d new FoodPreference(foodPreference);","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" * Sets the {@code FamilyCondition} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":109,"author":{"gitId":"choowengyan"},"content":" public PatientBuilder withFamilyCondition(String familyCondition) {","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"choowengyan"},"content":" this.familyCondition \u003d new FamilyCondition(familyCondition);","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":115,"author":{"gitId":"choowengyan"},"content":" * Sets the {@code Hobby} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":117,"author":{"gitId":"choowengyan"},"content":" public PatientBuilder withHobby(String hobby) {","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"choowengyan"},"content":" this.hobby \u003d new Hobby(hobby);","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":122,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"SherisseTJW"},"content":" * Sets the Event of the {@code Patient} that we are building,","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"SherisseTJW"},"content":" * with the name and date/datetime of the event","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"SherisseTJW"},"content":" * @param names description of events","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"SherisseTJW"},"content":" * @param events array of string of dates","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"choowengyan"},"content":" * @return return PatientBuilder withImportantDates","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"SherisseTJW"},"content":" public PatientBuilder withEvents(String[] names, String[] events) {","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"SherisseTJW"},"content":" this.events \u003d SampleDataUtil.getEventSet(names, events);","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"SherisseTJW"},"content":" return this;","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"choowengyan"},"content":" * Builds {@code Patient} with new Patient.","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":" public Patient build() {","lastModifiedDate":"2024-03-08"},{"lineNumber":139,"author":{"gitId":"choowengyan"},"content":" return new Patient(patientHospitalId, name, preferredName, foodPreference, familyCondition, hobby, tags,","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"SherisseTJW"},"content":" events);","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"SherisseTJW":17,"choowengyan":56,"NeoHW":15,"-":55}},{"path":"src/test/java/seedu/address/testutil/PatientUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FAMILY_CONDITION;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FOOD_PREFERENCE;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOBBY;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PID;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PREFERRED_NAME;","lastModifiedDate":"2024-03-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 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":"NeoHW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * A utility class for Patient.","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"public class PatientUtil {","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * Returns an add command string for adding the {@code patient}.","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" public static String getAddCommand(Patient patient) {","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPatientDetails(patient);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Returns the part of command string for the given {@code patient}\u0027s details.","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" public static String getPatientDetails(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" sb.append(PREFIX_PID + patient.getPatientHospitalId().patientHospitalId + \" \");","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" sb.append(PREFIX_NAME + patient.getName().fullName + \" \");","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" sb.append(PREFIX_PREFERRED_NAME + patient.getPreferredName().preferredName + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" sb.append(PREFIX_FOOD_PREFERENCE + patient.getFoodPreference().foodPreference + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" sb.append(PREFIX_FAMILY_CONDITION + patient.getFamilyCondition().familyCondition + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" sb.append(PREFIX_HOBBY + patient.getHobby().hobby + \" \");","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" patient.getTags().stream().forEach(","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * Returns the part of command string for the given {@code EditPatientDescriptor}\u0027s details.","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" public static String getEditPatientDescriptorDetails(EditPatientDescriptor descriptor) {","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" descriptor.getPatientHospitalId().ifPresent(patientHospitalId -\u003e sb.append(PREFIX_PID)","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" .append(patientHospitalId.patientHospitalId).append(\" \"));","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" descriptor.getPreferredName().ifPresent(preferredName -\u003e sb.append(PREFIX_PREFERRED_NAME)","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":" .append(preferredName.preferredName).append(\" \"));","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" descriptor.getFoodPreference().ifPresent(foodPreference -\u003e sb.append(PREFIX_FOOD_PREFERENCE)","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" .append(foodPreference.foodPreference).append(\" \"));","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" descriptor.getFamilyCondition().ifPresent(familyCondition -\u003e sb.append(PREFIX_FAMILY_CONDITION)","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":" .append(familyCondition.familyCondition).append(\" \"));","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":" descriptor.getHobby().ifPresent(hobby -\u003e sb.append(PREFIX_HOBBY).append(hobby.hobby).append(\" \"));","lastModifiedDate":"2024-03-14"},{"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":{"choowengyan":19,"NeoHW":13,"-":40}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * Returns the middle index of the patient in the {@code model}\u0027s patient list.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" return Index.fromOneBased(model.getFilteredPatientList().size() / 2);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Returns the last index of the patient in the {@code model}\u0027s patient list.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" return Index.fromOneBased(model.getFilteredPatientList().size());","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Returns the patient in the {@code model}\u0027s patient list at {@code index}.","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" public static Patient getPatient(Model model, Index index) {","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" return model.getFilteredPatientList().get(index.getZeroBased());","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"NeoHW":8,"-":47}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" public static final Index INDEX_FIRST_PATIENT \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" public static final Index INDEX_SECOND_PATIENT \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" public static final Index INDEX_THIRD_PATIENT \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" public static final Index INDEX_FIRST_EVENT \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":" public static final Index INDEX_SECOND_EVENT \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" public static final Index INDEX_THIRD_EVENT \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"ZhiWei1010":3,"NeoHW":3,"-":9}},{"path":"src/test/java/seedu/address/testutil/TypicalPatients.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":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_DATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_DATETIME;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FAMILY_CONDITION_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FAMILY_CONDITION_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FOOD_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FOOD_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOBBY_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOBBY_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PREFERRED_NAME_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PREFERRED_NAME_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DIABETES;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-15"},{"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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * A utility class containing a list of {@code Patient} objects to be used in tests.","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"public class TypicalPatients {","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" public static final Patient ALICE \u003d new PatientBuilder().withPatientHospitalId(\"12234\").withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(\"Alice\").withFoodPreference(\"Duck rice\")","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" .withFamilyCondition(\"Have 2 daughters working overseas\").withHobby(\"Watching Hong Kong drama\")","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" .withTags(\"depression\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" public static final Patient BENSON \u003d new PatientBuilder().withPatientHospitalId(\"12235\").withName(\"Benson Meier\")","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(\"Benson\").withFoodPreference(\"Kampung Fried Rice\").withFamilyCondition(\"Wife in ICU\")","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" .withHobby(\"Listen to Coldplay songs\").withTags(\"diabetes\", \"cholesterol\").withEvents(","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":" new String[] { VALID_EVENT_NAME, VALID_EVENT_NAME },","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":" new String[] { VALID_EVENT_DATE, VALID_EVENT_DATETIME }).build();;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" public static final Patient CARL \u003d new PatientBuilder().withPatientHospitalId(\"12236\").withName(\"Carl Kurz\")","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(\"Ah Carl\").withFoodPreference(\"Sambal fish\").withFamilyCondition(\"Has no children\")","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" .withHobby(\"Likes to play mahjong\").build();","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" public static final Patient DANIEL \u003d new PatientBuilder().withPatientHospitalId(\"12237\").withName(\"Daniel Meier\")","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(\"Ah Da\").withFoodPreference(\"Steak\").withFamilyCondition(\"Nieces not around Singapore\")","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" .withHobby(\"Cycling\").withTags(\"eczema\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" public static final Patient ELLE \u003d new PatientBuilder().withPatientHospitalId(\"12238\").withName(\"Elle Meyer\")","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(\"Elle\").withFoodPreference(\"Maggie Goreng\").withFamilyCondition(\"Husband working overseas\")","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" .withHobby(\"Dancing\").build();","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" public static final Patient FIONA \u003d new PatientBuilder().withPatientHospitalId(\"12239\").withName(\"Fiona Kunz\")","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(\"Ms Fi\").withFoodPreference(\"Fish soup without milk\")","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" .withFamilyCondition(\"Daughter fights with her every week\").withHobby(\"dancing\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" public static final Patient GEORGE \u003d new PatientBuilder().withPatientHospitalId(\"12240\").withName(\"George Best\")","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(\"George\").withFoodPreference(\"Salmon with lemon\").withFamilyCondition(\"no children\")","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" .withHobby(\"reading books\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" public static final Patient HOON \u003d new PatientBuilder().withPatientHospitalId(\"12241\").withName(\"Hoon Meier\")","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(\"Ah Hoon\").withFoodPreference(\"Char Kuey Teow\").withFamilyCondition(\"Husband unable to walk\")","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":" .withHobby(\"Reads novel\").build();","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":" public static final Patient IDA \u003d new PatientBuilder().withPatientHospitalId(\"12242\").withName(\"Ida Mueller\")","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(\"Puan Ida\").withFoodPreference(\"Nasi Kandang\").withFamilyCondition(\"Children abandoned her\")","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" .withHobby(\"Plays congkak\").build();","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" // Manually added - Patient\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" public static final Patient AMY \u003d new PatientBuilder().withPatientHospitalId(VALID_ID_AMY).withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(VALID_PREFERRED_NAME_AMY).withFoodPreference(VALID_FOOD_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":" .withFamilyCondition(VALID_FAMILY_CONDITION_AMY).withHobby(VALID_HOBBY_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":" .withTags(VALID_TAG_DIABETES).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":" public static final Patient BOB \u003d new PatientBuilder().withPatientHospitalId(VALID_ID_BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(VALID_PREFERRED_NAME_BOB).withFoodPreference(VALID_FOOD_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":" .withFamilyCondition(VALID_FAMILY_CONDITION_BOB).withHobby(VALID_HOBBY_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"choowengyan"},"content":" .withTags(VALID_TAG_DEPRESSION, VALID_TAG_DIABETES).build();","lastModifiedDate":"2024-03-14"},{"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":"NeoHW"},"content":" private TypicalPatients() {} // prevents instantiation","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" * Returns an {@code AddressBook} with all the typical patients.","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" for (Patient patient : getTypicalPatients()) {","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" ab.addPatient(patient);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public static List\u003cPatient\u003e getTypicalPatients() {","lastModifiedDate":"2024-03-09"},{"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":{"SherisseTJW":9,"choowengyan":47,"NeoHW":9,"-":28}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"[![Java CI](https://github.com/AY2324S2-CS2103-F09-2/tp/actions/workflows/gradle.yml/badge.svg?branch\u003dmaster)](https://github.com/AY2324S2-CS2103-F09-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103-F09-2/tp/graph/badge.svg?token\u003dAX3SGG0FMX)](https://codecov.io/gh/AY2324S2-CS2103-F09-2/tp)\\","lastModifiedDate":"2024-03-14"},{"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":"NeoHW"},"content":"**PatientSync is a desktop application meticulously crafted for nurses who prioritize the well-being of their patients above all else.**\\","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"It allows you to input intimate details about your patients, such as food preferences and family conditions. While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"## User Profile","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"**Target Users:** Nurses in a hospital setting","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"**Key Challenges:**","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"- Managing diverse patient needs and preferences.","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"- Providing personalized care while juggling a busy schedule.","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"- Ensuring accurate and up-to-date patient information is readily accessible.","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"## Value Proposition","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"**PatientSync** is meticulously crafted for nurses who prioritize the well-being of their patients above all else. It allows nurses to input intimate details about their patients, such as food preferences and family conditions. This personalized approach enables nurses to deliver tailored care that meets the unique needs of each individual.","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"| Project Links | Description |","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"|-------------------------|------------------------------------------------------------------|","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"| [Project Website](https://ay2324s2-cs2103-f09-2.github.io/tp/) | Official website for the PatientSync desktop application. |","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":"| [User Guide](https://ay2324s2-cs2103-f09-2.github.io/tp/UserGuide.html#quick-start) | Quick Start guide for users interested in using PatientSync. |","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":"| [Developer Guide](https://ay2324s2-cs2103-f09-2.github.io/tp/DeveloperGuide.html) | Comprehensive guide for developers interested in contributing to PatientSync. |","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":"| [About Us](https://ay2324s2-cs2103-f09-2.github.io/tp/AboutUs.html) | Learn more about the team behind the PatientSync project. |","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"**Acknowledgements**\\","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"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":33,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"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":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"SherisseTJW":3,"NeoHW":30,"-":2}},{"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":"NeoHW"},"content":"run {","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":65,"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":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":73,"author":{"gitId":"ZhiWei1010"},"content":" archiveFileName \u003d \u0027PatientSync.jar\u0027","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"ZhiWei1010":1,"NeoHW":4,"-":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":"NeoHW"},"content":"### Neo Haowei","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"\u003cimg src\u003d\"images/neohw.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"[[github](http://github.com/NeoHW)]","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"[[portfolio](https://ay2324s2-cs2103-f09-2.github.io/tp/)]","lastModifiedDate":"2024-03-04"},{"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":"NeoHW"},"content":"* Responsibilities: Overall project coordination, code review","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":"### Sherisse Tan Jing Wen","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":"\u003cimg src\u003d\"images/sherissetjw.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":"[[github](http://github.com/SherisseTJW)] [[portfolio](https://ay2324s2-cs2103-f09-2.github.io/tp/)]","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":"* Role: Integration","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":"* Responsibilities: In charge of versioning of the code, maintaining the code repository,","lastModifiedDate":"2024-03-06"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":"integrating various parts of the software to create a whole.","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":"### Li Guohuang","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":"\u003cimg src\u003d\"images/guohuang88.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":"[[github](http://github.com/guohuang88)]","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":"[[portfolio](https://ay2324s2-cs2103-f09-2.github.io/tp/)]","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":"* Role: Testing","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":"* Responsibilities: Ensure project is tested properly and on time.","lastModifiedDate":"2024-03-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":"### Tan Zhi Wei","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":"\u003cimg src\u003d\"images/zhiwei1010.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":"[[github](http://github.com/ZhiWei1010)]","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":"[[portfolio](https://ay2324s2-cs2103-f09-2.github.io/tp/)]","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":"* Responsibilities: Ensure project deliverables are done on time and in the right format.","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":"### Choo Weng Yan","lastModifiedDate":"2024-03-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":"\u003cimg src\u003d\"images/choowengyan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-07"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":"[[github](http://github.com/choowengyan)] ","lastModifiedDate":"2024-03-07"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":"[[portfolio](https://ay2324s2-cs2103-f09-2.github.io/tp/)]","lastModifiedDate":"2024-03-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":"* Role: Scheduling and tracking","lastModifiedDate":"2024-03-07"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":"* Responsibilities: Ensure that team\u0027s task is scheduled properly based on each iteration and milestone, ","lastModifiedDate":"2024-03-07"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":"optimizing project timeline, updating task status and providing accurate information.","lastModifiedDate":"2024-03-07"}],"authorContributionMap":{"guohuang88":6,"SherisseTJW":6,"ZhiWei1010":6,"choowengyan":7,"NeoHW":5,"-":33}},{"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":"NeoHW"},"content":"# PatientSync Developer Guide","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":"## 1. Introduction","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"### **1.1 Product Overview**","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"PatientSync addresses a crucial gap in the current hospital systems by providing nurses with a comprehensive tool to manage patient information beyond administrative details.","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"In many hospitals, the existing systems typically offer basic administrative information such as patient names and contact details. However, they often lack the capacity to delve into the intimate details of patient care.","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"This app can help with personalised and effective care by:","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"* viewing and managing upcoming checkup and appointment dates for each patient.","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"* Utilising tags to categorize patients into groups based on conditions, treatment plans, or other criteria.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30"},{"lineNumber":26,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"### 1.2 Setting up, getting started","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","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":"NeoHW"},"content":"### 1.3 Acknowledgements","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":"PatientSync is a brownfield Java Project based on the AB3 project template created by the SE-EDU initiative.","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":"## 2 Design","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":"### 2.1 Architecture","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":"**2.1.1. Main components of the architecture**","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"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":54,"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":55,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":"**2.1.2. How the architecture components interact with each other**","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"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":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31"},{"lineNumber":75,"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":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"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":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":79,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":81,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":"### 2.2 UI component","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"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":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PatientListPanel`, `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":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"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":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":96,"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":97,"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":98,"author":{"gitId":"NeoHW"},"content":"* depends on some classes in the `Model` component, as it displays `Patient` object residing in the `Model`.","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":"### 2.3 Logic component","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"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":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":108,"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":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"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":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"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":115,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":119,"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":120,"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":121,"author":{"gitId":"NeoHW"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a patient).\u003cbr\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":122,"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":123,"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":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":125,"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":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31"},{"lineNumber":130,"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":131,"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":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":"### 2.4 Model component","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"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":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":"* stores the address book data i.e., all `Patient` objects (which are contained in a `UniquePatientList` object).","lastModifiedDate":"2024-03-09"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":"* stores the currently \u0027selected\u0027 `Patient` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPatient\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":"2024-03-09"},{"lineNumber":143,"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":144,"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":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Patient` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Patient` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2024-03-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":"### 2.5 Storage component","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"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":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":161,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"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":163,"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":164,"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":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"NeoHW"},"content":"### 2.6 Common classes","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.addressbook.commons` package.","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":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"NeoHW"},"content":"## 3 Implementation","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"NeoHW"},"content":"### 3.1 Adding a Patient","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"NeoHW"},"content":"#### Introduction","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"choowengyan"},"content":"The `AddCommand` class is responsible for adding new patient\u0027s information in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":181,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":182,"author":{"gitId":"NeoHW"},"content":"#### Specifications","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"choowengyan"},"content":"* AddCommand, as defined by the `AddCommand` class, contain parameters which consists of: ","lastModifiedDate":"2024-03-17"},{"lineNumber":185,"author":{"gitId":"choowengyan"},"content":" * `patientHospitalId` integer, ","lastModifiedDate":"2024-03-17"},{"lineNumber":186,"author":{"gitId":"choowengyan"},"content":" * `name`, `preferredName` String with only alphabets character,","lastModifiedDate":"2024-03-17"},{"lineNumber":187,"author":{"gitId":"choowengyan"},"content":" * `foodPreference`, `familyCondition`, `hobby` and `tag` which are alphanumeric.","lastModifiedDate":"2024-03-17"},{"lineNumber":188,"author":{"gitId":"choowengyan"},"content":"* `tag` field is optional in the AddCommand and can be added later on using the `AddTagsCommand`.","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"choowengyan"},"content":"* If any of the fields are repeated during the adding of patient or missing fields, error message will be thrown.","lastModifiedDate":"2024-03-17"},{"lineNumber":190,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":191,"author":{"gitId":"NeoHW"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-12"},{"lineNumber":192,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":193,"author":{"gitId":"choowengyan"},"content":"Given below is an example usage scenario and how the group creation mechanism behaves at each step.","lastModifiedDate":"2024-03-17"},{"lineNumber":194,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"choowengyan"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":197,"author":{"gitId":"guohuang88"},"content":"Step 2: The user executes the `add id/ 12347 n/ Mary Jane p/ Mary f/ Korean c/ Lives with only daughter h/ Watch Drama`","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"choowengyan"},"content":"command to add a new Patient whose patient hospital ID is `12347`,","lastModifiedDate":"2024-03-17"},{"lineNumber":199,"author":{"gitId":"choowengyan"},"content":"with the name `Mary Jane` and preferred name `Mary`, likes to eat `Korean` food and current family condition is ","lastModifiedDate":"2024-03-17"},{"lineNumber":200,"author":{"gitId":"choowengyan"},"content":"`Lives with only daughter` and likes to `Watch drama`.","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"choowengyan"},"content":"Step 3: The `AddCommandParser` will be called to validate the input, ensuring that the fields are valid with correct ","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"choowengyan"},"content":"data types and no duplicates of fields.","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"choowengyan"},"content":"* Upon successful validation, it creates a `Patient` instance.","lastModifiedDate":"2024-03-17"},{"lineNumber":205,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":206,"author":{"gitId":"choowengyan"},"content":"Step 4: The newly added Patient will be added to the end of list, shown in the UI. ","lastModifiedDate":"2024-03-17"},{"lineNumber":207,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":208,"author":{"gitId":"choowengyan"},"content":"The following UML sequence diagram illustrates how the `AddCommand` operation works.","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"choowengyan"},"content":"\u003cpuml src\u003d\"diagrams/AddSequenceDiagram.puml\" alt\u003d\"Add Sequence Diagram\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"choowengyan"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-17"},{"lineNumber":213,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":214,"author":{"gitId":"choowengyan"},"content":"#### Aspect of Handling Duplicated Fields ","lastModifiedDate":"2024-03-17"},{"lineNumber":215,"author":{"gitId":"choowengyan"},"content":"* **Alternative 1 (current choice)**: Returns error message, prompt user to enter the correct format.","lastModifiedDate":"2024-03-17"},{"lineNumber":216,"author":{"gitId":"choowengyan"},"content":" * Pros: Ensure the consistency of entries of the input command.","lastModifiedDate":"2024-03-17"},{"lineNumber":217,"author":{"gitId":"choowengyan"},"content":" * Cons: User has to retype the `AddCommand` once again instead of the specific field.","lastModifiedDate":"2024-03-17"},{"lineNumber":218,"author":{"gitId":"choowengyan"},"content":"\u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":219,"author":{"gitId":"choowengyan"},"content":"* **Alternative 2**: Add patient\u0027s information to the list, for duplicated fields, take the first one.","lastModifiedDate":"2024-03-17"},{"lineNumber":220,"author":{"gitId":"choowengyan"},"content":" * Pros: User does not have to retype the command.","lastModifiedDate":"2024-03-17"},{"lineNumber":221,"author":{"gitId":"choowengyan"},"content":" * Cons: Introduce ambiguity, the first repeated field may not be what user wish to enter.","lastModifiedDate":"2024-03-17"},{"lineNumber":222,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":223,"author":{"gitId":"choowengyan"},"content":"#### Aspect of Handling Existing Patient","lastModifiedDate":"2024-03-17"},{"lineNumber":224,"author":{"gitId":"choowengyan"},"content":"* **Alternative 1 (current choice)**: Returns error message upon user adds a new patient with existing `patientHospitalId`","lastModifiedDate":"2024-03-17"},{"lineNumber":225,"author":{"gitId":"choowengyan"},"content":" * Pros: Ensures that no same patient will be added to PatientSync.","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"choowengyan"},"content":" * Cons: User has to enter patient\u0027s hospital ID in care to ensure no duplications.","lastModifiedDate":"2024-03-17"},{"lineNumber":227,"author":{"gitId":"choowengyan"},"content":"\u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":228,"author":{"gitId":"choowengyan"},"content":"* **Alternative 2**: Check duplicated patient by patient\u0027s `name`.","lastModifiedDate":"2024-03-17"},{"lineNumber":229,"author":{"gitId":"choowengyan"},"content":" * Pros: Easier to view as patient\u0027s `name` will be easier to be remembered.","lastModifiedDate":"2024-03-17"},{"lineNumber":230,"author":{"gitId":"choowengyan"},"content":" * Cons: Patients may have the same name.","lastModifiedDate":"2024-03-17"},{"lineNumber":231,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-12"},{"lineNumber":232,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":233,"author":{"gitId":"NeoHW"},"content":"### 3.2 Adding Tags to a Patient","lastModifiedDate":"2024-03-12"},{"lineNumber":234,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":235,"author":{"gitId":"NeoHW"},"content":"#### Introduction","lastModifiedDate":"2024-03-12"},{"lineNumber":236,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":237,"author":{"gitId":"NeoHW"},"content":"The `AddTagsCommand` class is responsible for adding one or more tags to a patient in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":238,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":239,"author":{"gitId":"NeoHW"},"content":"#### Specifications","lastModifiedDate":"2024-03-12"},{"lineNumber":240,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":241,"author":{"gitId":"NeoHW"},"content":"* Tags, as defined by the `Tag` class, are alphanumeric characters with or without spaces, and repeated tags in the command are added as a single tag.","lastModifiedDate":"2024-03-22"},{"lineNumber":242,"author":{"gitId":"NeoHW"},"content":"* The addition of tags is cumulative, and new tags will be added to the existing set of tags for the patient, preserving the previously assigned tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":243,"author":{"gitId":"NeoHW"},"content":"* If the patient has an existing tag that is provided in the command, it will not be added, and the output would be logged and shown to the user.","lastModifiedDate":"2024-03-22"},{"lineNumber":244,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":245,"author":{"gitId":"NeoHW"},"content":"The activity diagram below outlines the steps involved when a user initiates an Add Tags command.","lastModifiedDate":"2024-03-22"},{"lineNumber":246,"author":{"gitId":"NeoHW"},"content":"\u003cpuml src\u003d\"diagrams/AddTagsActivityDiagram.puml\" alt\u003d\"AddTagsActivityDiagram\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":247,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":248,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":249,"author":{"gitId":"NeoHW"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-12"},{"lineNumber":250,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":251,"author":{"gitId":"NeoHW"},"content":"Given below is an example usage scenario and how the tag addition process behaves at each step:","lastModifiedDate":"2024-03-22"},{"lineNumber":252,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":253,"author":{"gitId":"NeoHW"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-12"},{"lineNumber":254,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":255,"author":{"gitId":"NeoHW"},"content":"Step 2: The user executes the `addt 1 t/christian t/fall risk` command to add the tags `christian` and `fall risk` to patient 1 in the displayed patient list. The `AddTagsCommandParser` will be called to validate the input, ensuring that the index is valid and at least one tag is provided. Upon successful validation, it creates an `AddTagsCommand` instance.","lastModifiedDate":"2024-03-22"},{"lineNumber":256,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":257,"author":{"gitId":"NeoHW"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":258,"author":{"gitId":"NeoHW"},"content":"\u003cb\u003eNote\u003c/b\u003e: Since multiple inputs are allowed, a set of tags are passed around, each of which is to be added if the above requirements are met.","lastModifiedDate":"2024-03-12"},{"lineNumber":259,"author":{"gitId":"NeoHW"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":260,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":261,"author":{"gitId":"NeoHW"},"content":"The following sequence diagram shows how the Add Tags operation works:","lastModifiedDate":"2024-03-18"},{"lineNumber":262,"author":{"gitId":"NeoHW"},"content":"\u003cpuml src\u003d\"diagrams/AddTagsSequenceDiagram.puml\" alt\u003d\"AddTagsSequenceDiagram\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":263,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":264,"author":{"gitId":"NeoHW"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":265,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":266,"author":{"gitId":"NeoHW"},"content":"**Note:** The lifeline for `AddTagCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2024-03-18"},{"lineNumber":267,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":268,"author":{"gitId":"NeoHW"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":269,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":270,"author":{"gitId":"NeoHW"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-12"},{"lineNumber":271,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":272,"author":{"gitId":"NeoHW"},"content":"**Aspect: Skip duplicate Tags in command**","lastModifiedDate":"2024-03-22"},{"lineNumber":273,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":274,"author":{"gitId":"NeoHW"},"content":"* **Alternative 1 (current choice)**: Repeated tags in commands are added as a single tag.","lastModifiedDate":"2024-03-22"},{"lineNumber":275,"author":{"gitId":"NeoHW"},"content":" * Pros: Simplifies tag management, avoids redundancy.","lastModifiedDate":"2024-03-12"},{"lineNumber":276,"author":{"gitId":"NeoHW"},"content":" * Cons: Requires additional logic to detect and merge repeated tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":277,"author":{"gitId":"NeoHW"},"content":"\u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":278,"author":{"gitId":"NeoHW"},"content":"* **Alternative 2**: Each tag is added individually, including duplicates.","lastModifiedDate":"2024-03-12"},{"lineNumber":279,"author":{"gitId":"NeoHW"},"content":" * Pros: Explicitly shows every tag provided.","lastModifiedDate":"2024-03-12"},{"lineNumber":280,"author":{"gitId":"NeoHW"},"content":" * Cons: May clutter patient data with redundant tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":281,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":282,"author":{"gitId":"NeoHW"},"content":"**Aspect: Cumulative Tag Addition**","lastModifiedDate":"2024-03-12"},{"lineNumber":283,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":284,"author":{"gitId":"NeoHW"},"content":"* **Alternative 1 (current choice)**: Cumulative addition of tags to existing set.","lastModifiedDate":"2024-03-12"},{"lineNumber":285,"author":{"gitId":"NeoHW"},"content":" * Pros: Preserves previous tags, allows for gradual building of patient profile.","lastModifiedDate":"2024-03-12"},{"lineNumber":286,"author":{"gitId":"NeoHW"},"content":" * Cons: Requires additional memory for storing updated tag sets.","lastModifiedDate":"2024-03-12"},{"lineNumber":287,"author":{"gitId":"NeoHW"},"content":"\u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":288,"author":{"gitId":"NeoHW"},"content":"* **Alternative 2**: Overwrite existing tags with new ones.","lastModifiedDate":"2024-03-12"},{"lineNumber":289,"author":{"gitId":"NeoHW"},"content":" * Pros: Simplifies data handling, avoids tag duplication.","lastModifiedDate":"2024-03-12"},{"lineNumber":290,"author":{"gitId":"NeoHW"},"content":" * Cons: Risk of losing previously assigned tags, less flexibility in tag management.","lastModifiedDate":"2024-03-12"},{"lineNumber":291,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":292,"author":{"gitId":"NeoHW"},"content":"**Aspect: Logic handling for pre-existing tags**","lastModifiedDate":"2024-03-22"},{"lineNumber":293,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":294,"author":{"gitId":"NeoHW"},"content":"* **Alternative 1 (current choice)**: Do not add tags already present for the patient.","lastModifiedDate":"2024-03-12"},{"lineNumber":295,"author":{"gitId":"NeoHW"},"content":" * Pros: Prevents tag redundancy, maintains data integrity. Better user experience, do not need to worry about the intricacies of tag duplication.","lastModifiedDate":"2024-03-12"},{"lineNumber":296,"author":{"gitId":"NeoHW"},"content":" * Cons: Requires additional logic to detect repeated tags.","lastModifiedDate":"2024-03-22"},{"lineNumber":297,"author":{"gitId":"NeoHW"},"content":"\u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":298,"author":{"gitId":"NeoHW"},"content":"* **Alternative 2**: Return error message for duplicate tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":299,"author":{"gitId":"NeoHW"},"content":" * Pros: Notifies user about duplicate inputs, ensures data consistency.","lastModifiedDate":"2024-03-12"},{"lineNumber":300,"author":{"gitId":"NeoHW"},"content":" * Cons: In the case of the addition of multiple existing or duplicate tags, users have to find and remove the duplicated tags from the given command, which would be cumbersome especially when there are many tags listed in the command.","lastModifiedDate":"2024-03-14"},{"lineNumber":301,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":302,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-14"},{"lineNumber":303,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":304,"author":{"gitId":"NeoHW"},"content":"### 3.3 Deleting Tags From a Patient","lastModifiedDate":"2024-03-18"},{"lineNumber":305,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":306,"author":{"gitId":"NeoHW"},"content":"#### Introduction","lastModifiedDate":"2024-03-18"},{"lineNumber":307,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":308,"author":{"gitId":"NeoHW"},"content":"The `DeleteTagsCommand` class enables the removal of one or more tags from a patient in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":309,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":310,"author":{"gitId":"NeoHW"},"content":"#### Specifications","lastModifiedDate":"2024-03-18"},{"lineNumber":311,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":312,"author":{"gitId":"NeoHW"},"content":"* Tags, as defined by the `Tag` class, are alphanumeric characters with or without spaces, and repeated tags in the command are added as a single tag.","lastModifiedDate":"2024-03-22"},{"lineNumber":313,"author":{"gitId":"NeoHW"},"content":"* The deletion of tags is performed by specifying the tags to be removed for a particular patient.","lastModifiedDate":"2024-03-18"},{"lineNumber":314,"author":{"gitId":"NeoHW"},"content":"* Tags should match exactly with the existing tags of the patient.","lastModifiedDate":"2024-03-18"},{"lineNumber":315,"author":{"gitId":"NeoHW"},"content":"* If a patient has the tag(s) provided in the command, they will be removed. This operation is counted as a successful deletion.","lastModifiedDate":"2024-03-18"},{"lineNumber":316,"author":{"gitId":"NeoHW"},"content":"* When deleting tags, if a tag is repeated in the command, it will be treated as a single tag to delete. E.g. `t/friend t/friend` will be considered as a single `friend` tag for deletion.","lastModifiedDate":"2024-03-18"},{"lineNumber":317,"author":{"gitId":"NeoHW"},"content":"* If the patient does not have a tag provided in the command, it will be logged and shown to the user as an unsuccessful deletion of that tag.","lastModifiedDate":"2024-03-18"},{"lineNumber":318,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":319,"author":{"gitId":"NeoHW"},"content":"The activity diagram below outlines the steps involved when a user initiates a Delete Tags command.","lastModifiedDate":"2024-03-22"},{"lineNumber":320,"author":{"gitId":"NeoHW"},"content":"\u003cpuml src\u003d\"diagrams/DeleteTagsActivityDiagram.puml\" alt\u003d\"DeleteTagsActivityDiagram\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":321,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":322,"author":{"gitId":"NeoHW"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-18"},{"lineNumber":323,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":324,"author":{"gitId":"NeoHW"},"content":"Below is an example scenario of how the tag deletion process works within the PatientSync application:","lastModifiedDate":"2024-03-18"},{"lineNumber":325,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":326,"author":{"gitId":"NeoHW"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-18"},{"lineNumber":327,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":328,"author":{"gitId":"NeoHW"},"content":"Step 2: The user executes the `deletet 1 t/fall risk` command to delete the `fall risk` tag from patient 1 in the displayed patient list. The `DeleteTagsCommandParser` validates the input, ensuring that the index is valid and at least one tag is provided. Upon successful validation, an `DeleteTagsCommand` instance is created.","lastModifiedDate":"2024-03-22"},{"lineNumber":329,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":330,"author":{"gitId":"NeoHW"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":331,"author":{"gitId":"NeoHW"},"content":"\u003cb\u003eNote\u003c/b\u003e: Since multiple inputs are allowed, a set of tags to be deleted is passed, each of which will be removed if found associated with the patient.","lastModifiedDate":"2024-03-18"},{"lineNumber":332,"author":{"gitId":"NeoHW"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":333,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":334,"author":{"gitId":"NeoHW"},"content":"The following sequence diagram shows how the Delete Tags operation works:","lastModifiedDate":"2024-03-19"},{"lineNumber":335,"author":{"gitId":"NeoHW"},"content":"\u003cpuml src\u003d\"diagrams/DeleteTagsSequenceDiagram.puml\" alt\u003d\"DeleteTagsSequenceDiagram\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":336,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":337,"author":{"gitId":"NeoHW"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":338,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":339,"author":{"gitId":"NeoHW"},"content":"**Note:** The lifeline for `DeleteTagCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2024-03-18"},{"lineNumber":340,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":341,"author":{"gitId":"NeoHW"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":342,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":343,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":344,"author":{"gitId":"NeoHW"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-18"},{"lineNumber":345,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":346,"author":{"gitId":"NeoHW"},"content":"**Aspect: Bulk Tag Deletion**","lastModifiedDate":"2024-03-18"},{"lineNumber":347,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":348,"author":{"gitId":"NeoHW"},"content":"* **Alternative 1 (current choice)**: Bulk deletion of specified tags.","lastModifiedDate":"2024-03-18"},{"lineNumber":349,"author":{"gitId":"NeoHW"},"content":" * Pros: Allows removal of multiple tags in one command, preserves existing tags if not specified for deletion.","lastModifiedDate":"2024-03-18"},{"lineNumber":350,"author":{"gitId":"NeoHW"},"content":" * Cons: Requires additional memory for handling tag sets, potentially slower performance for large tag sets.","lastModifiedDate":"2024-03-18"},{"lineNumber":351,"author":{"gitId":"NeoHW"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":352,"author":{"gitId":"NeoHW"},"content":"* **Alternative 2**: Explicitly specify tags to delete, ignoring any non-existent tags.","lastModifiedDate":"2024-03-18"},{"lineNumber":353,"author":{"gitId":"NeoHW"},"content":" * Pros: Simplifies command execution, faster performance for small tag sets.","lastModifiedDate":"2024-03-18"},{"lineNumber":354,"author":{"gitId":"NeoHW"},"content":" * Cons: Requires multiple commands for each tag deletion, less flexible in bulk operations.","lastModifiedDate":"2024-03-18"},{"lineNumber":355,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":356,"author":{"gitId":"NeoHW"},"content":"**Aspect: Handling Missing Tags**","lastModifiedDate":"2024-03-18"},{"lineNumber":357,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":358,"author":{"gitId":"NeoHW"},"content":"* **Alternative 1 (current choice)**: Log output for non-existent tags to inform user, proceed with deleting the valid tags.","lastModifiedDate":"2024-03-18"},{"lineNumber":359,"author":{"gitId":"NeoHW"},"content":" * Pros: Simplifies user interaction, allows bulk deletion without worrying about non-existent tags, users are informed about the tags that are not present, Users do not need to correct the command.","lastModifiedDate":"2024-03-18"},{"lineNumber":360,"author":{"gitId":"NeoHW"},"content":" * Cons: Adds complexity to the command execution, requiring additional logic to differentiate between existing and non-existing tags.","lastModifiedDate":"2024-03-18"},{"lineNumber":361,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":362,"author":{"gitId":"NeoHW"},"content":"* **Alternative 2**: Return an error message for non-existent tags, ask users to correct the command.","lastModifiedDate":"2024-03-18"},{"lineNumber":363,"author":{"gitId":"NeoHW"},"content":" * Pros: Ensures user awareness of non-existent tags, avoids accidental deletions, prompts users to provide valid tag inputs.","lastModifiedDate":"2024-03-18"},{"lineNumber":364,"author":{"gitId":"NeoHW"},"content":" * Cons: Requires users to fix the command before proceeding, potential interruption to workflow, may increase user frustration if multiple tags are missing.","lastModifiedDate":"2024-03-18"},{"lineNumber":365,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":366,"author":{"gitId":"NeoHW"},"content":"**Aspect: Feedback for Deletion Operation**","lastModifiedDate":"2024-03-18"},{"lineNumber":367,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":368,"author":{"gitId":"NeoHW"},"content":"* **Alternative 1 (current choice)**: Provide a success message for each tag successfully deleted.","lastModifiedDate":"2024-03-18"},{"lineNumber":369,"author":{"gitId":"NeoHW"},"content":" * Pros: Clear indication of which tags were removed, better user understanding of command execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":370,"author":{"gitId":"NeoHW"},"content":" * Cons: May clutter output for multiple tag deletions.","lastModifiedDate":"2024-03-18"},{"lineNumber":371,"author":{"gitId":"NeoHW"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":372,"author":{"gitId":"NeoHW"},"content":"* **Alternative 2**: Return a single success message for all successful tag deletions.","lastModifiedDate":"2024-03-18"},{"lineNumber":373,"author":{"gitId":"NeoHW"},"content":" * Pros: Cleaner output for multiple deletions, reduces command feedback clutter.","lastModifiedDate":"2024-03-18"},{"lineNumber":374,"author":{"gitId":"NeoHW"},"content":" * Cons: Users might not have a clear understanding of individual deletions, less granular feedback.","lastModifiedDate":"2024-03-18"},{"lineNumber":375,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":376,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":377,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":378,"author":{"gitId":"NeoHW"},"content":"### 3.4 Adding an Event to a Patient","lastModifiedDate":"2024-03-18"},{"lineNumber":379,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":380,"author":{"gitId":"SherisseTJW"},"content":"#### Introduction","lastModifiedDate":"2024-03-13"},{"lineNumber":381,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":382,"author":{"gitId":"guohuang88"},"content":"The `AddEventCommand` class is responsible for adding an Event to a patient in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":383,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":384,"author":{"gitId":"SherisseTJW"},"content":"#### Specifications","lastModifiedDate":"2024-03-13"},{"lineNumber":385,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":386,"author":{"gitId":"SherisseTJW"},"content":"* Events, as defined by the `Event` class, contain both the Name of the Event that falls on that date, as well as the Date of the Event and optionally, the Time Period for which the Event is happening.","lastModifiedDate":"2024-03-18"},{"lineNumber":387,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":388,"author":{"gitId":"guohuang88"},"content":"* The addition of Event is cumulative, and new Events will be added to the existing set of Events for the patient, preserving the previously assigned Events.","lastModifiedDate":"2024-03-18"},{"lineNumber":389,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":390,"author":{"gitId":"guohuang88"},"content":"* If the patient already has a particular Event, it will not be added again.","lastModifiedDate":"2024-03-18"},{"lineNumber":391,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":392,"author":{"gitId":"SherisseTJW"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-13"},{"lineNumber":393,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":394,"author":{"gitId":"SherisseTJW"},"content":"Given below is an example usage scenario and how the group creation mechanism behaves at each step.","lastModifiedDate":"2024-03-13"},{"lineNumber":395,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":396,"author":{"gitId":"SherisseTJW"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-13"},{"lineNumber":397,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":398,"author":{"gitId":"guohuang88"},"content":"Step 2: The user executes the `adde 1 n/Birthday d/20-01-2022` command to add the Event, Birthday, which falls on the 20th January.","lastModifiedDate":"2024-03-18"},{"lineNumber":399,"author":{"gitId":"SherisseTJW"},"content":"* Upon successful validation, it creates an `AddEventsCommand` instance.","lastModifiedDate":"2024-03-18"},{"lineNumber":400,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":401,"author":{"gitId":"SherisseTJW"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":402,"author":{"gitId":"SherisseTJW"},"content":"\u003cb\u003eNote\u003c/b\u003e: Only 1 Event can be added at a time per command","lastModifiedDate":"2024-03-19"},{"lineNumber":403,"author":{"gitId":"SherisseTJW"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":404,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":405,"author":{"gitId":"SherisseTJW"},"content":"\u003cpuml src\u003d\"diagrams/AddEventSequenceDiagram.puml\" alt\u003d\"Add Event Sequence Diagram\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":406,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":407,"author":{"gitId":"SherisseTJW"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-18"},{"lineNumber":408,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":409,"author":{"gitId":"SherisseTJW"},"content":"**Aspect: Handling Repeated Events**","lastModifiedDate":"2024-03-18"},{"lineNumber":410,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":411,"author":{"gitId":"SherisseTJW"},"content":"* **Alternative 1 (current choice)**: Repeated events are added as a single event.","lastModifiedDate":"2024-03-18"},{"lineNumber":412,"author":{"gitId":"SherisseTJW"},"content":" * Pros: Simplifies event management, avoids redundancy.","lastModifiedDate":"2024-03-18"},{"lineNumber":413,"author":{"gitId":"SherisseTJW"},"content":" * Cons: Requires additional logic to detect and merge repeated events.","lastModifiedDate":"2024-03-18"},{"lineNumber":414,"author":{"gitId":"SherisseTJW"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":415,"author":{"gitId":"SherisseTJW"},"content":"* **Alternative 2**: Each event is added individually, including duplicates.","lastModifiedDate":"2024-03-18"},{"lineNumber":416,"author":{"gitId":"SherisseTJW"},"content":" * Pros: Explicitly shows every event provided.","lastModifiedDate":"2024-03-18"},{"lineNumber":417,"author":{"gitId":"SherisseTJW"},"content":" * Cons: May clutter patient data with redundant events.","lastModifiedDate":"2024-03-18"},{"lineNumber":418,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":419,"author":{"gitId":"SherisseTJW"},"content":"**Aspect: Cumulative Event Addition**","lastModifiedDate":"2024-03-18"},{"lineNumber":420,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":421,"author":{"gitId":"SherisseTJW"},"content":"* **Alternative 1 (current choice)**: Cumulative addition of events to existing set.","lastModifiedDate":"2024-03-18"},{"lineNumber":422,"author":{"gitId":"SherisseTJW"},"content":" * Pros: Preserves previous events, allows for gradual building of patient profile.","lastModifiedDate":"2024-03-18"},{"lineNumber":423,"author":{"gitId":"SherisseTJW"},"content":" * Cons: Requires additional memory for storing updated events sets.","lastModifiedDate":"2024-03-18"},{"lineNumber":424,"author":{"gitId":"SherisseTJW"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":425,"author":{"gitId":"SherisseTJW"},"content":"* **Alternative 2**: Overwrite existing events with new ones.","lastModifiedDate":"2024-03-18"},{"lineNumber":426,"author":{"gitId":"SherisseTJW"},"content":" * Pros: Simplifies data handling, avoids events duplication.","lastModifiedDate":"2024-03-18"},{"lineNumber":427,"author":{"gitId":"SherisseTJW"},"content":" * Cons: Risk of losing previously assigned events, less flexibility in event management.","lastModifiedDate":"2024-03-18"},{"lineNumber":428,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":429,"author":{"gitId":"SherisseTJW"},"content":"**Aspect: Error Handling for Duplicate Events**","lastModifiedDate":"2024-03-18"},{"lineNumber":430,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":431,"author":{"gitId":"SherisseTJW"},"content":"* **Alternative 1 (current choice)**: Do not add events already present for the patient.","lastModifiedDate":"2024-03-18"},{"lineNumber":432,"author":{"gitId":"SherisseTJW"},"content":" * Pros: Prevents event redundancy, maintains data integrity. Better user experience, do not need to worry about the intricacies of event duplication.","lastModifiedDate":"2024-03-18"},{"lineNumber":433,"author":{"gitId":"SherisseTJW"},"content":" * Cons: Users do not explicitly receive direct feedback about skipped events.","lastModifiedDate":"2024-03-18"},{"lineNumber":434,"author":{"gitId":"SherisseTJW"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":435,"author":{"gitId":"SherisseTJW"},"content":"* **Alternative 2**: Return error message for duplicate events.","lastModifiedDate":"2024-03-18"},{"lineNumber":436,"author":{"gitId":"SherisseTJW"},"content":" * Pros: Notifies user about duplicate inputs, ensures data consistency.","lastModifiedDate":"2024-03-18"},{"lineNumber":437,"author":{"gitId":"SherisseTJW"},"content":" * Cons: In the case of the addition of multiple existing or duplicate events, users have to find and remove the duplicated events from the given command, which would be cumbersome especially when there are many events listed in the command.","lastModifiedDate":"2024-03-18"},{"lineNumber":438,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":439,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":440,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-12"},{"lineNumber":441,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":442,"author":{"gitId":"NeoHW"},"content":"### 3.5 Editing a Patient","lastModifiedDate":"2024-03-18"},{"lineNumber":443,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":444,"author":{"gitId":"choowengyan"},"content":"#### Introduction","lastModifiedDate":"2024-03-17"},{"lineNumber":445,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":446,"author":{"gitId":"choowengyan"},"content":"The `EditCommand` class is responsible for editing current patient\u0027s information in the address book.","lastModifiedDate":"2024-03-17"},{"lineNumber":447,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":448,"author":{"gitId":"choowengyan"},"content":"#### Specifications","lastModifiedDate":"2024-03-17"},{"lineNumber":449,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":450,"author":{"gitId":"choowengyan"},"content":"* EditCommand, as defined by the `EditCommand` class, contain parameters which consists of:","lastModifiedDate":"2024-03-17"},{"lineNumber":451,"author":{"gitId":"choowengyan"},"content":" * `INDEX` integer,","lastModifiedDate":"2024-03-17"},{"lineNumber":452,"author":{"gitId":"choowengyan"},"content":" * `patientHospitalId` integer,","lastModifiedDate":"2024-03-17"},{"lineNumber":453,"author":{"gitId":"choowengyan"},"content":" * `name`, `preferredName` String with only alphabets character,","lastModifiedDate":"2024-03-17"},{"lineNumber":454,"author":{"gitId":"choowengyan"},"content":" * `foodPreference`, `familyCondition`, `hobby` and `tag` which are alphanumeric.","lastModifiedDate":"2024-03-17"},{"lineNumber":455,"author":{"gitId":"choowengyan"},"content":"* All fields are optional in the EditCommand except for `INDEX`","lastModifiedDate":"2024-03-17"},{"lineNumber":456,"author":{"gitId":"choowengyan"},"content":"* If any of the fields are repeated during the adding of patient or missing fields, error message will be thrown.","lastModifiedDate":"2024-03-17"},{"lineNumber":457,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":458,"author":{"gitId":"choowengyan"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-17"},{"lineNumber":459,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":460,"author":{"gitId":"choowengyan"},"content":"Given below is an example usage scenario and how the group creation mechanism behaves at each step.","lastModifiedDate":"2024-03-17"},{"lineNumber":461,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":462,"author":{"gitId":"choowengyan"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-17"},{"lineNumber":463,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":464,"author":{"gitId":"choowengyan"},"content":"Step 2: The user executes the `edit 2 f/Aglio-olio t/depression` command to edit an existing Patient whose index in ","lastModifiedDate":"2024-03-17"},{"lineNumber":465,"author":{"gitId":"choowengyan"},"content":"the PatientSync is `2`, with changes on preferred food to be `Aglio-olio` and added a tag `depression`.","lastModifiedDate":"2024-03-17"},{"lineNumber":466,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":467,"author":{"gitId":"choowengyan"},"content":"Step 3: The `EditCommandParser` will be called to validate the input, ensuring that the fields are valid with correct","lastModifiedDate":"2024-03-17"},{"lineNumber":468,"author":{"gitId":"choowengyan"},"content":"data types and no duplicates of fields.","lastModifiedDate":"2024-03-17"},{"lineNumber":469,"author":{"gitId":"choowengyan"},"content":"* Upon successful validation, it will update the `Patient` instance.","lastModifiedDate":"2024-03-17"},{"lineNumber":470,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":471,"author":{"gitId":"choowengyan"},"content":"Step 4: The Patient with specified index will be updated in the list, shown in the UI.","lastModifiedDate":"2024-03-17"},{"lineNumber":472,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":473,"author":{"gitId":"choowengyan"},"content":"The following UML sequence diagram illustrates how the `EditCommand` operation works.","lastModifiedDate":"2024-03-19"},{"lineNumber":474,"author":{"gitId":"choowengyan"},"content":"\u003cpuml src\u003d\"diagrams/EditSequenceDiagram.puml\" alt\u003d\"Edit Sequence Diagram\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":475,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":476,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":477,"author":{"gitId":"choowengyan"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-17"},{"lineNumber":478,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":479,"author":{"gitId":"choowengyan"},"content":"#### Aspect of Using Identifier","lastModifiedDate":"2024-03-17"},{"lineNumber":480,"author":{"gitId":"choowengyan"},"content":"* **Alternative 1 (current choice)**: Uses `INDEX` index of the Patient in the PatientSync.","lastModifiedDate":"2024-03-17"},{"lineNumber":481,"author":{"gitId":"choowengyan"},"content":" * Pros: Ease of use, as user can refer to the index in the PatientSync directly.","lastModifiedDate":"2024-03-17"},{"lineNumber":482,"author":{"gitId":"choowengyan"},"content":" * Cons: Referring and scrolling the PatientSync may take time to find the patient\u0027s index.","lastModifiedDate":"2024-03-17"},{"lineNumber":483,"author":{"gitId":"choowengyan"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":484,"author":{"gitId":"choowengyan"},"content":"* **Alternative 2**: Uses `patientHospitalId` of a Patient.","lastModifiedDate":"2024-03-17"},{"lineNumber":485,"author":{"gitId":"choowengyan"},"content":" * Pros: Able to uniquely identified each patient.","lastModifiedDate":"2024-03-17"},{"lineNumber":486,"author":{"gitId":"choowengyan"},"content":" * Cons: Higher chance in typing the wrong `patientHospitalId`.","lastModifiedDate":"2024-03-17"},{"lineNumber":487,"author":{"gitId":"choowengyan"},"content":" ","lastModifiedDate":"2024-03-17"},{"lineNumber":488,"author":{"gitId":"choowengyan"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-17"},{"lineNumber":489,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":490,"author":{"gitId":"NeoHW"},"content":"### 3.6 Deleting an Event from a Patient","lastModifiedDate":"2024-03-18"},{"lineNumber":491,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":492,"author":{"gitId":"ZhiWei1010"},"content":"#### Introduction","lastModifiedDate":"2024-03-15"},{"lineNumber":493,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":494,"author":{"gitId":"guohuang88"},"content":"The `DeleteEventCommand` class is responsible for deleting an Event from a patient in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":495,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":496,"author":{"gitId":"ZhiWei1010"},"content":"#### Specifications","lastModifiedDate":"2024-03-15"},{"lineNumber":497,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":498,"author":{"gitId":"SherisseTJW"},"content":"* DeleteEventCommand takes in two parameters: `PATIENT_INDEX` and `EVENT_INDEX` which are Indexes of patients","lastModifiedDate":"2024-03-18"},{"lineNumber":499,"author":{"gitId":"ZhiWei1010"},"content":"shown on the UI after using the `list` or `find` command and Indexes of the specified Patient\u0027s events as defined in","lastModifiedDate":"2024-03-15"},{"lineNumber":500,"author":{"gitId":"ZhiWei1010"},"content":"the `Index` class.","lastModifiedDate":"2024-03-15"},{"lineNumber":501,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":502,"author":{"gitId":"guohuang88"},"content":"* Deletion of Event can only happen for a single patient, and a single event at any given time.","lastModifiedDate":"2024-03-18"},{"lineNumber":503,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":504,"author":{"gitId":"ZhiWei1010"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-15"},{"lineNumber":505,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":506,"author":{"gitId":"ZhiWei1010"},"content":"Given below is an example usage scenario and how the group creation mechanism behaves at each step.","lastModifiedDate":"2024-03-15"},{"lineNumber":507,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":508,"author":{"gitId":"ZhiWei1010"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-15"},{"lineNumber":509,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":510,"author":{"gitId":"guohuang88"},"content":"Step 2: The user executes the `adde 1 n/ Birthday d/ 20-01-2022` command to add the Event, Birthday,","lastModifiedDate":"2024-03-18"},{"lineNumber":511,"author":{"gitId":"ZhiWei1010"},"content":"which falls on the 20th January.","lastModifiedDate":"2024-03-15"},{"lineNumber":512,"author":{"gitId":"SherisseTJW"},"content":"* Upon successful validation, it creates an `AddEventsCommand` instance.","lastModifiedDate":"2024-03-18"},{"lineNumber":513,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":514,"author":{"gitId":"guohuang88"},"content":"Step 3: The use executes `deletee 1 e/1` to delete the Event as he realised he keyed in the wrong","lastModifiedDate":"2024-03-18"},{"lineNumber":515,"author":{"gitId":"ZhiWei1010"},"content":"date.","lastModifiedDate":"2024-03-15"},{"lineNumber":516,"author":{"gitId":"SherisseTJW"},"content":"* Upon successful validation, an `DeleteEventCommand` instance is created.","lastModifiedDate":"2024-03-18"},{"lineNumber":517,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":518,"author":{"gitId":"ZhiWei1010"},"content":"The following UML sequence diagram illustrates how the Delete Event operation works.","lastModifiedDate":"2024-03-19"},{"lineNumber":519,"author":{"gitId":"ZhiWei1010"},"content":"\u003cpuml src\u003d\"diagrams/DeleteEventSequenceDiagram.puml\" alt\u003d\"Delete Event Sequence Diagram\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":520,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":521,"author":{"gitId":"ZhiWei1010"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-15"},{"lineNumber":522,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":523,"author":{"gitId":"ZhiWei1010"},"content":"**Aspect: Choice of COMMAND_WORD**","lastModifiedDate":"2024-03-15"},{"lineNumber":524,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":525,"author":{"gitId":"ZhiWei1010"},"content":"* **Alternative 1 (current choice)**: Use `deletee`","lastModifiedDate":"2024-03-15"},{"lineNumber":526,"author":{"gitId":"guohuang88"},"content":" * Pros: Consistent with `adde` command to add new Event.","lastModifiedDate":"2024-03-18"},{"lineNumber":527,"author":{"gitId":"ZhiWei1010"},"content":" * Cons: Might be counter-intuitive for user as command is unfamiliar.","lastModifiedDate":"2024-03-15"},{"lineNumber":528,"author":{"gitId":"ZhiWei1010"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":529,"author":{"gitId":"ZhiWei1010"},"content":"* **Alternative 2**: `deleteID`","lastModifiedDate":"2024-03-15"},{"lineNumber":530,"author":{"gitId":"ZhiWei1010"},"content":" * Pros: Clearer syntax.","lastModifiedDate":"2024-03-15"},{"lineNumber":531,"author":{"gitId":"ZhiWei1010"},"content":" * Cons: User might confuse ID as Patient ID and also inconsistency with `adde` command, further confusing user.","lastModifiedDate":"2024-03-15"},{"lineNumber":532,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":533,"author":{"gitId":"ZhiWei1010"},"content":"**Aspect: Syntax to choose event to delete**","lastModifiedDate":"2024-03-19"},{"lineNumber":534,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":535,"author":{"gitId":"ZhiWei1010"},"content":"* **Alternative 1 (current choice)**: Delete event by `[EVENT_INDEX]`. Syntax: prefix `e/` followed by `[EVENT_INDEX]` ","lastModifiedDate":"2024-03-19"},{"lineNumber":536,"author":{"gitId":"ZhiWei1010"},"content":" * Pros: User do not need to type whole event name, also similar to delete patient where patient index is used to","lastModifiedDate":"2024-03-19"},{"lineNumber":537,"author":{"gitId":"ZhiWei1010"},"content":" identify patient of interest.","lastModifiedDate":"2024-03-19"},{"lineNumber":538,"author":{"gitId":"ZhiWei1010"},"content":" * Cons: User need to know the `[EVENT_INDEX]` of the patient.","lastModifiedDate":"2024-03-19"},{"lineNumber":539,"author":{"gitId":"ZhiWei1010"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":540,"author":{"gitId":"ZhiWei1010"},"content":"* **Alternative 2**: Delete event by `[EVENT_NAME]`. Syntax: prefix `e/` followed by `[EVENT_NAME]`","lastModifiedDate":"2024-03-19"},{"lineNumber":541,"author":{"gitId":"ZhiWei1010"},"content":" * Pros: User can delete event quickly if name is short.","lastModifiedDate":"2024-03-19"},{"lineNumber":542,"author":{"gitId":"ZhiWei1010"},"content":" * Cons: User need to input the whole event name which might be tedious if `[EVENT_NAME]` is very long.","lastModifiedDate":"2024-03-19"},{"lineNumber":543,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":544,"author":{"gitId":"ZhiWei1010"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-15"},{"lineNumber":545,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":546,"author":{"gitId":"NeoHW"},"content":"### 3.7 Editing an Event for a Patient","lastModifiedDate":"2024-03-18"},{"lineNumber":547,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":548,"author":{"gitId":"guohuang88"},"content":"#### Introduction","lastModifiedDate":"2024-03-16"},{"lineNumber":549,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":550,"author":{"gitId":"guohuang88"},"content":"The `EditEventCommand` class is responsible for editing a specific Event for a patient in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":551,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":552,"author":{"gitId":"guohuang88"},"content":"#### Specifications","lastModifiedDate":"2024-03-16"},{"lineNumber":553,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":554,"author":{"gitId":"guohuang88"},"content":"* EditEventCommand takes in four parameters: `PATIENT_INDEX`, `EVENT_INDEX`, `EVENT_NAME` and `DATE`.","lastModifiedDate":"2024-03-18"},{"lineNumber":555,"author":{"gitId":"guohuang88"},"content":" All parameters are compulsory. Optionally, you may include `TIME` in the `DATE` parameter.","lastModifiedDate":"2024-03-16"},{"lineNumber":556,"author":{"gitId":"guohuang88"},"content":"* EditEventCommand will edit the selected `EVENT_INDEX` with a new event.","lastModifiedDate":"2024-03-18"},{"lineNumber":557,"author":{"gitId":"guohuang88"},"content":"* Editing of an event can only happen for a single patient, and a single event at any given time.","lastModifiedDate":"2024-03-18"},{"lineNumber":558,"author":{"gitId":"guohuang88"},"content":"* Editing an event to an existing event will result in displaying only one of the duplicate events.","lastModifiedDate":"2024-03-23"},{"lineNumber":559,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":560,"author":{"gitId":"guohuang88"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-16"},{"lineNumber":561,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":562,"author":{"gitId":"guohuang88"},"content":"Given below is an example usage scenario and how the group creation mechanism behaves at each step.","lastModifiedDate":"2024-03-16"},{"lineNumber":563,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":564,"author":{"gitId":"guohuang88"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-16"},{"lineNumber":565,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":566,"author":{"gitId":"guohuang88"},"content":"Step 2: The user executes the `adde 1 n/Birthday d/20-01-2022` command to add the Event, Birthday,","lastModifiedDate":"2024-03-18"},{"lineNumber":567,"author":{"gitId":"guohuang88"},"content":"which falls on the 20th January.","lastModifiedDate":"2024-03-16"},{"lineNumber":568,"author":{"gitId":"guohuang88"},"content":"* Upon successful validation, it creates an `AddEventCommand` instance.","lastModifiedDate":"2024-03-18"},{"lineNumber":569,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":570,"author":{"gitId":"guohuang88"},"content":"Step 3: The user executes `edite 1 e/1 n/New Birthday d/20-01-2023` to edit the Event.","lastModifiedDate":"2024-03-18"},{"lineNumber":571,"author":{"gitId":"guohuang88"},"content":"* Upon successful validation, an `EditEventCommand` instance is created.","lastModifiedDate":"2024-03-18"},{"lineNumber":572,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":573,"author":{"gitId":"ZhiWei1010"},"content":"The following UML sequence diagram illustrates how the Edit Event operations works.","lastModifiedDate":"2024-03-19"},{"lineNumber":574,"author":{"gitId":"ZhiWei1010"},"content":"\u003cpuml src\u003d\"diagrams/EditEventSequenceDiagram.puml\" alt\u003d\"Edit Event Sequence Diagram\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":575,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":576,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":577,"author":{"gitId":"guohuang88"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-16"},{"lineNumber":578,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":579,"author":{"gitId":"guohuang88"},"content":"**Aspect: Choice of COMMAND_WORD**","lastModifiedDate":"2024-03-16"},{"lineNumber":580,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":581,"author":{"gitId":"guohuang88"},"content":"* **Alternative 1 (current choice)**: Use `edite` ","lastModifiedDate":"2024-03-16"},{"lineNumber":582,"author":{"gitId":"guohuang88"},"content":" * Pros: Consistent with `adde` and `deletee` commands.","lastModifiedDate":"2024-03-16"},{"lineNumber":583,"author":{"gitId":"guohuang88"},"content":" * Cons: May not be as intuitive for user.","lastModifiedDate":"2024-03-16"},{"lineNumber":584,"author":{"gitId":"guohuang88"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":585,"author":{"gitId":"guohuang88"},"content":"* **Alternative 2**: Use `editID`","lastModifiedDate":"2024-03-16"},{"lineNumber":586,"author":{"gitId":"guohuang88"},"content":" * Pros: Clearer Syntax.","lastModifiedDate":"2024-03-16"},{"lineNumber":587,"author":{"gitId":"guohuang88"},"content":" * Cons: Inconsistent with `adde` and `deletee` commands.","lastModifiedDate":"2024-03-16"},{"lineNumber":588,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":589,"author":{"gitId":"guohuang88"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-16"},{"lineNumber":590,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":591,"author":{"gitId":"NeoHW"},"content":"### 3.8 Deleting a Patient","lastModifiedDate":"2024-03-18"},{"lineNumber":592,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":593,"author":{"gitId":"guohuang88"},"content":"#### Introduction","lastModifiedDate":"2024-03-14"},{"lineNumber":594,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":595,"author":{"gitId":"guohuang88"},"content":"The `DeleteCommand` is responsible for deleting a patient in the address book.","lastModifiedDate":"2024-03-14"},{"lineNumber":596,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":597,"author":{"gitId":"guohuang88"},"content":"#### Specifications","lastModifiedDate":"2024-03-14"},{"lineNumber":598,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":599,"author":{"gitId":"guohuang88"},"content":"* Delete command is used when the user wants to remove a patient from the address book.","lastModifiedDate":"2024-03-14"},{"lineNumber":600,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":601,"author":{"gitId":"guohuang88"},"content":"The following UML sequence diagram illustrates how the Delete operation works.","lastModifiedDate":"2024-03-19"},{"lineNumber":602,"author":{"gitId":"guohuang88"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Delete Sequence Diagram\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":603,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":604,"author":{"gitId":"guohuang88"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-14"},{"lineNumber":605,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":606,"author":{"gitId":"guohuang88"},"content":"Given below is an example usage scenario and how the group creation mechanism behaves at each step.","lastModifiedDate":"2024-03-16"},{"lineNumber":607,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":608,"author":{"gitId":"guohuang88"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-14"},{"lineNumber":609,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":610,"author":{"gitId":"guohuang88"},"content":"Step 2: The user see all the patients in the address book.","lastModifiedDate":"2024-03-14"},{"lineNumber":611,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":612,"author":{"gitId":"guohuang88"},"content":"Step 3: The user decide to remove the first patient in the address book.","lastModifiedDate":"2024-03-14"},{"lineNumber":613,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":614,"author":{"gitId":"guohuang88"},"content":"Step 4: The user executes the `delete 1` command to remove the first patient in the address book.","lastModifiedDate":"2024-03-14"},{"lineNumber":615,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":616,"author":{"gitId":"ZhiWei1010"},"content":"### 3.9 Listing all Patients","lastModifiedDate":"2024-03-19"},{"lineNumber":617,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":618,"author":{"gitId":"ZhiWei1010"},"content":"#### Introduction","lastModifiedDate":"2024-03-19"},{"lineNumber":619,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":620,"author":{"gitId":"ZhiWei1010"},"content":"The `ListCommand` is responsible for listing all patients in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":621,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":622,"author":{"gitId":"ZhiWei1010"},"content":"## Specifications","lastModifiedDate":"2024-03-19"},{"lineNumber":623,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":624,"author":{"gitId":"ZhiWei1010"},"content":"* The ListCommand make use of a `Predicate` that always evaluates to true.","lastModifiedDate":"2024-03-19"},{"lineNumber":625,"author":{"gitId":"ZhiWei1010"},"content":"* Through ListCommand#execute(), the `Predicate` is passed as an argument to Model#updateFilteredPersonList(),","lastModifiedDate":"2024-03-19"},{"lineNumber":626,"author":{"gitId":"ZhiWei1010"},"content":"causing the UI to only show all patients.","lastModifiedDate":"2024-03-19"},{"lineNumber":627,"author":{"gitId":"ZhiWei1010"},"content":"* The UML sequence diagram below shows the interaction between the Logic and Model components after calling `list`","lastModifiedDate":"2024-03-19"},{"lineNumber":628,"author":{"gitId":"ZhiWei1010"},"content":"command.","lastModifiedDate":"2024-03-19"},{"lineNumber":629,"author":{"gitId":"SherisseTJW"},"content":"* For each Patient\u0027s Events, the Events will be displayed in ascending order by date, then start time if date is equal, ","lastModifiedDate":"2024-03-23"},{"lineNumber":630,"author":{"gitId":"SherisseTJW"},"content":"then end time if both date and start time is equal","lastModifiedDate":"2024-03-23"},{"lineNumber":631,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":632,"author":{"gitId":"ZhiWei1010"},"content":"\u003cpuml src\u003d\"diagrams/ListSequenceDiagram.puml\" alt\u003d\"List Sequence Diagram\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":633,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":634,"author":{"gitId":"guohuang88"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-14"},{"lineNumber":635,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":636,"author":{"gitId":"guohuang88"},"content":"### 3.10 Locating patients by name","lastModifiedDate":"2024-03-22"},{"lineNumber":637,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":638,"author":{"gitId":"guohuang88"},"content":"#### Introduction","lastModifiedDate":"2024-03-22"},{"lineNumber":639,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":640,"author":{"gitId":"guohuang88"},"content":"The `FindCommand` class is responsible for finding the patients by the name in the patient list","lastModifiedDate":"2024-03-22"},{"lineNumber":641,"author":{"gitId":"guohuang88"},"content":"using keyword(s).","lastModifiedDate":"2024-03-22"},{"lineNumber":642,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":643,"author":{"gitId":"guohuang88"},"content":"#### Specifications","lastModifiedDate":"2024-03-22"},{"lineNumber":644,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":645,"author":{"gitId":"guohuang88"},"content":"* `FindCommand` takes in one or more keywords to find patients in the patient list.","lastModifiedDate":"2024-03-22"},{"lineNumber":646,"author":{"gitId":"guohuang88"},"content":"* `FindCommand` will update the patient list with patients whose name matches the keyword(s).","lastModifiedDate":"2024-03-22"},{"lineNumber":647,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":648,"author":{"gitId":"guohuang88"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-22"},{"lineNumber":649,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":650,"author":{"gitId":"guohuang88"},"content":"Given below is an example usage scenario and how the group creation mechanism behaves at each step.","lastModifiedDate":"2024-03-22"},{"lineNumber":651,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":652,"author":{"gitId":"guohuang88"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-22"},{"lineNumber":653,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":654,"author":{"gitId":"guohuang88"},"content":"Step 2: The user executes `find Alex` to search for patients whose name is Alex.","lastModifiedDate":"2024-03-22"},{"lineNumber":655,"author":{"gitId":"guohuang88"},"content":"* Upon successful execution, those patients whose name is `Alex` will be listed in the patient list.","lastModifiedDate":"2024-03-22"},{"lineNumber":656,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":657,"author":{"gitId":"guohuang88"},"content":"The following UML sequence diagram illustrates how the Find operations works.","lastModifiedDate":"2024-03-22"},{"lineNumber":658,"author":{"gitId":"guohuang88"},"content":"\u003cpuml src\u003d\"diagrams/FindSequenceDiagram.puml\" alt\u003d\"Find Sequence Diagram\" /\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":659,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":660,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":661,"author":{"gitId":"guohuang88"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-22"},{"lineNumber":662,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":663,"author":{"gitId":"guohuang88"},"content":"**Aspect: Choice of keyword**","lastModifiedDate":"2024-03-22"},{"lineNumber":664,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":665,"author":{"gitId":"guohuang88"},"content":"* **Alternative 1 (current choice)**: Search using `PATIENT_NAME` as the keyword","lastModifiedDate":"2024-03-22"},{"lineNumber":666,"author":{"gitId":"guohuang88"},"content":" * Pros: Easy for user to remember the name.","lastModifiedDate":"2024-03-22"},{"lineNumber":667,"author":{"gitId":"guohuang88"},"content":" * Cons: There may be many patients whose name contains the same keyword.","lastModifiedDate":"2024-03-22"},{"lineNumber":668,"author":{"gitId":"guohuang88"},"content":" \u003cbr\u003e\u003c/br\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":669,"author":{"gitId":"guohuang88"},"content":"* **Alternative 2**: Search using `PATIENT_HOSPITAL_ID` as the keyword","lastModifiedDate":"2024-03-22"},{"lineNumber":670,"author":{"gitId":"guohuang88"},"content":" * Pros: User may obtain the specific patient.","lastModifiedDate":"2024-03-22"},{"lineNumber":671,"author":{"gitId":"guohuang88"},"content":" * Cons: Hard for user to remember the specific `PATIENT_HOSPITAL_ID`.","lastModifiedDate":"2024-03-22"},{"lineNumber":672,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":673,"author":{"gitId":"guohuang88"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-22"},{"lineNumber":674,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":675,"author":{"gitId":"guohuang88"},"content":"### 3.11 Locating patients by tag","lastModifiedDate":"2024-03-24"},{"lineNumber":676,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":677,"author":{"gitId":"guohuang88"},"content":"#### Introduction","lastModifiedDate":"2024-03-24"},{"lineNumber":678,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":679,"author":{"gitId":"guohuang88"},"content":"The `FindTagsCommand` class is responsible for finding the patients by their tag in the patient list","lastModifiedDate":"2024-03-24"},{"lineNumber":680,"author":{"gitId":"guohuang88"},"content":"using keyword(s).","lastModifiedDate":"2024-03-24"},{"lineNumber":681,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":682,"author":{"gitId":"guohuang88"},"content":"#### Specifications","lastModifiedDate":"2024-03-24"},{"lineNumber":683,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":684,"author":{"gitId":"guohuang88"},"content":"* `FindTagsCommand` takes in one or more keywords to find patients using tag in the patient list.","lastModifiedDate":"2024-03-24"},{"lineNumber":685,"author":{"gitId":"guohuang88"},"content":"* `FindTagsCommand` will update the patient list with patients whose tag(s) matches the keyword(s).","lastModifiedDate":"2024-03-24"},{"lineNumber":686,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":687,"author":{"gitId":"guohuang88"},"content":"#### Example Usage Scenario","lastModifiedDate":"2024-03-24"},{"lineNumber":688,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":689,"author":{"gitId":"guohuang88"},"content":"Given below is an example usage scenario and how the group creation mechanism behaves at each step.","lastModifiedDate":"2024-03-24"},{"lineNumber":690,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":691,"author":{"gitId":"guohuang88"},"content":"Step 1: The user accesses the PatientSync application.","lastModifiedDate":"2024-03-24"},{"lineNumber":692,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":693,"author":{"gitId":"guohuang88"},"content":"Step 2: The user executes `findt depression` to search for patients whose tag is depression.","lastModifiedDate":"2024-03-24"},{"lineNumber":694,"author":{"gitId":"guohuang88"},"content":"* Upon successful execution, those patients whose tag is `depression` will be listed in the patient list.","lastModifiedDate":"2024-03-24"},{"lineNumber":695,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":696,"author":{"gitId":"guohuang88"},"content":"The following UML sequence diagram illustrates how the FindTags operations works.","lastModifiedDate":"2024-03-24"},{"lineNumber":697,"author":{"gitId":"guohuang88"},"content":"\u003cpuml src\u003d\"diagrams/FindTagsSequenceDiagram.puml\" alt\u003d\"Find Tags Sequence Diagram\" /\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":698,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":699,"author":{"gitId":"guohuang88"},"content":"#### Design Considerations","lastModifiedDate":"2024-03-24"},{"lineNumber":700,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":701,"author":{"gitId":"guohuang88"},"content":"**Aspect: Choice of Command Structure**","lastModifiedDate":"2024-03-24"},{"lineNumber":702,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":703,"author":{"gitId":"guohuang88"},"content":"* **Alternative 1 (current choice)**: Use `findt KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-03-24"},{"lineNumber":704,"author":{"gitId":"guohuang88"},"content":" * Pros: Does not need to use tag prefix, and it is similar to `find` command.","lastModifiedDate":"2024-03-24"},{"lineNumber":705,"author":{"gitId":"guohuang88"},"content":" * Cons: Command structure is different from `addt` and `deletet`.","lastModifiedDate":"2024-03-24"},{"lineNumber":706,"author":{"gitId":"guohuang88"},"content":" \u003cbr\u003e\u003cbr\u003e","lastModifiedDate":"2024-03-24"},{"lineNumber":707,"author":{"gitId":"guohuang88"},"content":"* **Alternative 2**: Use `findt t/KEYWORD t/[MORE_KEYWORDS]`","lastModifiedDate":"2024-03-24"},{"lineNumber":708,"author":{"gitId":"guohuang88"},"content":" * Pros: Command structure is similar to `addt` and `deletet`.","lastModifiedDate":"2024-03-24"},{"lineNumber":709,"author":{"gitId":"guohuang88"},"content":" * Cons: User need to key in multiple tag prefix if they want to search using more keywords.","lastModifiedDate":"2024-03-24"},{"lineNumber":710,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":711,"author":{"gitId":"guohuang88"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-24"},{"lineNumber":712,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":713,"author":{"gitId":"NeoHW"},"content":"## 4 Planned Enhancements","lastModifiedDate":"2024-03-12"},{"lineNumber":714,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":715,"author":{"gitId":"NeoHW"},"content":"### 4.1 \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2024-03-12"},{"lineNumber":716,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":717,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23"},{"lineNumber":718,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":719,"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":720,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":721,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":722,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":723,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23"},{"lineNumber":724,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":725,"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":726,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":727,"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":728,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":729,"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":730,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":731,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":732,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":733,"author":{"gitId":"NeoHW"},"content":"Step 2. The user executes `delete 5` command to delete the 5th patient 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":"2024-03-08"},{"lineNumber":734,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":735,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":736,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":737,"author":{"gitId":"NeoHW"},"content":"Step 3. The user executes `add n/David …​` to add a new patient. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2024-03-08"},{"lineNumber":738,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":739,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":740,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":741,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":742,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":743,"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":744,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":745,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":746,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":747,"author":{"gitId":"NeoHW"},"content":"Step 4. The user now decides that adding the patient 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":"2024-03-08"},{"lineNumber":748,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":749,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":750,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":751,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":752,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":753,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":754,"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":755,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23"},{"lineNumber":756,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":757,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":758,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":759,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09"},{"lineNumber":760,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":761,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":762,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":763,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":764,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":765,"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":766,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":767,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":768,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":769,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09"},{"lineNumber":770,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":771,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":772,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":773,"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":774,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":775,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":776,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":777,"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":778,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":779,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":780,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":781,"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":782,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":783,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":784,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":785,"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":786,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":787,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":788,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":789,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23"},{"lineNumber":790,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":791,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":792,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":793,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31"},{"lineNumber":794,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":795,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31"},{"lineNumber":796,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":797,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":798,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23"},{"lineNumber":799,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23"},{"lineNumber":800,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":801,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23"},{"lineNumber":802,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23"},{"lineNumber":803,"author":{"gitId":"NeoHW"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the patient being deleted).","lastModifiedDate":"2024-03-08"},{"lineNumber":804,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23"},{"lineNumber":805,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":806,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23"},{"lineNumber":807,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":808,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":809,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":810,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":811,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":812,"author":{"gitId":"NeoHW"},"content":"## 5 Documentation, logging, testing, configuration, dev-ops","lastModifiedDate":"2024-03-12"},{"lineNumber":813,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":814,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":815,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":816,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":817,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":818,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":819,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":820,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":821,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":822,"author":{"gitId":"NeoHW"},"content":"## 6 Appendix: Requirements","lastModifiedDate":"2024-03-12"},{"lineNumber":823,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":824,"author":{"gitId":"NeoHW"},"content":"### 6.1 Product scope","lastModifiedDate":"2024-03-12"},{"lineNumber":825,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":826,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":827,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":828,"author":{"gitId":"NeoHW"},"content":"- has a need to manage a significant number of patients","lastModifiedDate":"2024-03-06"},{"lineNumber":829,"author":{"gitId":"NeoHW"},"content":"- values comprehensive patient information for tailored treatment","lastModifiedDate":"2024-03-06"},{"lineNumber":830,"author":{"gitId":"NeoHW"},"content":"- prefer desktop apps over other types","lastModifiedDate":"2024-03-06"},{"lineNumber":831,"author":{"gitId":"NeoHW"},"content":"- can type fast","lastModifiedDate":"2024-03-06"},{"lineNumber":832,"author":{"gitId":"NeoHW"},"content":"- prefers typing to mouse interactions","lastModifiedDate":"2024-03-06"},{"lineNumber":833,"author":{"gitId":"NeoHW"},"content":"- is reasonably comfortable using CLI apps","lastModifiedDate":"2024-03-06"},{"lineNumber":834,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":835,"author":{"gitId":"NeoHW"},"content":"**Value proposition**:\\","lastModifiedDate":"2024-03-12"},{"lineNumber":836,"author":{"gitId":"NeoHW"},"content":"PatientSync is meticulously crafted for nurses who prioritize the well-being of their patients above all else. It allows nurses to input intimate details about their patients, such as food preferences and family conditions. This personalized approach enables nurses to deliver tailored care that meets the unique needs of each individual.","lastModifiedDate":"2024-03-12"},{"lineNumber":837,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":838,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":839,"author":{"gitId":"NeoHW"},"content":"### 6.2 User stories","lastModifiedDate":"2024-03-12"},{"lineNumber":840,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":841,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":842,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":843,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":844,"author":{"gitId":"SherisseTJW"},"content":"|----------|--------------------------------------------|------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-23"},{"lineNumber":845,"author":{"gitId":"NeoHW"},"content":"| `***` | Nurse | easily view the user guide | learn more about the product and how to use whenever I need to |","lastModifiedDate":"2024-03-06"},{"lineNumber":846,"author":{"gitId":"NeoHW"},"content":"| `***` | Nurse | add patient\u0027s information | add new patients and easily remember their preferences to make a personalized connection |","lastModifiedDate":"2024-03-06"},{"lineNumber":847,"author":{"gitId":"NeoHW"},"content":"| `***` | Nurse | delete patient\u0027s information | remove patients who have been discharged |","lastModifiedDate":"2024-03-06"},{"lineNumber":848,"author":{"gitId":"NeoHW"},"content":"| `***` | Nurse | list all patient\u0027s information | easily find the details of my patients |","lastModifiedDate":"2024-03-06"},{"lineNumber":849,"author":{"gitId":"SherisseTJW"},"content":"| `***` | Nurse | add event for my patients | keep track of my patients\u0027 appointments and see my overall schedule |","lastModifiedDate":"2024-03-23"},{"lineNumber":850,"author":{"gitId":"SherisseTJW"},"content":"| `***` | Nurse | delete event for my patients | delete my patients\u0027 appointments if they are canceled |","lastModifiedDate":"2024-03-23"},{"lineNumber":851,"author":{"gitId":"NeoHW"},"content":"| `***` | Nurse | add tags to my patients | group the patients into categories |","lastModifiedDate":"2024-03-06"},{"lineNumber":852,"author":{"gitId":"NeoHW"},"content":"| `***` | Nurse | find patient with a specific tag | quickly locate individuals with similar conditions, treatments, or requirements without having to scroll through the entire patient list |","lastModifiedDate":"2024-03-06"},{"lineNumber":853,"author":{"gitId":"NeoHW"},"content":"| `***` | Nurse | save all previously added patients | ensure details of the patient would not be lost |","lastModifiedDate":"2024-03-06"},{"lineNumber":854,"author":{"gitId":"NeoHW"},"content":"| `**` | Nurse | edit patient\u0027s information | have the most updated information of my patients at all times |","lastModifiedDate":"2024-03-06"},{"lineNumber":855,"author":{"gitId":"SherisseTJW"},"content":"| `**` | Nurse | edit event for my patients | edit my patients\u0027 appointments if they are changed |","lastModifiedDate":"2024-03-23"},{"lineNumber":856,"author":{"gitId":"NeoHW"},"content":"| `**` | Nurse | edit tags from my patients | edit mistyped tags |","lastModifiedDate":"2024-03-06"},{"lineNumber":857,"author":{"gitId":"NeoHW"},"content":"| `**` | Nurse | delete tags from my patients | delete the tag if it no longer applies |","lastModifiedDate":"2024-03-06"},{"lineNumber":858,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":859,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":860,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":861,"author":{"gitId":"NeoHW"},"content":"### 6.3 Use cases","lastModifiedDate":"2024-03-12"},{"lineNumber":862,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":863,"author":{"gitId":"NeoHW"},"content":"(For all use cases below, the **System** is `PatientSync` and the **Actor** is the `nurse`, unless specified otherwise)","lastModifiedDate":"2024-03-12"},{"lineNumber":864,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":865,"author":{"gitId":"guohuang88"},"content":"**Use case: Add a patient**","lastModifiedDate":"2024-03-06"},{"lineNumber":866,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":867,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":868,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":869,"author":{"gitId":"guohuang88"},"content":"1. Nurse requests to add a patient","lastModifiedDate":"2024-03-06"},{"lineNumber":870,"author":{"gitId":"guohuang88"},"content":"2. PatientSync adds the patient","lastModifiedDate":"2024-03-06"},{"lineNumber":871,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":872,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":873,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":874,"author":{"gitId":"guohuang88"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":875,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":876,"author":{"gitId":"guohuang88"},"content":"* 2a. The information key in is wrong.","lastModifiedDate":"2024-03-06"},{"lineNumber":877,"author":{"gitId":"guohuang88"},"content":" * 2a1. PatientSync shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":878,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":879,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":880,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":881,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":882,"author":{"gitId":"guohuang88"},"content":"**Use case: Delete a patient**","lastModifiedDate":"2024-03-06"},{"lineNumber":883,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":884,"author":{"gitId":"guohuang88"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":885,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":886,"author":{"gitId":"guohuang88"},"content":"1. Nurse requests to list patients","lastModifiedDate":"2024-03-06"},{"lineNumber":887,"author":{"gitId":"guohuang88"},"content":"2. PatientSync shows a list of patients","lastModifiedDate":"2024-03-06"},{"lineNumber":888,"author":{"gitId":"guohuang88"},"content":"3. Nurse requests to delete a specific patient in the list","lastModifiedDate":"2024-03-06"},{"lineNumber":889,"author":{"gitId":"guohuang88"},"content":"4. PatientSync deletes the patient","lastModifiedDate":"2024-03-06"},{"lineNumber":890,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":891,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":892,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":893,"author":{"gitId":"guohuang88"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":894,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":895,"author":{"gitId":"guohuang88"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":896,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":897,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":898,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":899,"author":{"gitId":"guohuang88"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":900,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":901,"author":{"gitId":"guohuang88"},"content":" * 3a1. PatientSync shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":902,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":903,"author":{"gitId":"guohuang88"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":904,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":905,"author":{"gitId":"guohuang88"},"content":"**Use case: List all patients**","lastModifiedDate":"2024-03-06"},{"lineNumber":906,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":907,"author":{"gitId":"guohuang88"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":908,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":909,"author":{"gitId":"guohuang88"},"content":"1. Nurse requests to list patients","lastModifiedDate":"2024-03-06"},{"lineNumber":910,"author":{"gitId":"guohuang88"},"content":"2. PatientSync shows a list of patients","lastModifiedDate":"2024-03-06"},{"lineNumber":911,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":912,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":913,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":914,"author":{"gitId":"guohuang88"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":915,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":916,"author":{"gitId":"guohuang88"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":917,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":918,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":919,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":920,"author":{"gitId":"SherisseTJW"},"content":"**Use case: Add event for a patient**","lastModifiedDate":"2024-03-23"},{"lineNumber":921,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":922,"author":{"gitId":"guohuang88"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":923,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":924,"author":{"gitId":"guohuang88"},"content":"1. Nurse requests to list patients","lastModifiedDate":"2024-03-06"},{"lineNumber":925,"author":{"gitId":"guohuang88"},"content":"2. PatientSync shows a list of patients","lastModifiedDate":"2024-03-06"},{"lineNumber":926,"author":{"gitId":"SherisseTJW"},"content":"3. Nurse requests to add an event for a specific patient in the list","lastModifiedDate":"2024-03-23"},{"lineNumber":927,"author":{"gitId":"SherisseTJW"},"content":"4. PatientSync adds an event for the patient","lastModifiedDate":"2024-03-23"},{"lineNumber":928,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":929,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":930,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":931,"author":{"gitId":"guohuang88"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":932,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":933,"author":{"gitId":"guohuang88"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":934,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":935,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":936,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":937,"author":{"gitId":"guohuang88"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":938,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":939,"author":{"gitId":"guohuang88"},"content":" * 3a1. PatientSync shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":940,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":941,"author":{"gitId":"guohuang88"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":942,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":943,"author":{"gitId":"SherisseTJW"},"content":"**Use case: Delete an event for a patient**","lastModifiedDate":"2024-03-23"},{"lineNumber":944,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":945,"author":{"gitId":"guohuang88"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":946,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":947,"author":{"gitId":"guohuang88"},"content":"1. Nurse requests to list patients","lastModifiedDate":"2024-03-06"},{"lineNumber":948,"author":{"gitId":"guohuang88"},"content":"2. PatientSync shows a list of patients","lastModifiedDate":"2024-03-06"},{"lineNumber":949,"author":{"gitId":"SherisseTJW"},"content":"3. Nurse requests to delete an event for a specific patient in the list","lastModifiedDate":"2024-03-23"},{"lineNumber":950,"author":{"gitId":"SherisseTJW"},"content":"4. PatientSync deletes an event the patient","lastModifiedDate":"2024-03-23"},{"lineNumber":951,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":952,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":953,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":954,"author":{"gitId":"guohuang88"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":955,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":956,"author":{"gitId":"guohuang88"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":957,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":958,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":959,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":960,"author":{"gitId":"guohuang88"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":961,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":962,"author":{"gitId":"guohuang88"},"content":" * 3a1. PatientSync shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":963,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":964,"author":{"gitId":"guohuang88"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":965,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":966,"author":{"gitId":"guohuang88"},"content":"**Use case: Add tag to a patient**","lastModifiedDate":"2024-03-06"},{"lineNumber":967,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":968,"author":{"gitId":"guohuang88"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":969,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":970,"author":{"gitId":"guohuang88"},"content":"1. Nurse requests to list patients","lastModifiedDate":"2024-03-06"},{"lineNumber":971,"author":{"gitId":"guohuang88"},"content":"2. PatientSync shows a list of patients","lastModifiedDate":"2024-03-06"},{"lineNumber":972,"author":{"gitId":"guohuang88"},"content":"3. Nurse requests to add a tag to a specific patient in the list","lastModifiedDate":"2024-03-06"},{"lineNumber":973,"author":{"gitId":"guohuang88"},"content":"4. PatientSync add a tag to the patient","lastModifiedDate":"2024-03-06"},{"lineNumber":974,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":975,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":976,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":977,"author":{"gitId":"guohuang88"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":978,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":979,"author":{"gitId":"guohuang88"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":980,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":981,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":982,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":983,"author":{"gitId":"guohuang88"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":984,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":985,"author":{"gitId":"guohuang88"},"content":" * 3a1. PatientSync shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":986,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":987,"author":{"gitId":"guohuang88"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":988,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":989,"author":{"gitId":"guohuang88"},"content":"**Use case: Delete tag from a patient**","lastModifiedDate":"2024-03-06"},{"lineNumber":990,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":991,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":992,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":993,"author":{"gitId":"guohuang88"},"content":"1. Nurse requests to list patients","lastModifiedDate":"2024-03-06"},{"lineNumber":994,"author":{"gitId":"guohuang88"},"content":"2. PatientSync shows a list of patients","lastModifiedDate":"2024-03-06"},{"lineNumber":995,"author":{"gitId":"guohuang88"},"content":"3. Nurse requests to delete a tag from a specific patient in the list","lastModifiedDate":"2024-03-06"},{"lineNumber":996,"author":{"gitId":"guohuang88"},"content":"4. PatientSync deletes a tag from the patient","lastModifiedDate":"2024-03-06"},{"lineNumber":997,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":998,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":999,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1000,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":1001,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1002,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":1003,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1004,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":1005,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1006,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":1007,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1008,"author":{"gitId":"guohuang88"},"content":" * 3a1. PatientSync shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":1009,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1010,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":1011,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1012,"author":{"gitId":"guohuang88"},"content":"**Use case: Find patients by a tag**","lastModifiedDate":"2024-03-06"},{"lineNumber":1013,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":1014,"author":{"gitId":"guohuang88"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":1015,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":1016,"author":{"gitId":"guohuang88"},"content":"1. Nurse requests to list patients","lastModifiedDate":"2024-03-06"},{"lineNumber":1017,"author":{"gitId":"guohuang88"},"content":"2. PatientSync shows a list of patients","lastModifiedDate":"2024-03-06"},{"lineNumber":1018,"author":{"gitId":"guohuang88"},"content":"3. Nurse requests to find patients with a specific tag in the list","lastModifiedDate":"2024-03-06"},{"lineNumber":1019,"author":{"gitId":"guohuang88"},"content":"4. PatientSync finds patients with the tag","lastModifiedDate":"2024-03-06"},{"lineNumber":1020,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":1021,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":1022,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":1023,"author":{"gitId":"guohuang88"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":1024,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":1025,"author":{"gitId":"guohuang88"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":1026,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":1027,"author":{"gitId":"guohuang88"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":1028,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":1029,"author":{"gitId":"guohuang88"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":1030,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":1031,"author":{"gitId":"guohuang88"},"content":" * 3a1. PatientSync shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":1032,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":1033,"author":{"gitId":"guohuang88"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-03-06"},{"lineNumber":1034,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1035,"author":{"gitId":"NeoHW"},"content":"### 6.4 Non-Functional Requirements","lastModifiedDate":"2024-03-12"},{"lineNumber":1036,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1037,"author":{"gitId":"NeoHW"},"content":"1. Compatibility: Should work on any _mainstream OS_ as long as it has Java `11` or above installed.","lastModifiedDate":"2024-03-12"},{"lineNumber":1038,"author":{"gitId":"NeoHW"},"content":"2. Performance: Should be able to hold up to 1000 patients without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-12"},{"lineNumber":1039,"author":{"gitId":"NeoHW"},"content":"3. Usability: 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-12"},{"lineNumber":1040,"author":{"gitId":"NeoHW"},"content":"4. Accessibility: Should operate without the need for internet access to fulfill its core purpose.","lastModifiedDate":"2024-03-12"},{"lineNumber":1041,"author":{"gitId":"NeoHW"},"content":"5. Ease of Use: Should be designed to be usable by a patient new to patient management without extensive training.","lastModifiedDate":"2024-03-12"},{"lineNumber":1042,"author":{"gitId":"NeoHW"},"content":"6. Error Handling: Should provide clear, comprehensive error messages in plain language, guiding users on how to recover from errors due to incorrect inputs.","lastModifiedDate":"2024-03-12"},{"lineNumber":1043,"author":{"gitId":"NeoHW"},"content":"7. User Documentation: Should offer comprehensive, well-organized user documentation that guides users on how to effectively use PatientSync.","lastModifiedDate":"2024-03-12"},{"lineNumber":1044,"author":{"gitId":"NeoHW"},"content":"8. Developer Documentation: Should provide detailed developer documentation for those looking to enhance, customize, or develop extensions.","lastModifiedDate":"2024-03-12"},{"lineNumber":1045,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1046,"author":{"gitId":"NeoHW"},"content":"### 6.5 Glossary","lastModifiedDate":"2024-03-12"},{"lineNumber":1047,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1048,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":1049,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":1050,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1051,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":1052,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1053,"author":{"gitId":"NeoHW"},"content":"## 7 Appendix: Instructions for manual testing","lastModifiedDate":"2024-03-12"},{"lineNumber":1054,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1055,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":1056,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1057,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":1058,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":1059,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":1060,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":1061,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1062,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":1063,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1064,"author":{"gitId":"NeoHW"},"content":"### 7.1 Launch and shutdown","lastModifiedDate":"2024-03-12"},{"lineNumber":1065,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1066,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":1067,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1068,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":1069,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1070,"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":1071,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1072,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":1073,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1074,"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":1075,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1076,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":1077,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":1078,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1079,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":1080,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1081,"author":{"gitId":"NeoHW"},"content":"### 7.2 Deleting a patient","lastModifiedDate":"2024-03-12"},{"lineNumber":1082,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1083,"author":{"gitId":"NeoHW"},"content":"1. Deleting a patient while all patients are being shown","lastModifiedDate":"2024-03-08"},{"lineNumber":1084,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1085,"author":{"gitId":"NeoHW"},"content":" 1. Prerequisites: List all patients using the `list` command. Multiple patients in the list.","lastModifiedDate":"2024-03-08"},{"lineNumber":1086,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1087,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":1088,"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":1089,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1090,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":1091,"author":{"gitId":"NeoHW"},"content":" Expected: No patient is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2024-03-08"},{"lineNumber":1092,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1093,"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":1094,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":1095,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1096,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":1097,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1098,"author":{"gitId":"NeoHW"},"content":"### 7.3 Saving data","lastModifiedDate":"2024-03-12"},{"lineNumber":1099,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1100,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":1101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1102,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":1103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":1104,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"guohuang88":291,"SherisseTJW":73,"ZhiWei1010":67,"choowengyan":93,"NeoHW":244,"-":336}},{"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":"NeoHW"},"content":"# PatientSync User Guide","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"PatientSync is a **desktop app made for nurses to manage patient, 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, PatientSync allows you to add and view patients intimate details and also manage patient-specific tasks faster than traditional GUI apps.","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"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":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer. ","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"1. Download the latest `PatientSync.jar` from [here](https://github.com/AY2324S2-CS2103-F09-2/tp/releases).","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar PatientSync.jar`","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":"command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"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":"2024-03-22"},{"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":"ZhiWei1010"},"content":" * `add id/ 12345 n/ John Doe p/ Alex f/ Curry chicken c/ Stable, Has 2 sons visit him regularly h/ Singing karaoke t/ Diabetes` : Adds a patient named `John Doe` to the PatientSync.","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"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":"2024-03-22"},{"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":"choowengyan"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/diabetes` or as `n/John Doe`.","lastModifiedDate":"2024-03-15"},{"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":"NeoHW"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend t/family` etc.","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":"* Items with `+`​ after them can be used multiple times, but requires at least one usage.\u003cbr\u003e","lastModifiedDate":"2024-03-11"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" e.g. `[t/TAG]+​` can be used as `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2024-03-11"},{"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":"choowengyan"},"content":" e.g. if the command specifies `n/NAME p/PREFERRED_NAME`, `p/PREFERRED_NAME n/NAME` is also acceptable.","lastModifiedDate":"2024-03-15"},{"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":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":"### Adding a patient: `add`","lastModifiedDate":"2024-03-08"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":"Adds a patient to the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"choowengyan"},"content":"Format: `add id/PATIENT_HOSPITAL_ID n/NAME p/PREFERRED_NAME f/FOOD_PREFERENCE c/FAMILY_CONDITION h/HOBBY [t/TAG]…​`","lastModifiedDate":"2024-03-15"},{"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":"choowengyan"},"content":"**Tip:** ","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"choowengyan"},"content":"* A patient can have any number of tags (including 0)","lastModifiedDate":"2024-03-15"},{"lineNumber":96,"author":{"gitId":"choowengyan"},"content":"* Parameters can be in any order","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"choowengyan"},"content":"* All command keywords, that is `‘add’`, `‘id/’`, `‘n/’`, `‘p/’`, `‘f/’`, `‘c/’` and `‘h/’` are case-sensitive (to standardise keyword arguments)","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"ZhiWei1010"},"content":"* `add id/ 12345 n/ Alex Yeoh Jia Jun p/ Alex f/ Curry chicken c/ Stable, Has 2 sons visit him regularly h/ Singing karaoke t/ Diabetes`","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"ZhiWei1010"},"content":"* `add id/ 12347 n/ Mary Jane p/ Mary f/ Korean c/ Lives with only daughter, quarrels regularly with daughter h/ Watching Drama`","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":"### Listing all patients : `list`","lastModifiedDate":"2024-03-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":"Shows a list of all patients in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":"### Editing a patient : `edit`","lastModifiedDate":"2024-03-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":"Edits an existing patient in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"choowengyan"},"content":"Format: `edit INDEX [id/PATIENT_HOSPITAL_ID] [n/NAME] [p/PREFERRED_NAME] [f/FOOD_PREFERENCE] [c/FAMILY_CONDITION]","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"choowengyan"},"content":"[h/HOBBY] [t/TAG]…​`","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":"* Edits the patient at the specified `INDEX`. The index refers to the index number shown in the displayed patient list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":"* When editing tags, the existing tags of the patient will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2024-03-08"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":"* You can remove all the patient’s tags by typing `t/` without","lastModifiedDate":"2024-03-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" specifying any tags after it.","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":"choowengyan"},"content":"* `edit 1 p/Alex f/Fried rice` Edits the preferred name and food preference of the 1st patient to be `Alex` and `Fried rice` respectively.","lastModifiedDate":"2024-03-17"},{"lineNumber":131,"author":{"gitId":"choowengyan"},"content":"* `edit 2 f/Children moved away t/` Edits the family condition of the 2nd patient to be `Children moved away` and clears all existing tags.","lastModifiedDate":"2024-03-17"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":"### Locating patients by name: `find`","lastModifiedDate":"2024-03-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"guohuang88"},"content":"Finds one or more patients whose name exactly match the given keyword(s).","lastModifiedDate":"2024-03-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-03-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"guohuang88"},"content":"* The search is case-insensitive e.g. `alex` will match `Alex`","lastModifiedDate":"2024-03-22"},{"lineNumber":142,"author":{"gitId":"guohuang88"},"content":"* The order of the patient name does not matter. e.g. `Becker Alex` will match `Alex Becker`","lastModifiedDate":"2024-03-22"},{"lineNumber":143,"author":{"gitId":"guohuang88"},"content":"* Only the Patient Name is searched.","lastModifiedDate":"2024-03-22"},{"lineNumber":144,"author":{"gitId":"guohuang88"},"content":"* Only full word(s) will be matched.","lastModifiedDate":"2024-03-22"},{"lineNumber":145,"author":{"gitId":"guohuang88"},"content":"e.g. `Alex` will not match `Alexandra`, `Alex` will match `Alex Becker`","lastModifiedDate":"2024-03-22"},{"lineNumber":146,"author":{"gitId":"guohuang88"},"content":"* Patients matching at least one keyword will be returned. ","lastModifiedDate":"2024-03-22"},{"lineNumber":147,"author":{"gitId":"guohuang88"},"content":"e.g. `Alex Becker` will return `Alex Keller` and `Becker Anderson`","lastModifiedDate":"2024-03-22"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"guohuang88"},"content":"* find `Alex` returns `alex` and `Alex becker`","lastModifiedDate":"2024-03-22"},{"lineNumber":151,"author":{"gitId":"guohuang88"},"content":"* find `alex becker` returns `alex`, `Alex Becker` and `Becker Li`","lastModifiedDate":"2024-03-22"},{"lineNumber":152,"author":{"gitId":"guohuang88"},"content":" ![result for \u0027find patients whose name is alex becker\u0027](images/findPatientAlexBeckerResult.png)","lastModifiedDate":"2024-03-22"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"NeoHW"},"content":"### Deleting a patient : `delete`","lastModifiedDate":"2024-03-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"NeoHW"},"content":"Deletes the specified patient from the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"NeoHW"},"content":"* Deletes the patient at the specified `INDEX`.","lastModifiedDate":"2024-03-08"},{"lineNumber":163,"author":{"gitId":"NeoHW"},"content":"* The index refers to the index number shown in the displayed patient list.","lastModifiedDate":"2024-03-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"NeoHW"},"content":"* `list` followed by `delete 2` deletes the 2nd patient in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":168,"author":{"gitId":"NeoHW"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st patient in the results of the `find` command.","lastModifiedDate":"2024-03-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"NeoHW"},"content":"### Adding Tags to a Patient : `addt`","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"NeoHW"},"content":"Adds one or more tags to a patient in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"NeoHW"},"content":"Format: `addt INDEX [t/TAG]+`","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"NeoHW"},"content":"* Adds one or more tags to a patient identified by the index number used in the last patient listing.","lastModifiedDate":"2024-03-22"},{"lineNumber":179,"author":{"gitId":"NeoHW"},"content":"* At least one tag must be provided.","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"NeoHW"},"content":"* Tags can only contain alphanumeric characters or spaces.","lastModifiedDate":"2024-03-22"},{"lineNumber":181,"author":{"gitId":"NeoHW"},"content":"* Tags cannot be blank","lastModifiedDate":"2024-03-22"},{"lineNumber":182,"author":{"gitId":"NeoHW"},"content":"* Tags must be less than 50 characters long.","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"NeoHW"},"content":"* Tags are **case-insensitive**.","lastModifiedDate":"2024-03-22"},{"lineNumber":184,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-18"},{"lineNumber":185,"author":{"gitId":"NeoHW"},"content":"* When adding tags, if a tag is repeated in the command, it will be added as a single tag.","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"NeoHW"},"content":" E.g. `t/friend t/friend` will be added as a single `friend` tag.","lastModifiedDate":"2024-03-12"},{"lineNumber":187,"author":{"gitId":"NeoHW"},"content":"* If the patient has an existing tag that is provided in the command, it will be logged and shown to the user.","lastModifiedDate":"2024-03-22"},{"lineNumber":188,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":189,"author":{"gitId":"NeoHW"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":190,"author":{"gitId":"NeoHW"},"content":" \u003cb\u003eNote:\u003c/b\u003e The addition of tags is cumulative. New tags will be added to the existing set of tags for the patient, preserving the previously assigned tags.","lastModifiedDate":"2024-03-12"},{"lineNumber":191,"author":{"gitId":"NeoHW"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":192,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-12"},{"lineNumber":195,"author":{"gitId":"NeoHW"},"content":"* `addt 1 t/critical`","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"NeoHW"},"content":"* `addt 2 t/friend t/fall risk`","lastModifiedDate":"2024-03-22"},{"lineNumber":197,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":198,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"NeoHW"},"content":"### Deleting Tags from a Patient : `deletet`","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":202,"author":{"gitId":"NeoHW"},"content":"Deletes one or more tags from a patient in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":204,"author":{"gitId":"NeoHW"},"content":"Format: `deletet INDEX [t/TAG]+`","lastModifiedDate":"2024-03-18"},{"lineNumber":205,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":206,"author":{"gitId":"NeoHW"},"content":"* Deletes one or more tags from a patient identified by the index number used in the last patient listing.","lastModifiedDate":"2024-03-18"},{"lineNumber":207,"author":{"gitId":"NeoHW"},"content":"* At least one tag must be provided.","lastModifiedDate":"2024-03-18"},{"lineNumber":208,"author":{"gitId":"NeoHW"},"content":"* Tags can only contain alphanumeric characters or spaces.","lastModifiedDate":"2024-03-22"},{"lineNumber":209,"author":{"gitId":"NeoHW"},"content":"* Tags cannot be empty or blank","lastModifiedDate":"2024-03-22"},{"lineNumber":210,"author":{"gitId":"NeoHW"},"content":"* Tags must be less than 50 characters long.","lastModifiedDate":"2024-03-23"},{"lineNumber":211,"author":{"gitId":"NeoHW"},"content":"* Tags are **case-insensitive** when matching tags","lastModifiedDate":"2024-03-22"},{"lineNumber":212,"author":{"gitId":"NeoHW"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"NeoHW"},"content":"* Tags provided should match with the existing tags of the patient.","lastModifiedDate":"2024-03-22"},{"lineNumber":214,"author":{"gitId":"NeoHW"},"content":"* When deleting tags, if tags are repeated in the command, it will be treated as a single tag to delete. E.g. `t/friend t/friend` will be considered as a single `friend` tag for deletion.","lastModifiedDate":"2024-03-22"},{"lineNumber":215,"author":{"gitId":"NeoHW"},"content":"* If the patient does not have a tag provided in the command, it will be logged and shown to the user.","lastModifiedDate":"2024-03-22"},{"lineNumber":216,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"NeoHW"},"content":"Examples:","lastModifiedDate":"2024-03-18"},{"lineNumber":218,"author":{"gitId":"NeoHW"},"content":"* `deletet 1 t/critical`","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"NeoHW"},"content":"* `deletet 2 t/friend t/fall risk`","lastModifiedDate":"2024-03-22"},{"lineNumber":220,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-14"},{"lineNumber":222,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":223,"author":{"gitId":"guohuang88"},"content":"### Locating patients by tag: `findt`","lastModifiedDate":"2024-03-24"},{"lineNumber":224,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":225,"author":{"gitId":"guohuang88"},"content":"Finds one or more patients whose tag exactly match the given keyword(s).","lastModifiedDate":"2024-03-24"},{"lineNumber":226,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":227,"author":{"gitId":"guohuang88"},"content":"Format: `findt KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2024-03-24"},{"lineNumber":228,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":229,"author":{"gitId":"guohuang88"},"content":"* The search is case-insensitive e.g. `depression` will match `Depression`","lastModifiedDate":"2024-03-24"},{"lineNumber":230,"author":{"gitId":"guohuang88"},"content":"* The order of the patient tag does not matter. e.g. `depression diabetes` will match `diabetes depression`","lastModifiedDate":"2024-03-24"},{"lineNumber":231,"author":{"gitId":"guohuang88"},"content":"* Only the tag is searched.","lastModifiedDate":"2024-03-24"},{"lineNumber":232,"author":{"gitId":"guohuang88"},"content":"* Only full word(s) will be matched.","lastModifiedDate":"2024-03-24"},{"lineNumber":233,"author":{"gitId":"guohuang88"},"content":" e.g. `depress` will not match `depression`, `depress` will match `depress diabetes`","lastModifiedDate":"2024-03-24"},{"lineNumber":234,"author":{"gitId":"guohuang88"},"content":"* Patients matching at least one keyword will be returned.","lastModifiedDate":"2024-03-24"},{"lineNumber":235,"author":{"gitId":"guohuang88"},"content":" e.g. `depression diabetes` will return `depression wheelchair` and `diabetes tumour`","lastModifiedDate":"2024-03-24"},{"lineNumber":236,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":237,"author":{"gitId":"guohuang88"},"content":"Examples:","lastModifiedDate":"2024-03-24"},{"lineNumber":238,"author":{"gitId":"guohuang88"},"content":"* find `depression` returns `depression` and `depression diabetes`","lastModifiedDate":"2024-03-24"},{"lineNumber":239,"author":{"gitId":"guohuang88"},"content":"* find `depression diabetes` returns `depression`, `depression diabetes` and `diabetes wheelchair`","lastModifiedDate":"2024-03-24"},{"lineNumber":240,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":241,"author":{"gitId":"guohuang88"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-24"},{"lineNumber":242,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":243,"author":{"gitId":"guohuang88"},"content":"### Adding an Event to a Patient : `adde`","lastModifiedDate":"2024-03-18"},{"lineNumber":244,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":245,"author":{"gitId":"guohuang88"},"content":"Adds an Event to a patient in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":246,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":247,"author":{"gitId":"SherisseTJW"},"content":"Format: `adde INDEX [n/NAME_OF_EVENT_ON_THAT_DATE] [d/DATE_OR_DATETIME_OF_EVENT_ON_THAT_DATE]`","lastModifiedDate":"2024-03-13"},{"lineNumber":248,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":249,"author":{"gitId":"guohuang88"},"content":"* Adds an Event with a Name, as well as the Date and optionally, the Time Period for which the Event is happening on that date to a patient identified by the index number used in the last patient listing.","lastModifiedDate":"2024-03-18"},{"lineNumber":250,"author":{"gitId":"SherisseTJW"},"content":"* The format of the Date must be: DD-MM-YYYY","lastModifiedDate":"2024-03-13"},{"lineNumber":251,"author":{"gitId":"SherisseTJW"},"content":"* If there is a Time Period, the format of the DateTime must be: DD-MM-YYYY, HH:mm - HH:mm","lastModifiedDate":"2024-03-13"},{"lineNumber":252,"author":{"gitId":"SherisseTJW"},"content":"* The index **must be a positive integer** 1, 2, 3, ...","lastModifiedDate":"2024-03-13"},{"lineNumber":253,"author":{"gitId":"SherisseTJW"},"content":"* Neither the Name or the Date / DateTime can be empty","lastModifiedDate":"2024-03-13"},{"lineNumber":254,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":255,"author":{"gitId":"SherisseTJW"},"content":"Examples:","lastModifiedDate":"2024-03-13"},{"lineNumber":256,"author":{"gitId":"SherisseTJW"},"content":"* `adde 1 n/Birthday d/20-01-2022`","lastModifiedDate":"2024-03-13"},{"lineNumber":257,"author":{"gitId":"SherisseTJW"},"content":"* `adde 2 n/Family Visit d/30-09-2024, 12:00 - 15:00`","lastModifiedDate":"2024-03-13"},{"lineNumber":258,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":259,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":260,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":261,"author":{"gitId":"guohuang88"},"content":"### Deleting an Event from a Patient : `deletee`","lastModifiedDate":"2024-03-18"},{"lineNumber":262,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":263,"author":{"gitId":"guohuang88"},"content":"Deletes an Event from a patient in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":264,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":265,"author":{"gitId":"ZhiWei1010"},"content":"Format `deletee PATIENT_INDEX [e/EVENT_INDEX]`","lastModifiedDate":"2024-03-15"},{"lineNumber":266,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":267,"author":{"gitId":"guohuang88"},"content":"* Deletes an Event from a specified Patient using `PATIENT_INDEX` and `EVENT_INDEX`.","lastModifiedDate":"2024-03-18"},{"lineNumber":268,"author":{"gitId":"ZhiWei1010"},"content":"* `PATIENT_INDEX` is the index of the patient shown in the UI after using `list` or `find` command.","lastModifiedDate":"2024-03-15"},{"lineNumber":269,"author":{"gitId":"ZhiWei1010"},"content":"* `EVENT_INDEX` is the index of the event that is saved under a Patient\u0027s data.","lastModifiedDate":"2024-03-15"},{"lineNumber":270,"author":{"gitId":"ZhiWei1010"},"content":"* Both `PATIENT_INDEX` and `EVENT_INDEX` **must be a positive integer** 1, 2, 3, ...","lastModifiedDate":"2024-03-15"},{"lineNumber":271,"author":{"gitId":"ZhiWei1010"},"content":"* Both `PATIENT_INDEX` and `EVENT_INDEX` **must be of a valid index** (i.e. within the range of total number of","lastModifiedDate":"2024-03-15"},{"lineNumber":272,"author":{"gitId":"ZhiWei1010"},"content":"Patients/Events)","lastModifiedDate":"2024-03-15"},{"lineNumber":273,"author":{"gitId":"ZhiWei1010"},"content":"* Both `PATIENT_INDEX` and `EVENT_INDEX` are compulsory fields (Neither can be **EMPTY**)","lastModifiedDate":"2024-03-15"},{"lineNumber":274,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":275,"author":{"gitId":"ZhiWei1010"},"content":"Examples:","lastModifiedDate":"2024-03-15"},{"lineNumber":276,"author":{"gitId":"ZhiWei1010"},"content":"* `deletee 1 e/1`","lastModifiedDate":"2024-03-15"},{"lineNumber":277,"author":{"gitId":"ZhiWei1010"},"content":"* `deletee 3 e/4`","lastModifiedDate":"2024-03-15"},{"lineNumber":278,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":279,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":280,"author":{"gitId":"guohuang88"},"content":"### Editing an Event for a Patient: `edite`","lastModifiedDate":"2024-03-18"},{"lineNumber":281,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":282,"author":{"gitId":"guohuang88"},"content":"Edits an Event for a Patient in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":283,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":284,"author":{"gitId":"guohuang88"},"content":"Format `edite PATIENT_INDEX [e/EVENT_INDEX] [n/NAME_OF_EVENT_ON_THAT_DATE] [d/DATE_OR_DATETIME_OF_EVENT_ON_THAT_DATE]`","lastModifiedDate":"2024-03-16"},{"lineNumber":285,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":286,"author":{"gitId":"guohuang88"},"content":"* Edits an Event for a Patient using `PATIENT_INDEX`, `EVENT_INDEX`, `NAME_OF_EVENT_ON_THAT_DATE` and","lastModifiedDate":"2024-03-18"},{"lineNumber":287,"author":{"gitId":"guohuang88"},"content":" `DATE_OR_DATETIME_OF_EVENT_ON_THAT_DATE`.","lastModifiedDate":"2024-03-16"},{"lineNumber":288,"author":{"gitId":"guohuang88"},"content":"* `PATIENT_INDEX`, `EVENT_INDEX`, `NAME_OF_EVENT_ON_THAT_DATE` and `DATE_OR_DATETIME_OF_EVENT_ON_THAT_DATE` ","lastModifiedDate":"2024-03-16"},{"lineNumber":289,"author":{"gitId":"guohuang88"},"content":" are compulsory parameters. ","lastModifiedDate":"2024-03-16"},{"lineNumber":290,"author":{"gitId":"guohuang88"},"content":"* Note that, it is okay to exclude `TIME` for `DATE_OR_DATETIME_OF_EVENT_ON_THAT_DATE`","lastModifiedDate":"2024-03-16"},{"lineNumber":291,"author":{"gitId":"guohuang88"},"content":"* The format of `DATE_OF_EVENT_ON_THAT_DATE` must be: DD-MM-YYYY.","lastModifiedDate":"2024-03-16"},{"lineNumber":292,"author":{"gitId":"guohuang88"},"content":"* The format of `DATETIME_OF_EVENT_ON_THAT_DATE` must be: DD-MM-YYYY, HH:mm - HH:mm.","lastModifiedDate":"2024-03-16"},{"lineNumber":293,"author":{"gitId":"guohuang88"},"content":"* Both `PATIENT_INDEX` and `EVENT_INDEX` **must be a positive integer** 1, 2, 3, ...","lastModifiedDate":"2024-03-16"},{"lineNumber":294,"author":{"gitId":"guohuang88"},"content":"* Both `PATIENT_INDEX` and `EVENT_INDEX` **must be of a valid index** (i.e. within the range of total number of","lastModifiedDate":"2024-03-16"},{"lineNumber":295,"author":{"gitId":"guohuang88"},"content":" Patients/Events).","lastModifiedDate":"2024-03-16"},{"lineNumber":296,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":297,"author":{"gitId":"guohuang88"},"content":"Examples:","lastModifiedDate":"2024-03-16"},{"lineNumber":298,"author":{"gitId":"guohuang88"},"content":"* `edite 1 e/1 n/Papa Birthday d/20-01-2023`","lastModifiedDate":"2024-03-16"},{"lineNumber":299,"author":{"gitId":"guohuang88"},"content":"* `edite 2 e/1 n/Mama Birthday d/21-02-2024`","lastModifiedDate":"2024-03-16"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":301,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":308,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":309,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":315,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":316,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":317,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":319,"author":{"gitId":"ZhiWei1010"},"content":"PatientSync 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-21"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":321,"author":{"gitId":"NeoHW"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-03-18"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":323,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":325,"author":{"gitId":"ZhiWei1010"},"content":"PatientSync data are saved automatically as a JSON file `[JAR file location]/data/patientsync.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-21"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":327,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":329,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":330,"author":{"gitId":"ZhiWei1010"},"content":"If your changes to the data file makes its format invalid, PatientSync 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":331,"author":{"gitId":"ZhiWei1010"},"content":"Furthermore, certain edits can cause PatientSync 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-21"},{"lineNumber":332,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":334,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"ZhiWei1010"},"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 PatientSync home folder.","lastModifiedDate":"2024-03-21"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":345,"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":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":347,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":349,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":351,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":352,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":353,"author":{"gitId":"ZhiWei1010"},"content":"**Add** | `add id/PATIENT_HOSPITAL_ID n/NAME p/PREFERRED_NAME f/FOOD_PREFERENCE c/FAMILY_CONDITION h/HOBBY [t/TAG]…​` \u003cbr\u003e e.g. `add id/ 12345 n/ Alex Yeoh Jia Jun p/ Alex f/ Curry chicken c/ Stable, Has 2 sons visit him regularly h/ Singing karaoke t/ Diabetes`","lastModifiedDate":"2024-03-21"},{"lineNumber":354,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":355,"author":{"gitId":"NeoHW"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g. `delete 3`","lastModifiedDate":"2024-03-14"},{"lineNumber":356,"author":{"gitId":"choowengyan"},"content":"**Edit** | `edit INDEX [id/PATIENT_HOSPITAL_ID] [n/NAME] [p/PREFERRED_NAME] [f/FOOD_PREFERENCE] [c/FAMILY_CONDITION] [h/HOBBY] [t/TAG]…​`\u003cbr\u003e e.g.`edit 2 p/James t/HighCholesterol`","lastModifiedDate":"2024-03-17"},{"lineNumber":357,"author":{"gitId":"NeoHW"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g. `find James Jake`","lastModifiedDate":"2024-03-14"},{"lineNumber":358,"author":{"gitId":"NeoHW"},"content":"**Add Tags** | `addt INDEX [t/TAG]+`\u003cbr\u003e e.g. `addt 1 t/critical`","lastModifiedDate":"2024-03-18"},{"lineNumber":359,"author":{"gitId":"NeoHW"},"content":"**Delete Tags** | `deletet INDEX [t/TAG]+`\u003cbr\u003e e.g. `deletet 1 t/critical`","lastModifiedDate":"2024-03-18"},{"lineNumber":360,"author":{"gitId":"guohuang88"},"content":"**Find Tags** | `findt KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g. `findt depression diabetes`","lastModifiedDate":"2024-03-24"},{"lineNumber":361,"author":{"gitId":"guohuang88"},"content":"**AddEvent** | `adde INDEX [n/NAME_OF_EVENT_ON_THAT_DATE] [d/DATE_OR_DATETIME_OF_EVENT_ON_THAT_DATE]` \u003cbr\u003e e.g. `adde 1 n/Birthday d/20-01-2022`","lastModifiedDate":"2024-03-18"},{"lineNumber":362,"author":{"gitId":"guohuang88"},"content":"**DeleteEvent** | `deletee PATIENT_INDEX [e/EVENT_INDEX]` \u003cbr\u003e e.g. `deletee 1 e/1`","lastModifiedDate":"2024-03-18"},{"lineNumber":363,"author":{"gitId":"guohuang88"},"content":"**EditEvent** | `edite PATIENT_INDEX [e/EVENT_INDEX] [n/NAME_OF_EVENT_ON_THAT_DATE] [d/DATE_OR_DATETIME_OF_EVENT_ON_THAT_DATE]` \u003cbr\u003e e.g. `edite 1 e/1 n/Papa Birthday d/20-01-2023`","lastModifiedDate":"2024-03-18"},{"lineNumber":364,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":365,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"guohuang88":61,"SherisseTJW":13,"ZhiWei1010":25,"choowengyan":14,"NeoHW":96,"-":156}},{"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\"\u003ePatientSync\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":"NeoHW"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2324S2-CS2103-F09-2/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":{"NeoHW":1,"-":66}},{"path":"docs/_site/stylesheets/main.css","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"mark {","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":" background-color: #ff0;","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":" border-radius: 5px;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":" padding-top: 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" padding-bottom: 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":".indented {","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" padding-left: 20px;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":".theme-card img {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" width: 100%;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"/* Scrollbar */","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":".slim-scroll::-webkit-scrollbar {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" width: 5px;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":".slim-scroll::-webkit-scrollbar-thumb {","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" background: #808080;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" border-radius: 20px;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":".slim-scroll::-webkit-scrollbar-track {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" background: transparent;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" border-radius: 20px;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":".slim-scroll-blue::-webkit-scrollbar {","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" width: 5px;","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":".slim-scroll-blue::-webkit-scrollbar-thumb {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" background: #00b0ef;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" border-radius: 20px;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":".slim-scroll-blue::-webkit-scrollbar-track {","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" background: transparent;","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" border-radius: 20px;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":"/* Layout containers */","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":"#flex-body {","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" display: flex;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" flex: 1;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" align-items: start;","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":"#content-wrapper {","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" flex: 1;","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" margin: 0 auto;","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" min-width: 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" max-width: 1000px;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" overflow-x: auto;","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" padding: 0.8rem 20px 0 20px;","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" transition: 0.4s;","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" -webkit-transition: 0.4s;","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":"#site-nav,","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":"#page-nav {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" display: flex;","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" flex-direction: column;","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" position: sticky;","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" top: var(--sticky-header-height);","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" flex: 0 0 auto;","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" max-width: 300px;","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" max-height: calc(100vh - var(--sticky-header-height));","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" width: 300px;","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":"#site-nav {","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" border-right: 1px solid lightgrey;","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" padding-bottom: 20px;","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" z-index: 999;","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":".site-nav-top {","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" margin: 0.8rem 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" padding: 0 12px 12px 12px;","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":".nav-component {","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" overflow-y: auto;","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":"#page-nav {","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" border-left: 1px solid lightgrey;","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":"@media screen and (max-width: 1299.98px) {","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" #page-nav {","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" display: none;","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":"/* Bootstrap medium(md) responsive breakpoint */","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":"@media screen and (max-width: 991.98px) {","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" #site-nav {","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" display: none;","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":"/* Bootstrap small(sm) responsive breakpoint */","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":"@media (max-width: 767.98px) {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" .indented {","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"NeoHW"},"content":" padding-left: 10px;","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":" #content-wrapper {","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" padding: 0 10px;","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":"/* Bootstrap extra small(xs) responsive breakpoint */","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":"@media screen and (max-width: 575.98px) {","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":" #site-nav {","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"NeoHW"},"content":" display: none;","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":"/* Hide site navigation when printing */","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":"@media print {","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"NeoHW"},"content":" #site-nav {","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"NeoHW"},"content":" display: none;","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" #page-nav {","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":" display: none;","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"NeoHW"},"content":" /* Reduce font size when printing */","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":" h1 {","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" font-size: 1.2rem !important;","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":" h2 {","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":" font-size: 1.0rem !important;","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":" h3 {","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"NeoHW"},"content":" font-size: 0.9rem !important;","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":" h4 {","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":" font-size: 0.8rem !important;","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"NeoHW"},"content":" h5 {","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"NeoHW"},"content":" font-size: 0.7rem !important;","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"NeoHW"},"content":" body {","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":" font-size: 0.65rem !important;","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"NeoHW"},"content":" .btn {","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"NeoHW"},"content":" font-size: 0.65rem !important;","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"NeoHW"},"content":" img {","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"NeoHW"},"content":" zoom: 0.8; /* might not work on some browsers */","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"NeoHW"},"content":"h2,","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"NeoHW"},"content":"h3,","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"NeoHW"},"content":"h4,","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"NeoHW"},"content":"h5,","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"NeoHW"},"content":"h6 {","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"NeoHW"},"content":" color: #e46c0a;","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"NeoHW":170}},{"path":"docs/diagrams/AddEventSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SherisseTJW"},"content":"@startuml","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SherisseTJW"},"content":"!include style.puml","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SherisseTJW"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"participant \":AddEventCommandParser\" as AddEventCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"participant \"a:AddEventCommand\" as AddEventCommand LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":"end box","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":"end box","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":"[-\u003e LogicManager : execute(adde 1 n/Birthday d/20-01-2022)","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":"activate LogicManager","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SherisseTJW"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(adde 1 n/Birthday d/20-01-2022)","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SherisseTJW"},"content":"create AddEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":"AddressBookParser -\u003e AddEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SherisseTJW"},"content":"activate AddEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":"AddEventCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":"deactivate AddEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":"AddressBookParser -\u003e AddEventCommandParser : parse(adde 1 n/Birthday d/20-01-2022)","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":"activate AddEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":"Create AddEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":"AddEventCommandParser -\u003e AddEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":"activate AddEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":"AddEventCommand --\u003e AddEventCommandParser : a","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":"deactivate AddEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":"AddEventCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":"deactivate AddEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.\u0027","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":"AddEventCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":"destroy AddEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":"LogicManager -\u003e AddEventCommand : execute()","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":"activate AddEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SherisseTJW"},"content":"AddEventCommand -\u003e Model : setPatient(args)","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SherisseTJW"},"content":"activate Model","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SherisseTJW"},"content":"Model --\u003e AddEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SherisseTJW"},"content":"deactivate Model","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SherisseTJW"},"content":"create CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SherisseTJW"},"content":"AddEventCommand -\u003e CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SherisseTJW"},"content":"activate CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SherisseTJW"},"content":"CommandResult --\u003e AddEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"SherisseTJW"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"SherisseTJW"},"content":"AddEventCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SherisseTJW"},"content":"deactivate AddEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"SherisseTJW"},"content":"AddEventCommand -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"SherisseTJW"},"content":"destroy AddEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SherisseTJW"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SherisseTJW"},"content":"@enduml","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SherisseTJW":74}},{"path":"docs/diagrams/AddSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"choowengyan"},"content":"@startuml","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"choowengyan"},"content":"!include style.puml","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"choowengyan"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"participant \":AddCommandParser\" as AddCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"participant \"a:AddCommand\" as AddCommand LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":"[-\u003e LogicManager : execute(add id/ 12347 n/ Mary Jane p/ Mary f/ Korean c/ Lives with only daughter h/ Watch Drama)","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":"activate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(add id/ 12347 n/ Mary Jane p/ Mary f/ Korean c/ Lives with only daughter h/ Watch Drama)","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":"create AddCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":"AddressBookParser -\u003e AddCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":"AddCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":"AddressBookParser -\u003e AddCommandParser : parse(add id/ 12347 n/ Mary Jane p/ Mary f/ Korean c/ Lives with only daughter h/ Watch Drama)","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":"activate AddCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":"Create AddCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":"AddCommandParser -\u003e AddCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":"activate AddCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":"AddCommand --\u003e AddCommandParser : a","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":"AddCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":"deactivate AddCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.\u0027","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":"AddCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":"destroy AddCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":"LogicManager -\u003e AddCommand : execute()","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":"activate AddCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":"AddCommand -\u003e Model : setPatient(args)","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":"Model --\u003e AddCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":"create CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":"AddCommand -\u003e CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":"activate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":"CommandResult --\u003e AddCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":"AddCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":"deactivate AddCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":"AddCommand -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":"destroy AddCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"choowengyan"},"content":"@enduml","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"choowengyan":74}},{"path":"docs/diagrams/AddTagsActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"start","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":":User wants to add tags to a patient;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":":User runs the \"addt\" command with index and tags;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"if () then ([else])","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":" :PatientSync throws an error;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"else ([Valid command format])","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":" :PatientSync checks if the index is valid;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" if () then ([else])","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" :PatientSync throws an error;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" else ([Valid index])","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" :PatientSync generates the set of tags to be added;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" :PatientSync retrieves the patient with the specified index;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" :PatientSync retrieves the patient\u0027s current tags;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" while () is ([More tags to be processed])","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" if () then ([Tag already exists in patient\u0027s tag set])","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" :Add message to output: Tag already exists for the patient;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" else ([else])","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" :Add the tag to the patient\u0027s tag set;","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" :Add message to output: Tag added successfully for the patient;","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" endif","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" endwhile([else])","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" :PatientSync updates the patient\u0027s details;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" :PatientSync updates the displayed patient list;","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" :PatientSync displays output message;","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" endif","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"endif","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"stop","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"NeoHW":29}},{"path":"docs/diagrams/AddTagsSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"@startuml","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"!include style.puml","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"participant \":AddTagsCommandParser\" as AddTagsCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"participant \"a:AddTagsCommand\" as AddTagsCommand LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"end box","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"end box","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"[-\u003e LogicManager : execute(addt 1 t/christian ...)","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"activate LogicManager","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(addt 1 t/christian ...)","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"create AddTagsCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"AddressBookParser -\u003e AddTagsCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"activate AddTagsCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"AddTagsCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"deactivate AddTagsCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"AddressBookParser -\u003e AddTagsCommandParser : parse(addt 1 t/christian ...)","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"activate AddTagsCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":"Create AddTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"AddTagsCommandParser -\u003e AddTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"activate AddTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":"AddTagsCommand --\u003e AddTagsCommandParser : a","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"deactivate AddTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":"AddTagsCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":"deactivate AddTagsCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.\u0027","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":"AddTagsCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":"destroy AddTagsCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":"LogicManager -\u003e AddTagsCommand : execute()","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":"activate AddTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":"AddTagsCommand -\u003e Model : setPatient(args)","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":"activate Model","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":"Model --\u003e AddTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":"deactivate Model","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"AddTagsCommand -\u003e Model : updateFilteredPatientList(predicate)","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":"Model -\u003e AddTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":"create CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":"AddTagsCommand -\u003e CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":"activate CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":"CommandResult --\u003e AddTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":"AddTagsCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":"deactivate AddTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":"AddTagsCommand -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":"destroy AddTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":"@enduml","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"NeoHW":80}},{"path":"docs/diagrams/DeleteEventSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"@startuml","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"!include style.puml","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"participant \":DeleteEventCommandParser\" as DeleteEventCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":"participant \"a:DeleteEventCommand\" as DeleteEventCommand LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":"[-\u003e LogicManager : execute(\"delete 1 e/ 1\")","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":"activate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete 1 e/ 1\")","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":"create DeleteEventCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":"AddressBookParser -\u003e DeleteEventCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":"activate DeleteEventCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":"deactivate DeleteEventCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":"AddressBookParser -\u003e DeleteEventCommandParser : parse(\"delete 1 e/ 1\")","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":"activate DeleteEventCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":"Create DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommandParser -\u003e DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":"activate DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommand --\u003e DeleteEventCommandParser : a","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":"deactivate DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":"deactivate DeleteEventCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.\u0027","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":"destroy DeleteEventCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":"LogicManager -\u003e DeleteEventCommand : execute()","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":"activate DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommand -\u003e Model : setPatient(args)","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"ZhiWei1010"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"ZhiWei1010"},"content":"Model --\u003e DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"ZhiWei1010"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommand -\u003e Model : updateFilteredPatientList(p)","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"ZhiWei1010"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"ZhiWei1010"},"content":"Model -\u003e DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"ZhiWei1010"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"ZhiWei1010"},"content":"create CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommand -\u003e CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"ZhiWei1010"},"content":"activate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"ZhiWei1010"},"content":"CommandResult --\u003e DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"ZhiWei1010"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"ZhiWei1010"},"content":"deactivate DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"ZhiWei1010"},"content":"DeleteEventCommand -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"ZhiWei1010"},"content":"destroy DeleteEventCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"ZhiWei1010"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"ZhiWei1010"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"ZhiWei1010"},"content":"@enduml","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"ZhiWei1010":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":"-"},"content":"[-\u003e LogicManager : execute(\"delete 1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete 1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"1\")","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"DeleteCommandParser -\u003e DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser :","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":"guohuang88"},"content":"DeleteCommand -\u003e Model : deletePatient(1)","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":{"guohuang88":1,"-":69}},{"path":"docs/diagrams/DeleteTagsActivityDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"start","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":":User wants to delete tags from a patient;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":":User runs the \"deletet\" command with index and tags;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"if () then ([else])","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":" :PatientSync throws an error;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"else ([Valid command format])","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":" :PatientSync checks if the index is valid;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" if () then ([else])","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" :PatientSync throws an error;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" else ([Valid index])","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":" :PatientSync generates the set of tags to be deleted;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" :PatientSync retrieves the patient with the specified index;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" :PatientSync retrieves the patient\u0027s current tags;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" while () is ([More tags to be processed])","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" if () then ([Tag exists in patient\u0027s tag set])","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" :Remove the tag from the patient\u0027s tag set;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" :add message to output: Tag deleted successfully for the patient;","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" else ([else])","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" :add message to output: The tag does not exist for the patient;","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" endif","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" endwhile ([else])","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":" :PatientSync updates the patient\u0027s details;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" :PatientSync updates the displayed patient list;","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" :PatientSync displays output message;","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" endif","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"endif","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"stop","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"NeoHW":29}},{"path":"docs/diagrams/DeleteTagsSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"@startuml","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"!include style.puml","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"participant \":DeleteTagsCommandParser\" as DeleteTagsCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"participant \"a:DeleteTagsCommand\" as DeleteTagsCommand LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"[-\u003e LogicManager : execute(deletet 1 t/christian ...)","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"activate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(deletet 1 t/christian ...)","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"create DeleteTagsCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"AddressBookParser -\u003e DeleteTagsCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"activate DeleteTagsCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"deactivate DeleteTagsCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"AddressBookParser -\u003e DeleteTagsCommandParser : parse(deletet 1 t/christian ...)","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"activate DeleteTagsCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":"Create DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommandParser -\u003e DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"activate DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommand --\u003e DeleteTagsCommandParser : a","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"deactivate DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommandParser --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":"deactivate DeleteTagsCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.\u0027","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":"destroy DeleteTagsCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":"LogicManager -\u003e DeleteTagsCommand : execute()","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":"activate DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommand -\u003e Model : setPatient(args)","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":"Model --\u003e DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommand -\u003e Model : updateFilteredPatientList(predicate)","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":"Model -\u003e DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":"create CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommand -\u003e CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":"activate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":"CommandResult --\u003e DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":"deactivate DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":"DeleteTagsCommand -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":"destroy DeleteTagsCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":"@enduml","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"NeoHW":80}},{"path":"docs/diagrams/EditEventSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"@startuml","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"!include style.puml","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"participant \":EditEventCommandParser\" as EditEventCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"participant \"e:EditEventCommand\" as EditEventCommand LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"guohuang88"},"content":"end box","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":"end box","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":"[-\u003e LogicManager : execute(\"edite 1 e/1 n/event d/20-12-2000\")","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":"activate LogicManager","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"edite 1 e/1 n/event d/20-12-2000\")","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":"create EditEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":"AddressBookParser -\u003e EditEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":"activate EditEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":"EditEventCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":"deactivate EditEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":"AddressBookParser -\u003e EditEventCommandParser : parse(\"1 e/1 n/event d/20-12-2000\")","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":"activate EditEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":"Create EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":"EditEventCommandParser -\u003e EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":"activate EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":"EditEventCommand --\u003e EditEventCommandParser : e","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":"deactivate EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":"EditEventCommandParser --\u003e AddressBookParser : e","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":"deactivate EditEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.\u0027","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":"EditEventCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":"destroy EditEventCommandParser","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"guohuang88"},"content":"AddressBookParser --\u003e LogicManager : e","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"guohuang88"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"guohuang88"},"content":"LogicManager -\u003e EditEventCommand : execute(m)","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"guohuang88"},"content":"activate EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"guohuang88"},"content":"EditEventCommand -\u003e Model : setPatient(args)","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"guohuang88"},"content":"activate Model","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"guohuang88"},"content":"Model --\u003e EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":"deactivate Model","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"guohuang88"},"content":"EditEventCommand -\u003e Model : updateFilteredPatientList(args)","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"guohuang88"},"content":"activate Model","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"guohuang88"},"content":"Model --\u003e EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"guohuang88"},"content":"deactivate Model","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"guohuang88"},"content":"create CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"guohuang88"},"content":"EditEventCommand -\u003e CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"guohuang88"},"content":"activate CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"guohuang88"},"content":"CommandResult --\u003e EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"guohuang88"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"guohuang88"},"content":"EditEventCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"guohuang88"},"content":"deactivate EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"guohuang88"},"content":"EditEventCommand -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"guohuang88"},"content":"destroy EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"guohuang88"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"guohuang88"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"guohuang88"},"content":"@enduml","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"guohuang88":80}},{"path":"docs/diagrams/EditSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"choowengyan"},"content":"@startuml","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"choowengyan"},"content":"!include style.puml","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"choowengyan"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"participant \":EditCommandParser\" as EditCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"participant \"e:EditCommand\" as EditCommand LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":"[-\u003e LogicManager : execute(\"edit 2 f/Aglio-olio t/depression\")","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":"activate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"edit 2 f/Aglio-olio t/depression\")","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":"create EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":"AddressBookParser -\u003e EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":"EditCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":"AddressBookParser -\u003e EditCommandParser : parse(\"edit 2 f/Aglio-olio t/depression\")","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":"activate EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":"Create EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":"EditCommandParser -\u003e EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":"activate EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":"EditCommand --\u003e EditCommandParser : e","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":"EditCommandParser --\u003e AddressBookParser : e","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":"deactivate EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.\u0027","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":"EditCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":"destroy EditCommandParser","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":"AddressBookParser --\u003e LogicManager : e","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":"LogicManager -\u003e EditCommand : execute(m)","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":"activate EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":"EditCommand -\u003e Model : setPatient(args)","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":"EditCommand -\u003e Model : updateFilteredPatientList(args)","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":"Model --\u003e EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"choowengyan"},"content":"create CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":"EditCommand -\u003e CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":"activate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":"CommandResult --\u003e EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":"EditCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":"deactivate EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"choowengyan"},"content":"EditCommand -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"choowengyan"},"content":"destroy EditCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"choowengyan"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"choowengyan"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"choowengyan"},"content":"@enduml","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"choowengyan":80}},{"path":"docs/diagrams/FindSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"!include style.puml","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"participant \":FindCommandParser\" as FindCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"participant \"f:FindCommand\" as FindCommand LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"guohuang88"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":"end box","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":"[-\u003e LogicManager : execute(\"find Alex\")","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":"activate LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"find Alex\")","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":"create FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":"AddressBookParser -\u003e FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":"FindCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":"AddressBookParser -\u003e FindCommandParser : parse(\"Alex\")","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":"activate FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":"create FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":"FindCommandParser -\u003e FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":"activate FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":"FindCommand --\u003e FindCommandParser :","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":"FindCommandParser --\u003e AddressBookParser : f","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":"deactivate FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":"FindCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":"destroy FindCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"guohuang88"},"content":"AddressBookParser --\u003e LogicManager : f","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"guohuang88"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"guohuang88"},"content":"LogicManager -\u003e FindCommand : execute(m)","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"guohuang88"},"content":"activate FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"guohuang88"},"content":"FindCommand -\u003e Model : updateFilteredPatientList(args)","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"guohuang88"},"content":"activate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"guohuang88"},"content":"Model --\u003e FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":"deactivate Model","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"guohuang88"},"content":"create CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"guohuang88"},"content":"FindCommand -\u003e CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"guohuang88"},"content":"activate CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"guohuang88"},"content":"CommandResult --\u003e FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"guohuang88"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"guohuang88"},"content":"FindCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"guohuang88"},"content":"deactivate FindCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"guohuang88"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"guohuang88"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"guohuang88"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"guohuang88":70}},{"path":"docs/diagrams/FindTagsSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"!include style.puml","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"participant \":FindTagsCommandParser\" as FindTagsCommandParser LOGIC_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"participant \"f:FindTagsCommand\" as FindTagsCommand LOGIC_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"guohuang88"},"content":"end box","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":"end box","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":"[-\u003e LogicManager : execute(\"findt depression\")","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":"activate LogicManager","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"findt depression\")","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":"create FindTagsCommandParser","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":"AddressBookParser -\u003e FindTagsCommandParser","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":"activate FindTagsCommandParser","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":"FindTagsCommandParser --\u003e AddressBookParser","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":"deactivate FindTagsCommandParser","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":"AddressBookParser -\u003e FindTagsCommandParser : parse(\"depression\")","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":"activate FindTagsCommandParser","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":"create FindTagsCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":"FindTagsCommandParser -\u003e FindTagsCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":"activate FindTagsCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":"FindTagsCommand --\u003e FindTagsCommandParser :","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":"deactivate FindTagsCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":"FindTagsCommandParser --\u003e AddressBookParser : f","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":"deactivate FindTagsCommandParser","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":"FindTagsCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":"destroy FindTagsCommandParser","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"guohuang88"},"content":"AddressBookParser --\u003e LogicManager : f","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"guohuang88"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"guohuang88"},"content":"LogicManager -\u003e FindTagsCommand : execute(m)","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"guohuang88"},"content":"activate FindTagsCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"guohuang88"},"content":"FindTagsCommand -\u003e Model : updateFilteredPatientList(args)","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"guohuang88"},"content":"activate Model","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"guohuang88"},"content":"Model --\u003e FindTagsCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":"deactivate Model","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"guohuang88"},"content":"create CommandResult","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"guohuang88"},"content":"FindTagsCommand -\u003e CommandResult","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"guohuang88"},"content":"activate CommandResult","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"guohuang88"},"content":"CommandResult --\u003e FindTagsCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"guohuang88"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"guohuang88"},"content":"FindTagsCommand --\u003e LogicManager : r","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"guohuang88"},"content":"deactivate FindTagsCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"guohuang88"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"guohuang88"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"guohuang88"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"guohuang88":70}},{"path":"docs/diagrams/ListSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"@startuml","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"!include style.puml","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"participant \":ListCommand\" as ListCommand LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":"participant \":CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":"participant \":Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":"end box","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":"[-\u003e LogicManager : execute( \"list\" )","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":"activate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"list\")","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":"activate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":"Create ListCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":"AddressBookParser -\u003e ListCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":"activate ListCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":"ListCommand --\u003e AddressBookParser : a","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":"deactivate ListCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":"AddressBookParser --\u003e LogicManager : a","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":"deactivate AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":"LogicManager -\u003e ListCommand : execute()","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":"activate ListCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":"ListCommand -\u003e Model : updateFilteredPatientList(p)","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":"activate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":"Model --\u003e ListCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":"deactivate Model","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":"create CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":"ListCommand -\u003e CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":"activate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":"CommandResult --\u003e ListCommand :","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":"deactivate CommandResult","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":"ListCommand --\u003e LogicManager : result","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":"deactivate ListCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":"ListCommand -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":"destroy ListCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"ZhiWei1010"},"content":"[\u003c--LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"ZhiWei1010"},"content":"deactivate LogicManager","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"ZhiWei1010"},"content":"@enduml","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"ZhiWei1010":57}},{"path":"docs/diagrams/tracing/LogicSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-06-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include ../style.puml","lastModifiedDate":"2019-06-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"Participant \":LogicManager\" as logic LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":AddressBookParser\" as abp LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":EditCommandParser\" as ecp LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \"command:EditCommand\" as ec LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"[-\u003e logic : execute","lastModifiedDate":"2019-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate logic","lastModifiedDate":"2019-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"logic -\u003e abp ++: parseCommand(commandText)","lastModifiedDate":"2019-06-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"create ecp","lastModifiedDate":"2019-06-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"abp -\u003e ecp","lastModifiedDate":"2019-06-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"abp -\u003e ecp ++: parse(arguments)","lastModifiedDate":"2019-06-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"create ec","lastModifiedDate":"2019-06-17"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"ecp -\u003e ec ++: index, editPatientDescriptor","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"ec --\u003e ecp --","lastModifiedDate":"2019-06-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"ecp --\u003e abp --: command","lastModifiedDate":"2019-06-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"abp --\u003e logic --: command","lastModifiedDate":"2019-06-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-06-17"}],"authorContributionMap":{"NeoHW":1,"-":21}},{"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":"NeoHW"},"content":"# PatientSync","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"[![Java CI](https://github.com/AY2324S2-CS2103-F09-2/tp/actions/workflows/gradle.yml/badge.svg?branch\u003dmaster)](https://github.com/AY2324S2-CS2103-F09-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"[![codecov](https://codecov.io/gh/AY2324S2-CS2103-F09-2/tp/graph/badge.svg?token\u003dAX3SGG0FMX)](https://codecov.io/gh/AY2324S2-CS2103-F09-2/tp)","lastModifiedDate":"2024-03-14"},{"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":"NeoHW"},"content":"**PatientSync is a desktop application meticulously crafted for nurses who prioritize the well-being of their patients above all else.**\\","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"It allows you to input intimate details about your patients, such as food preferences and family conditions. While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"| Project Links | Description |","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"|-------------------------|------------------------------------------------------------------|","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"| [Project Website](https://ay2324s2-cs2103-f09-2.github.io/tp/) | Official website for the PatientSync desktop application. |","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"| [User Guide](UserGuide.html#quick-start) | Quick Start guide for users interested in using PatientSync. |","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"| [Developer Guide](DeveloperGuide.html) | Comprehensive guide for developers interested in contributing to PatientSync. |","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"| [About Us](AboutUs.html) | Learn more about the team behind the PatientSync project. |","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"**Acknowledgements**\\","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"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":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"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":{"NeoHW":13,"-":15}},{"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":"NeoHW"},"content":" * Changes the remark of an existing patient in the address book.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" + \": Edits the remark of the patient identified \"","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" + \"by the index number used in the last patient listing. \"","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * @param index of the patient in the filtered patient list to edit the remark","lastModifiedDate":"2024-03-08"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" * @param remark of the patient to be updated to","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"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 patient 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 patient’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 patient.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":"Create a new `Remark` in `seedu.address.model.patient`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"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 patient.","lastModifiedDate":"2024-03-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"NeoHW"},"content":"Simply add the following to [`seedu.address.ui.PatientCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-09"},{"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":"-"},"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 address book!","lastModifiedDate":"2023-09-12"},{"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":"NeoHW"},"content":"public PersonCard(Person patient, int displayedIndex) {","lastModifiedDate":"2024-03-08"},{"lineNumber":316,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"NeoHW"},"content":" remark.setText(patient.getRemark().value);","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" Person patientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-08"},{"lineNumber":348,"author":{"gitId":"NeoHW"},"content":" Person editedPatient \u003d new Person(","lastModifiedDate":"2024-03-08"},{"lineNumber":349,"author":{"gitId":"NeoHW"},"content":" patientToEdit.getName(), patientToEdit.getPhone(), patientToEdit.getEmail(),","lastModifiedDate":"2024-03-08"},{"lineNumber":350,"author":{"gitId":"NeoHW"},"content":" patientToEdit.getAddress(), remark, patientToEdit.getTags());","lastModifiedDate":"2024-03-08"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"NeoHW"},"content":" model.setPerson(patientToEdit, editedPatient);","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" return new CommandResult(generateSuccessMessage(editedPatient));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * {@code patientToEdit}.","lastModifiedDate":"2024-03-08"},{"lineNumber":362,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"NeoHW"},"content":" private String generateSuccessMessage(Person patientToEdit) {","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" return String.format(message, patientToEdit);","lastModifiedDate":"2024-03-08"},{"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":{"NeoHW":20,"-":382}},{"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":"NeoHW"},"content":"The `address` field in `Person` is actually an instance of the `seedu.address.model.patient.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-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" \"patients\": [ {","lastModifiedDate":"2024-03-08"},{"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":{"NeoHW":2,"-":113}},{"path":"docs/tutorials/TracingCode.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Tracing code\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Tracing code","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c!-- {:toc} --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureDiagram.puml\" alt\u003d\"ArchitectureDiagram\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ComponentManagers.puml\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":80,"author":{"gitId":"-"},"content":"**Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2023-09-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"**Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":175,"author":{"gitId":"-"},"content":" **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2023-09-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditPersonDescriptor`. Recall that we can verify the contents of `editPersonDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/tracing/LogicSequenceDiagram.puml\" alt\u003d\"Tracing an `edit` command through the Logic component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":194,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"NeoHW"},"content":" Person patientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-08"},{"lineNumber":199,"author":{"gitId":"NeoHW"},"content":" Person editedPatient \u003d createEditedPerson(patientToEdit, editPatientDescriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":200,"author":{"gitId":"NeoHW"},"content":" if (!patientToEdit.isSamePerson(editedPatient) \u0026\u0026 model.hasPerson(editedPatient)) {","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" model.setPerson(patientToEdit, editedPatient);","lastModifiedDate":"2024-03-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"NeoHW"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPatient));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * it uses the `setPerson()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the patient data.","lastModifiedDate":"2024-03-08"},{"lineNumber":211,"author":{"gitId":"NeoHW"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ patients.\u003cbr\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":212,"author":{"gitId":"NeoHW"},"content":" FYI, The \u0027filtered list\u0027 is the list of patients 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 patients so that the user can see the edited patient along with all other patients. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2024-03-08"},{"lineNumber":213,"author":{"gitId":"NeoHW"},"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 patients is being tracked.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" patients.addAll(","lastModifiedDate":"2024-03-08"},{"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":{"NeoHW":10,"-":301}},{"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":"NeoHW"},"content":" private static final String LOG_FILE \u003d \"patientsync.log\";","lastModifiedDate":"2024-03-22"},{"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":"NeoHW"},"content":" * Creates a logger named \u0027patientSync\u0027, containing a {@code ConsoleHandler} and a {@code FileHandler}.","lastModifiedDate":"2024-03-22"},{"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":"NeoHW"},"content":" baseLogger \u003d Logger.getLogger(\"patientSync\");","lastModifiedDate":"2024-03-22"},{"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":{"NeoHW":3,"-":103}},{"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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" /** Returns an unmodifiable view of the filtered list of patients */","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" ObservableList\u003cPatient\u003e getFilteredPatientList();","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":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":"-"},"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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public ObservableList\u003cPatient\u003e getFilteredPatientList() {","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" return model.getFilteredPatientList();","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":3,"-":85}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public static final String MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX \u003d \"The patient index provided is invalid\";","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":" public static final String MESSAGE_INVALID_EVENT_DISPLAYED_INDEX \u003d \"The event index provided is invalid\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_PATIENT_LISTED_OVERVIEW \u003d \"%1$d patients listed!\";","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Formats the {@code patient} for display to the user.","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" public static String format(Patient patient) {","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" builder.append(patient.getName())","lastModifiedDate":"2024-03-08"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" .append(\"; PreferredName: \")","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" .append(patient.getPreferredName())","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" .append(\"; PatientHospitalId: \")","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" .append(patient.getPatientHospitalId())","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" .append(\"; FoodPreference: \")","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" .append(patient.getFoodPreference())","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" .append(\"; FamilyCondition: \")","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" .append(patient.getFamilyCondition())","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" .append(\"; Hobby: \")","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" .append(patient.getHobby())","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" patient.getTags().forEach(builder::append);","lastModifiedDate":"2024-03-08"},{"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":{"SherisseTJW":1,"choowengyan":10,"NeoHW":7,"-":38}},{"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":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FAMILY_CONDITION;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FOOD_PREFERENCE;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOBBY;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PID;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PREFERRED_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" * Adds a patient to the address book.","lastModifiedDate":"2024-03-08"},{"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":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a patient to the address book. \"","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":" + PREFIX_PID + \"PATIENT_HOSPITAL_ID\"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" + PREFIX_PREFERRED_NAME + \"PREFERRED_NAME\"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" + PREFIX_FOOD_PREFERENCE + \"FOOD_PREFERENCE \"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":" + PREFIX_FAMILY_CONDITION + \"FAMILY_CONDITION \"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" + PREFIX_HOBBY + \"HOBBY \"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" + PREFIX_PID + \"12345\"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" + PREFIX_NAME + \"Alex Yeoh Jia Jun \"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" + PREFIX_PREFERRED_NAME + \"Alex \"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" + PREFIX_FOOD_PREFERENCE + \"Curry Chicken \"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" + PREFIX_FAMILY_CONDITION + \"Stable, Has 2 sons visit him regularly \"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" + PREFIX_HOBBY + \"Singing karaoke \"","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" + PREFIX_TAG + \"Diabetes \";","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" public static final String MESSAGE_SUCCESS \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" \"Information for patient %1$s with ID %2$s has been successfully added!\";","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_DUPLICATE_PATIENT \u003d \"This patient already exists in the address book\";","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" private final Patient toAdd;","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" * Creates an AddCommand to add the specified {@code Patient}","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" public AddCommand(Patient patient) {","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" toAdd \u003d patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" if (model.hasPatient(toAdd)) {","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PATIENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" model.addPatient(toAdd);","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd.getName(), toAdd.getPatientHospitalId()));","lastModifiedDate":"2024-03-12"},{"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":{"choowengyan":20,"NeoHW":12,"-":58}},{"path":"src/main/java/seedu/address/logic/commands/AddEventCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SherisseTJW"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.EditCommand.createEditedPatient;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"SherisseTJW"},"content":" * Adds an event to the specified patient (based on index from the last shown patient list)","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"SherisseTJW"},"content":"public class AddEventCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":" public static final String COMMAND_WORD \u003d \"adde\";","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":" + \": Adds an event for a Patient. \"","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" + \"Parameters: INDEX (must be a positive integer matching that of the Patient in the `list` command) \"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":" + PREFIX_NAME + \" [Name of the Event that falls on this Date] \"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":" + PREFIX_DATETIME + \" [Date / Datetime, in the format DD-MM-YYYY\"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":" + \" / DD-MM-YYYY, HH:mm - HH:mm respectively]\\n\"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":" + \"Example: \"","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":" + PREFIX_NAME + \" Father Birthday \"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":" + PREFIX_DATETIME + \"29-09-1789\";","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Event %1$s successfully added for Patient %2$s with ID %3$s for %4$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":" public static final String MESSAGE_DUPLICATE \u003d \"Event %1$s already exists for Patient %2$s with ID %3$s for %4$s\";","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":" private final Index index;","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":" private final Event dateToAdd;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" private final EditPatientDescriptor editPatientDescriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":" * Constructs an AddEventCommand to add the specified {@code event}","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" * to the Patient with id {@code index}","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":" * @param index","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"SherisseTJW"},"content":" * @param event","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"SherisseTJW"},"content":" public AddEventCommand(Index index, Event event) {","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SherisseTJW"},"content":" requireAllNonNull(index, event);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"SherisseTJW"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"SherisseTJW"},"content":" this.dateToAdd \u003d event;","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SherisseTJW"},"content":" this.editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"SherisseTJW"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"SherisseTJW"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"SherisseTJW"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"SherisseTJW"},"content":" List\u003cPatient\u003e lastShownList \u003d model.getFilteredPatientList();","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"SherisseTJW"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"SherisseTJW"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":" Patient patientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cEvent\u003e newEventsList \u003d new HashSet\u003c\u003e(patientToEdit.getEvents());","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"SherisseTJW"},"content":" if (newEventsList.contains(this.dateToAdd)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"SherisseTJW"},"content":" return new CommandResult(String.format(MESSAGE_DUPLICATE, dateToAdd.name, patientToEdit.getName(),","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"SherisseTJW"},"content":" index.getOneBased(), dateToAdd.date));","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"SherisseTJW"},"content":" newEventsList.add(this.dateToAdd);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setEvents(newEventsList);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"SherisseTJW"},"content":" Patient editedPatient \u003d createEditedPatient(patientToEdit, editPatientDescriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"SherisseTJW"},"content":" model.setPatient(patientToEdit, editedPatient);","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"SherisseTJW"},"content":" model.updateFilteredPatientList(Model.PREDICATE_SHOW_ALL_PATIENTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"SherisseTJW"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, dateToAdd.name, editedPatient.getName(),","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"SherisseTJW"},"content":" index.getOneBased(), dateToAdd.date));","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"SherisseTJW"},"content":" * Returns true if both AddEventCommands have the same index and important date to add.","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"SherisseTJW"},"content":" * @param other Another object to compare to.","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"SherisseTJW"},"content":" * @return True if the other object is an AddEventCommand with the same index and date / datetime to add.","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"SherisseTJW"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"SherisseTJW"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"SherisseTJW"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"SherisseTJW"},"content":" if (!(other instanceof AddEventCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"SherisseTJW"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand otherAddEventCommand \u003d (AddEventCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"SherisseTJW"},"content":" return index.equals(otherAddEventCommand.index)","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 dateToAdd.equals(otherAddEventCommand.dateToAdd);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"SherisseTJW"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"SherisseTJW"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"SherisseTJW"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"SherisseTJW"},"content":" .add(\"index\", index)","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"SherisseTJW"},"content":" .add(\"event\", dateToAdd)","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"SherisseTJW"},"content":" .toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"SherisseTJW"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"SherisseTJW":119}},{"path":"src/main/java/seedu/address/logic/commands/AddTagsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.EditCommand.createEditedPatient;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-10"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PATIENTS;","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-10"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import java.util.List;","lastModifiedDate":"2024-03-10"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import java.util.logging.Level;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import javafx.util.Pair;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-10"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * Adds one or more tags to the specified patient.","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * Repeated tags in command will be added as a single tag.","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * If the patient already has the tag, it will not be added.","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"public class AddTagsCommand extends Command {","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" public static final String COMMAND_WORD \u003d \"addt\";","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" + \": Adds one or more tags to the patient identified \"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" + \"by the index number used in the last patient listing. \"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-10"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" + PREFIX_TAG + \"[TAG]+ \\n\"","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-10"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" + PREFIX_TAG + \"fall risk\";","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_ADD_TAG_SUCCESS \u003d \"Added the tag: %2$s for Patient: %1$s\"","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" + \" successfully\";","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_DUPLICATE_TAG \u003d \"The tag: %2$s already exists\"","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" + \" for Patient: %1$s\";","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddTagsCommand.class);","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" private final Index index;","lastModifiedDate":"2024-03-10"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" private final Set\u003cTag\u003e tagsToAdd;","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" private final EditPatientDescriptor editPatientDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" * @param index of the patient in the filtered patient list to add the tags","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" * @param tagsToAdd to be added to the patient","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" public AddTagsCommand(Index index, Set\u003cTag\u003e tagsToAdd) {","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" requireAllNonNull(index, tagsToAdd);","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-10"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" this.tagsToAdd \u003d tagsToAdd;","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" this.editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" * Executes the add tag command to add one or more tags to the patient.","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" * @return A command result message indicating the success of the operation.","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" * @throws CommandException If there is an error executing the command.","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-10"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" List\u003cPatient\u003e lastShownList \u003d model.getFilteredPatientList();","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.WARNING, \"Invalid patient index for Add Tags Command: \" + index);","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" Patient patientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" // Create new Hashset to add in new tags as Patient.getTags() return unmodifiableSet","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e(patientToEdit.getTags());","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" Pair\u003cSet\u003cTag\u003e, String\u003e result \u003d addTagsToPatient(patientToEdit, tagSet, tagsToAdd);","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e newTagSet \u003d result.getKey();","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" String commandResultString \u003d result.getValue();","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" editPatientDescriptor.setTags(newTagSet);","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" Patient editedPatient \u003d createEditedPatient(patientToEdit, editPatientDescriptor);","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" model.setPatient(patientToEdit, editedPatient);","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" model.updateFilteredPatientList(PREDICATE_SHOW_ALL_PATIENTS);","lastModifiedDate":"2024-03-11"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.INFO, \"Successfully called AddTagsCommand for patient: \" + editedPatient.getName());","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" return new CommandResult(commandResultString);","lastModifiedDate":"2024-03-22"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" * Adds the specified tags to a patient\u0027s tag set.","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-03-22"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" * @param patient The patient whose tags are being modified.","lastModifiedDate":"2024-03-22"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" * @param tagSet The current set of tags for the patient.","lastModifiedDate":"2024-03-22"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":" * @param toAddTags The Tags to be added.","lastModifiedDate":"2024-03-22"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" * @return A Pair containing the updated tag set and a string describing the outcome of the deletion.","lastModifiedDate":"2024-03-22"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":" public Pair\u003cSet\u003cTag\u003e, String\u003e addTagsToPatient(Patient patient, Set\u003cTag\u003e tagSet,","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e toAddTags) {","lastModifiedDate":"2024-03-22"},{"lineNumber":112,"author":{"gitId":"NeoHW"},"content":" requireAllNonNull(tagSet, toAddTags);","lastModifiedDate":"2024-03-22"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" StringBuilder commandOutcome \u003d new StringBuilder();","lastModifiedDate":"2024-03-22"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" for (Tag tag : toAddTags) {","lastModifiedDate":"2024-03-22"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":" assert tag !\u003d null : \"Tag cannot be null\";","lastModifiedDate":"2024-03-22"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":" if (tagSet.contains(tag)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":" commandOutcome.append(String.format(MESSAGE_DUPLICATE_TAG, patient.getName(), tag)).append(\"\\n\");","lastModifiedDate":"2024-03-22"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" } else {","lastModifiedDate":"2024-03-22"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":" tagSet.add(tag);","lastModifiedDate":"2024-03-22"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":" commandOutcome.append(String.format(MESSAGE_ADD_TAG_SUCCESS, patient.getName(), tag)).append(\"\\n\");","lastModifiedDate":"2024-03-22"},{"lineNumber":123,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":" return new Pair\u003c\u003e(tagSet, commandOutcome.toString());","lastModifiedDate":"2024-03-22"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"NeoHW"},"content":" * Returns true if both add tag commands have the same index and tags to add.","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"NeoHW"},"content":" * @param other Another object to compare to.","lastModifiedDate":"2024-03-11"},{"lineNumber":132,"author":{"gitId":"NeoHW"},"content":" * @return True if the other object is an AddTagsCommand with the same index and tags to add.","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-03-10"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-10"},{"lineNumber":136,"author":{"gitId":"NeoHW"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-10"},{"lineNumber":137,"author":{"gitId":"NeoHW"},"content":" return true;","lastModifiedDate":"2024-03-10"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":140,"author":{"gitId":"NeoHW"},"content":" if (!(other instanceof AddTagsCommand)) {","lastModifiedDate":"2024-03-11"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-03-10"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand otherTagCommand \u003d (AddTagsCommand) other;","lastModifiedDate":"2024-03-11"},{"lineNumber":145,"author":{"gitId":"NeoHW"},"content":" return index.equals(otherTagCommand.index)","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"NeoHW"},"content":" \u0026\u0026 tagsToAdd.equals(otherTagCommand.tagsToAdd);","lastModifiedDate":"2024-03-22"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"NeoHW"},"content":" public String toString() {","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"NeoHW"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-11"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" .add(\"index\", index)","lastModifiedDate":"2024-03-11"},{"lineNumber":153,"author":{"gitId":"NeoHW"},"content":" .add(\"tags\", tagsToAdd)","lastModifiedDate":"2024-03-22"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":" .toString();","lastModifiedDate":"2024-03-11"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":156,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"NeoHW":156}},{"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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * Deletes a patient identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" + \": Deletes the patient identified by the index number used in the displayed patient list.\\n\"","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":" public static final String MESSAGE_DELETE_PATIENT_SUCCESS \u003d \"Patient %1$s with ID %2$s \"","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" + \"has been successfully deleted.\";","lastModifiedDate":"2024-03-17"},{"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":"guohuang88"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":" * DeleteCommand Constructor.","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":" * @param targetIndex Index of the list in the address book.","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":" * Returns CommandResult containing success message.","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":" * @return CommandResult containing success message.","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":" * @throws CommandException When the provided index is invalid.","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":" */","lastModifiedDate":"2024-03-14"},{"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":"2018-08-08"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" List\u003cPatient\u003e lastShownList \u003d model.getFilteredPatientList();","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" Patient patientToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" model.deletePatient(patientToDelete);","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"guohuang88"},"content":" String.format(MESSAGE_DELETE_PATIENT_SUCCESS, patientToDelete.getName(), targetIndex.getOneBased())","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"guohuang88"},"content":" );","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27"},{"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 DeleteCommand)) {","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":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"guohuang88":13,"choowengyan":2,"NeoHW":7,"-":60}},{"path":"src/main/java/seedu/address/logic/commands/DeleteEventCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.logic.commands.EditCommand.createEditedPatient;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PATIENTS;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.List;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.logging.Level;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.parser.DeleteEventCommandParser;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":" * Deletes a patient identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":"public class DeleteEventCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":" public static final String COMMAND_WORD \u003d \"deletee\";","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":" + \": Deletes a specified event for a specific patient identified by index number of patient \"","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":" + \" in the displayed patient list as well as the event index.\\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":" + \"Parameters: INDEX of PATIENT (must be a positive integer matching that of the Patient in the\"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":" + \"`list` command) \"","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":" + \"e/ [Index of the Event] (must be a positive integer matching that of the event of the patient. \\n\"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":" + \"Example: \"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":" + \"e/ 1 \";","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" public static final String MESSAGE_DELETE_EVENT_SUCCESS \u003d \"Deleted Event: %2$s for Patient: %1$s\"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":" + \"successfully\";","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":" private final Index targetPatientIndex;","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":" private final Index targetEventIndex;","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":" private final EditPatientDescriptor editPatientDescriptor;","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"SherisseTJW"},"content":" * Constructs a DeleteEventCommand to delete the specified {@code event} using","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"ZhiWei1010"},"content":" * {@code targetEventIndex} from the Patient with id {@code targetPatientIndex}","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"ZhiWei1010"},"content":" * @param targetPatientIndex","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"ZhiWei1010"},"content":" * @param targetEventIndex","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"SherisseTJW"},"content":" public DeleteEventCommand(Index targetPatientIndex, Index targetEventIndex) {","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"ZhiWei1010"},"content":" requireAllNonNull(targetPatientIndex, targetEventIndex);","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"ZhiWei1010"},"content":" this.targetPatientIndex \u003d targetPatientIndex;","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"ZhiWei1010"},"content":" this.targetEventIndex \u003d targetEventIndex;","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"ZhiWei1010"},"content":" this.editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"ZhiWei1010"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"ZhiWei1010"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"ZhiWei1010"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"ZhiWei1010"},"content":" List\u003cPatient\u003e lastShownList \u003d model.getFilteredPatientList();","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"ZhiWei1010"},"content":" if (targetPatientIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"ZhiWei1010"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":" Patient patientToDeleteEvent \u003d lastShownList.get(targetPatientIndex.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cEvent\u003e eventSet \u003d patientToDeleteEvent.getEvents();","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"SherisseTJW"},"content":" if (targetEventIndex.getZeroBased() \u003e\u003d eventSet.size()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"SherisseTJW"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_EVENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cEvent\u003e currEventSet \u003d new HashSet\u003c\u003e(patientToDeleteEvent.getEvents());","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"SherisseTJW"},"content":" List\u003cEvent\u003e currEventList \u003d new ArrayList\u003c\u003e(currEventSet);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"SherisseTJW"},"content":" Collections.sort(currEventList);","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"SherisseTJW"},"content":" Event eventToDelete \u003d currEventList.get(targetEventIndex.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"SherisseTJW"},"content":" currEventList.remove(targetEventIndex.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cEvent\u003e newEventSet \u003d new HashSet\u003c\u003e(currEventList);","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"SherisseTJW"},"content":" Logger logger \u003d LogsCenter.getLogger(DeleteEventCommandParser.class);","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"SherisseTJW"},"content":" logger.log(Level.INFO, \"old set: \" + currEventSet);","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"SherisseTJW"},"content":" logger.log(Level.INFO, \"new set: \" + newEventSet);","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setName(patientToDeleteEvent.getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setTags(patientToDeleteEvent.getTags());","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setPatientHospitalId(patientToDeleteEvent.getPatientHospitalId());","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setPreferredName(patientToDeleteEvent.getPreferredName());","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setFoodPreference(patientToDeleteEvent.getFoodPreference());","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setFamilyCondition(patientToDeleteEvent.getFamilyCondition());","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setHobby(patientToDeleteEvent.getHobby());","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setName(patientToDeleteEvent.getName());","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setTags(patientToDeleteEvent.getTags());","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"SherisseTJW"},"content":" editPatientDescriptor.setEvents(newEventSet);","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"SherisseTJW"},"content":" Patient editedPatient \u003d createEditedPatient(patientToDeleteEvent, editPatientDescriptor);","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"SherisseTJW"},"content":" model.setPatient(patientToDeleteEvent, editedPatient);","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"ZhiWei1010"},"content":" model.updateFilteredPatientList(PREDICATE_SHOW_ALL_PATIENTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"SherisseTJW"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_EVENT_SUCCESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" Messages.format(patientToDeleteEvent),","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"ZhiWei1010"},"content":" eventToDelete));","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"ZhiWei1010"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"ZhiWei1010"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"ZhiWei1010"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"ZhiWei1010"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"ZhiWei1010"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"SherisseTJW"},"content":" if (!(other instanceof DeleteEventCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"ZhiWei1010"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand otherDeleteEventCommand \u003d (DeleteEventCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"SherisseTJW"},"content":" return targetPatientIndex.equals(otherDeleteEventCommand.targetPatientIndex)","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 targetEventIndex.equals(otherDeleteEventCommand.targetEventIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":127,"author":{"gitId":"ZhiWei1010"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"ZhiWei1010"},"content":" public String toString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"ZhiWei1010"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"ZhiWei1010"},"content":" .add(\"targetPatientIndex\", targetPatientIndex)","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"ZhiWei1010"},"content":" .add(\"targetEventIndex\", targetEventIndex)","lastModifiedDate":"2024-03-15"},{"lineNumber":132,"author":{"gitId":"ZhiWei1010"},"content":" .toString();","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":134,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"SherisseTJW":43,"ZhiWei1010":91}},{"path":"src/main/java/seedu/address/logic/commands/DeleteTagsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.EditCommand.createEditedPatient;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PATIENTS;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import java.util.logging.Level;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import javafx.util.Pair;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * Deletes given Tags from a patient identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"public class DeleteTagsCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" public static final String COMMAND_WORD \u003d \"deletet\";","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" + \": Deletes the specified tags to the patient identified \"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" + \"by the index number used in the last patient listing. \"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" + PREFIX_TAG + \"[TAG]+ \\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" + PREFIX_TAG + \"fall risk\";","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_DELETE_TAG_SUCCESS \u003d \"Deleted the tag: %2$s for Patient: %1$s\"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" + \" successfully\";","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_INVALID_TAG \u003d \"The tag: %2$s does not exists\"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" + \" for Patient: %1$s\";","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(DeleteTagsCommand.class);","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" private final Index index;","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" private final Set\u003cTag\u003e tagsToDelete;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" private final EditPatientDescriptor editPatientDescriptor;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" * Constructs a DeleteTagsCommand to delete the specified {@code Tag} using","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" * from the Patient with id {@code index}","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" * @param index of the patient in the filtered patient list to delete the tags","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" * @param tagsToDelete to be deleted from the patient","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" public DeleteTagsCommand(Index index, Set\u003cTag\u003e tagsToDelete) {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" requireAllNonNull(index, tagsToDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" this.tagsToDelete \u003d tagsToDelete;","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" this.editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" * Executes the delete tag command to delete one or more tags to the patient.","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" * @return A command result message indicating the success of the operation.","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" * @throws CommandException If there is an error executing the command.","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" List\u003cPatient\u003e lastShownList \u003d model.getFilteredPatientList();","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.WARNING, \"Invalid patient index for Delete Tags Command: \" + index);","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" Patient patientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" // Create new Hashset for tags as Patient.getTags() return unmodifiableSet","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e(patientToEdit.getTags());","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" Pair\u003cSet\u003cTag\u003e, String\u003e result \u003d deleteTagsFromPatient(patientToEdit, tagSet, tagsToDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e newTagSet \u003d result.getKey();","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" String commandResultString \u003d result.getValue();","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" editPatientDescriptor.setTags(newTagSet);","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" Patient editedPatient \u003d createEditedPatient(patientToEdit, editPatientDescriptor);","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" model.setPatient(patientToEdit, editedPatient);","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" model.updateFilteredPatientList(PREDICATE_SHOW_ALL_PATIENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.INFO, \"Successfully called delete tags command from patient: \" + editedPatient.getName());","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" return new CommandResult(commandResultString);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" * Deletes specified tags from a patient\u0027s tag set.","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" * @param patient The patient whose tags are being modified.","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" * @param tagSet The current set of tags for the patient.","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" * @param toDeleteTags The Tags to be deleted.","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":" * @return A Pair containing the updated tag set and a string describing the outcome of the deletion.","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" public Pair\u003cSet\u003cTag\u003e, String\u003e deleteTagsFromPatient(Patient patient, Set\u003cTag\u003e tagSet,","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e toDeleteTags) {","lastModifiedDate":"2024-03-22"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" requireAllNonNull(tagSet, toDeleteTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":" StringBuilder commandOutcome \u003d new StringBuilder();","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":" for (Tag tag : toDeleteTags) {","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" if (!tagSet.contains(tag)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":" commandOutcome.append(String.format(MESSAGE_INVALID_TAG, patient.getName(), tag)).append(\"\\n\");","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":" tagSet.remove(tag);","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" commandOutcome.append(String.format(MESSAGE_DELETE_TAG_SUCCESS, patient.getName(), tag)).append(\"\\n\");","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"NeoHW"},"content":" return new Pair\u003c\u003e(tagSet, commandOutcome.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":" * Returns true if both delete tag commands have the same index and tags to delete.","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"NeoHW"},"content":" * @param other Another object to compare to.","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"NeoHW"},"content":" * @return True if the other object is an DeleteTagsCommand with the same index and tags to add.","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" if (!(other instanceof DeleteTagsCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"NeoHW"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand otherTagCommand \u003d (DeleteTagsCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":" return index.equals(otherTagCommand.index)","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"NeoHW"},"content":" \u0026\u0026 tagsToDelete.equals(otherTagCommand.tagsToDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"NeoHW"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"NeoHW"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"NeoHW"},"content":" .add(\"targetPatientIndex\", index)","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" .add(\"tags\", tagsToDelete)","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"NeoHW"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"NeoHW":155}},{"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":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FAMILY_CONDITION;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FOOD_PREFERENCE;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOBBY;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PID;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PREFERRED_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PATIENTS;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"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.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":"SherisseTJW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-14"},{"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":"NeoHW"},"content":" * Edits the details of an existing patient in the address book.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the patient identified \"","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" + \"by the index number used in the displayed patient list. \"","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":" + \"[\" + PREFIX_PID + \"PATIENT HOSPITAL ID] \"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" + \"[\" + PREFIX_PREFERRED_NAME + \"PREFERRED NAME] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" + \"[\" + PREFIX_FOOD_PREFERENCE + \"FOOD PREFERENCE] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" + \"[\" + PREFIX_FAMILY_CONDITION + \"FAMILY CONDITION] \"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" + \"[\" + PREFIX_HOBBY + \"HOBBY] \"","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" + PREFIX_FOOD_PREFERENCE + \"Laksa \"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" + PREFIX_FAMILY_CONDITION + \"Sister moved to Indonesia\";","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_EDIT_PATIENT_SUCCESS \u003d \"Edited Patient: %1$s\";","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public static final String MESSAGE_DUPLICATE_PATIENT \u003d \"This patient already exists in the address book.\";","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" private final EditPatientDescriptor editPatientDescriptor;","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" * @param index of the patient in the filtered patient list to edit","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" * @param editPatientDescriptor details to edit the patient with","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" public EditCommand(Index index, EditPatientDescriptor editPatientDescriptor) {","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" requireNonNull(editPatientDescriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" this.editPatientDescriptor \u003d new EditPatientDescriptor(editPatientDescriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" List\u003cPatient\u003e lastShownList \u003d model.getFilteredPatientList();","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" Patient patientToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-08"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" Patient editedPatient \u003d createEditedPatient(patientToEdit, editPatientDescriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" if (!patientToEdit.isSamePatient(editedPatient) \u0026\u0026 model.hasPatient(editedPatient)) {","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PATIENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" model.setPatient(patientToEdit, editedPatient);","lastModifiedDate":"2024-03-09"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" model.updateFilteredPatientList(PREDICATE_SHOW_ALL_PATIENTS);","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PATIENT_SUCCESS, Messages.format(editedPatient)));","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" * Creates and returns a {@code Patient} with the details of {@code patientToEdit}","lastModifiedDate":"2024-03-08"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" * edited with {@code editPatientDescriptor}.","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" static Patient createEditedPatient(Patient patientToEdit, EditPatientDescriptor editPatientDescriptor) {","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" assert patientToEdit !\u003d null;","lastModifiedDate":"2024-03-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":101,"author":{"gitId":"choowengyan"},"content":" PatientHospitalId originalPatientHospitalId \u003d editPatientDescriptor.getPatientHospitalId()","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"choowengyan"},"content":" .orElse(patientToEdit.getPatientHospitalId());","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" Name updatedName \u003d editPatientDescriptor.getName().orElse(patientToEdit.getName());","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"choowengyan"},"content":" PreferredName updatedPreferredName \u003d editPatientDescriptor.getPreferredName()","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"choowengyan"},"content":" .orElse(patientToEdit.getPreferredName());","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"choowengyan"},"content":" FoodPreference updatedFoodPreference \u003d editPatientDescriptor.getFoodPreference()","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"choowengyan"},"content":" .orElse(patientToEdit.getFoodPreference());","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"choowengyan"},"content":" FamilyCondition updatedFamilyCondition \u003d editPatientDescriptor.getFamilyCondition()","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"choowengyan"},"content":" .orElse(patientToEdit.getFamilyCondition());","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"choowengyan"},"content":" Hobby updatedHobby \u003d editPatientDescriptor.getHobby().orElse(patientToEdit.getHobby());","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e updatedTags \u003d editPatientDescriptor.getTags().orElse(patientToEdit.getTags());","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cEvent\u003e updatedEvents \u003d editPatientDescriptor.getEvents()","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"SherisseTJW"},"content":" .orElse(patientToEdit.getEvents());","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":115,"author":{"gitId":"choowengyan"},"content":" return new Patient(originalPatientHospitalId, updatedName, updatedPreferredName, updatedFoodPreference,","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"SherisseTJW"},"content":" updatedFamilyCondition, updatedHobby, updatedTags, updatedEvents);","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"NeoHW"},"content":" \u0026\u0026 editPatientDescriptor.equals(otherEditCommand.editPatientDescriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" .add(\"editPatientDescriptor\", editPatientDescriptor)","lastModifiedDate":"2024-03-09"},{"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":"2016-12-26"}],"authorContributionMap":{"SherisseTJW":8,"choowengyan":27,"NeoHW":28,"-":79}},{"path":"src/main/java/seedu/address/logic/commands/EditEventCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.commands.EditCommand.createEditedPatient;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PATIENTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":" * Edits an event for a patient in the address book.","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":"public class EditEventCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":" public static final String COMMAND_WORD \u003d \"edite\";","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":" + \": Edits an event for a specific patient using the patient index\"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":" + \" in the patient list and event index.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":" + \"Parameters: INDEX (must be a positive integer matching that of the Patient in the `list` command)\"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":" + \" e/ [Index of the updated Event]\"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":" + \" n/ [Name of the updated Event]\"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":" + \" d/ [Updated Date / Datetime, in the format DD-MM-YYYY\"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":" + \" / DD-MM-YYYY, HH:mm - HH:mm respectively]\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":" + \"Example: \"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":" + PREFIX_EVENT + \" 1\"","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":" + PREFIX_NAME + \" Updated Event \"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":" + PREFIX_DATETIME + \" 12-10-2024\";","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"guohuang88"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Event %1$s with ID %2$s on %3$s successfully updated \"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"guohuang88"},"content":" + \"for Patient %4$s with ID %5$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"guohuang88"},"content":" public static final String MESSAGE_DUPLICATE \u003d \"Event %1$s on %2$s already exists for Patient %3$s with ID %4$s \"","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"guohuang88"},"content":" + \"so only one entry is kept.\";","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"guohuang88"},"content":" private final Index patientIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"guohuang88"},"content":" private final Index eventIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"guohuang88"},"content":" private final Event eventToUpdate;","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"guohuang88"},"content":" private final EditPatientDescriptor editPatientDescriptor;","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"guohuang88"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":" * Constructs an EditEventCommand to edit the specified {@code eventToUpdate}","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"guohuang88"},"content":" * for {@code eventIndex} to the Patient with id {@code patientIndex}","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"guohuang88"},"content":" * @param patientIndex The id of the patient.","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"guohuang88"},"content":" * @param eventIndex The id of the event.","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"guohuang88"},"content":" * @param eventToUpdate The updated event.","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"guohuang88"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"guohuang88"},"content":" public EditEventCommand(Index patientIndex, Index eventIndex, Event eventToUpdate) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"guohuang88"},"content":" requireAllNonNull(patientIndex, eventIndex, eventToUpdate);","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"guohuang88"},"content":" this.patientIndex \u003d patientIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"guohuang88"},"content":" this.eventIndex \u003d eventIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"guohuang88"},"content":" this.eventToUpdate \u003d eventToUpdate;","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"guohuang88"},"content":" this.editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"guohuang88"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"guohuang88"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"guohuang88"},"content":" List\u003cPatient\u003e lastShownList \u003d model.getFilteredPatientList();","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"guohuang88"},"content":" if (patientIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"guohuang88"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"guohuang88"},"content":" Patient patientToEditEvent \u003d lastShownList.get(patientIndex.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"guohuang88"},"content":" Set\u003cEvent\u003e events \u003d patientToEditEvent.getEvents();","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"guohuang88"},"content":" if (eventIndex.getZeroBased() \u003e\u003d events.size()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"guohuang88"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_EVENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"guohuang88"},"content":" List\u003cEvent\u003e eventList \u003d new ArrayList\u003c\u003e(events);","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"SherisseTJW"},"content":" Collections.sort(eventList);","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"guohuang88"},"content":" eventList.set(eventIndex.getZeroBased(), eventToUpdate);","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"guohuang88"},"content":" Set\u003cEvent\u003e updatedEvents \u003d new HashSet\u003c\u003e(eventList);","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"guohuang88"},"content":" editPatientDescriptor.setEvents(updatedEvents);","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"guohuang88"},"content":" Patient updatedPatient \u003d createEditedPatient(patientToEditEvent, editPatientDescriptor);","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"guohuang88"},"content":" model.setPatient(patientToEditEvent, updatedPatient);","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"guohuang88"},"content":" model.updateFilteredPatientList(PREDICATE_SHOW_ALL_PATIENTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"guohuang88"},"content":" if (events.contains(eventToUpdate)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"guohuang88"},"content":" return new CommandResult(String.format(MESSAGE_DUPLICATE, eventToUpdate.name, eventToUpdate.date,","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"guohuang88"},"content":" updatedPatient.getName(), patientIndex.getOneBased()));","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"guohuang88"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, eventToUpdate.name, eventIndex.getOneBased(),","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"guohuang88"},"content":" eventToUpdate.date, updatedPatient.getName(), patientIndex.getOneBased()));","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"guohuang88"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"guohuang88"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"guohuang88"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"guohuang88"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"guohuang88"},"content":" if (!(other instanceof EditEventCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"guohuang88"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"guohuang88"},"content":" EditEventCommand otherEditEventCommand \u003d (EditEventCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"guohuang88"},"content":" return patientIndex.equals(otherEditEventCommand.patientIndex)","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"guohuang88"},"content":" \u0026\u0026 eventIndex.equals(otherEditEventCommand.eventIndex)","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"guohuang88"},"content":" \u0026\u0026 eventToUpdate.equals(otherEditEventCommand.eventToUpdate);","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"guohuang88"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"guohuang88"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"guohuang88"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"guohuang88"},"content":" .add(\"patientIndex\", patientIndex)","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"guohuang88"},"content":" .add(\"eventIndex\", eventIndex)","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"guohuang88"},"content":" .add(\"eventToUpdate\", eventToUpdate)","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"guohuang88"},"content":" .toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"guohuang88"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"guohuang88":126,"SherisseTJW":3}},{"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":"NeoHW"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" * Finds and lists all patients in address book whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all patients whose names contain any of \"","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" model.updateFilteredPatientList(predicate);","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" String.format(Messages.MESSAGE_PATIENT_LISTED_OVERVIEW, model.getFilteredPatientList().size()));","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":5,"-":53}},{"path":"src/main/java/seedu/address/logic/commands/FindTagsCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"guohuang88"},"content":" * Finds and lists all patients in patient list whose tag contains any of the argument keywords.","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":"public class FindTagsCommand extends Command {","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":" public static final String COMMAND_WORD \u003d \"findt\";","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":" + \": Finds all patient whose tag contains any of the specified keywords (case-insensitive)\"","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":" + \" and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":" + \"Parameter: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":" + \"Example: \" + COMMAND_WORD","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":" + \" diabetes wheelchair\";","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":" private final TagContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":" public FindTagsCommand(TagContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":" model.updateFilteredPatientList(predicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":" String.format(Messages.MESSAGE_PATIENT_LISTED_OVERVIEW, model.getFilteredPatientList().size()));","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":" return true;","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"guohuang88"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"guohuang88"},"content":" if (!(other instanceof FindTagsCommand)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"guohuang88"},"content":" return false;","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"guohuang88"},"content":" FindTagsCommand otherFindTagsCommand \u003d (FindTagsCommand) other;","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"guohuang88"},"content":" return predicate.equals(otherFindTagsCommand.predicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"guohuang88"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":" public String toString() {","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"guohuang88"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"guohuang88"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"guohuang88"},"content":" .toString();","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"guohuang88"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"guohuang88":61}},{"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":"NeoHW"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PATIENTS;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Lists all patients in the address book to the user.","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all patients\";","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" model.updateFilteredPatientList(PREDICATE_SHOW_ALL_PATIENTS);","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":4,"-":20}},{"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":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FAMILY_CONDITION;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FOOD_PREFERENCE;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOBBY;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PID;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PREFERRED_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"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":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_PID, PREFIX_NAME, PREFIX_PREFERRED_NAME, PREFIX_FOOD_PREFERENCE,","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" PREFIX_FAMILY_CONDITION, PREFIX_HOBBY, PREFIX_TAG);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_PID, PREFIX_NAME, PREFIX_PREFERRED_NAME, PREFIX_FOOD_PREFERENCE,","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" PREFIX_FAMILY_CONDITION, PREFIX_HOBBY) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-18"},{"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":"choowengyan"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_PID, PREFIX_NAME, PREFIX_PREFERRED_NAME, PREFIX_FOOD_PREFERENCE,","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" PREFIX_FAMILY_CONDITION, PREFIX_HOBBY);","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" PatientHospitalId patientHospitalId \u003d ParserUtil.parsePatientHospitalId(argMultimap.getValue(PREFIX_PID).get());","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" PreferredName preferredName \u003d ParserUtil.parsePreferredName(argMultimap.getValue(PREFIX_PREFERRED_NAME).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" FoodPreference foodPreference \u003d ParserUtil.parseFoodPreference(argMultimap","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" .getValue(PREFIX_FOOD_PREFERENCE).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" FamilyCondition familyCondition \u003d ParserUtil.parseFamilyCondition(argMultimap","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" .getValue(PREFIX_FAMILY_CONDITION).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" Hobby hobby \u003d ParserUtil.parseHobby(argMultimap.getValue(PREFIX_HOBBY).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":"choowengyan"},"content":" Patient patient \u003d new Patient(patientHospitalId, name, preferredName, foodPreference, familyCondition, hobby,","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" tagList);","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" return new AddCommand(patient);","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"choowengyan":25,"NeoHW":3,"-":44}},{"path":"src/main/java/seedu/address/logic/parser/AddEventParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SherisseTJW"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.parser.ParserUtil.arePrefixesPresent;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.commands.AddEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":" * Parses the user\u0027s input arguments and creates a new AddEvent Command","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":"public class AddEventParser implements Parser\u003cAddEventCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"SherisseTJW"},"content":" public AddEventCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"SherisseTJW"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_DATETIME);","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_DATETIME) || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":" Index index;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":" } catch (IllegalValueException e) {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand.MESSAGE_USAGE), e);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":" Event event \u003d ParserUtil.parseEvent(argMultimap.getValue(PREFIX_NAME).get(),","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":" argMultimap.getValue(PREFIX_DATETIME).get());","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":" return new AddEventCommand(index, event);","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"SherisseTJW":45}},{"path":"src/main/java/seedu/address/logic/parser/AddTagsCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-10"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-10"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-10"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-10"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.parser.ParserUtil.arePrefixesPresent;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import java.util.logging.Level;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-10"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-10"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.AddTagsCommand;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-10"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-10"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-03-10"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" * Parses input arguments and creates a new AddTagsCommand object","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"public class AddTagsCommandParser implements Parser\u003cAddTagsCommand\u003e {","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddTagsCommandParser.class);","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-10"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * Parses the given {@code String} of arguments in the context of the AddTagsCommand","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * and returns an AddTagsCommand object for execution.","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-10"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-10"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" public AddTagsCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-10"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.INFO, \"Parsing AddTagsCommand: \" + args);","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_TAG);","lastModifiedDate":"2024-03-10"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_TAG) || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.WARNING, \"Invalid command format for AddTagsCommand: \" + args);","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" Index index;","lastModifiedDate":"2024-03-10"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-03-10"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-10"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-10"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" logger.warning(\"Index is not a non-zero unsigned integer in AddTagsCommand: \" + args);","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTagsCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagList;","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.WARNING, \"Invalid tags provided in AddTagsCommand: \" + args);","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" throw new ParseException(pe.getMessage(), pe);","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.INFO, \"Successfully parsed AddTagsCommand with index \" + index + \" and tags \" + tagList);","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" return new AddTagsCommand(index, tagList);","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-10"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-10"}],"authorContributionMap":{"NeoHW":63}},{"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":"SherisseTJW"},"content":"import seedu.address.logic.commands.AddEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.AddTagsCommand;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.commands.DeleteEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.DeleteTagsCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.commands.EditEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.commands.FindTagsCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":71,"author":{"gitId":"SherisseTJW"},"content":" case AddEventCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":" return new AddEventParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"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":"NeoHW"},"content":" case AddTagsCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" return new AddTagsCommandParser().parse(arguments);","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-10"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" case DeleteTagsCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" return new DeleteTagsCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"guohuang88"},"content":" case FindTagsCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"guohuang88"},"content":" return new FindTagsCommandParser().parse(arguments);","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" case DeleteEventCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"SherisseTJW"},"content":" return new DeleteEventCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"guohuang88"},"content":" case EditEventCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"guohuang88"},"content":" return new EditEventCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"guohuang88":8,"SherisseTJW":7,"ZhiWei1010":1,"NeoHW":8,"-":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":"choowengyan"},"content":" public static final Prefix PREFIX_PID \u003d new Prefix(\"id/\");","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":" public static final Prefix PREFIX_PREFERRED_NAME \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":" public static final Prefix PREFIX_FOOD_PREFERENCE \u003d new Prefix(\"f/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":" public static final Prefix PREFIX_FAMILY_CONDITION \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":" public static final Prefix PREFIX_HOBBY \u003d new Prefix(\"h/\");","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":" public static final Prefix PREFIX_DATETIME \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":" public static final Prefix PREFIX_EVENT \u003d new Prefix(\"e/\");","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"SherisseTJW":2,"choowengyan":5,"-":12}},{"path":"src/main/java/seedu/address/logic/parser/DeleteEventCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.logic.parser.ParserUtil.arePrefixesPresent;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.logging.Level;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.commands.DeleteEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":" * Parses the user\u0027s input arguments and creates a new DeleteEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":"public class DeleteEventCommandParser implements Parser\u003cDeleteEventCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(DeleteEventCommandParser.class);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":" public DeleteEventCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_EVENT);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_EVENT) || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":" Index patientIndex;","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":" Index eventIndex;","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":" patientIndex \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":" logger.log(Level.INFO, \"patient index: \" + patientIndex);","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":" if (argMultimap.getValue(PREFIX_EVENT).isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":" eventIndex \u003d ParserUtil.parseIndex(argMultimap.getValue(PREFIX_EVENT).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":" logger.log(Level.INFO, \"Event index: \" + eventIndex);","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":" } else {","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" return new DeleteEventCommand(patientIndex, null);","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":" return new DeleteEventCommand(patientIndex, eventIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteEventCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"SherisseTJW":14,"ZhiWei1010":38}},{"path":"src/main/java/seedu/address/logic/parser/DeleteTagsCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.parser.ParserUtil.arePrefixesPresent;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import java.util.logging.Level;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.AddTagsCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.DeleteTagsCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" * Parses the user\u0027s input arguments and creates a new DeleteTagsCommand object","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"public class DeleteTagsCommandParser implements Parser\u003cDeleteTagsCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(DeleteTagsCommandParser.class);","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteTagsCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" * and returns an DeleteTagsCommand object for execution.","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" public DeleteTagsCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.INFO, \"Parsing DeleteTagsCommand: \" + args);","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_TAG);","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_TAG) || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.WARNING, \"Invalid command format for DeleteTagsCommand: \" + args);","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" Index index;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.WARNING, \"Index is not a non-zero unsigned integer in DeleteTagsCommand: \" + args);","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTagsCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagList;","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.WARNING, \"Invalid tags provided in DeleteTagsCommand: \" + args);","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" throw new ParseException(pe.getMessage(), pe);","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" logger.log(Level.INFO, \"Successfully parsed DeleteTagsCommand with index \" + index + \" and tags \" + tagList);","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" return new DeleteTagsCommand(index, tagList);","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"NeoHW":63}},{"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":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FAMILY_CONDITION;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FOOD_PREFERENCE;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOBBY;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PID;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PREFERRED_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_PID, PREFIX_NAME, PREFIX_PREFERRED_NAME, PREFIX_FOOD_PREFERENCE,","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" PREFIX_FAMILY_CONDITION, PREFIX_HOBBY, PREFIX_TAG);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" EditPatientDescriptor editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" if (argMultimap.getValue(PREFIX_PID).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" editPatientDescriptor.setPatientHospitalId(ParserUtil.parsePatientHospitalId(","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" argMultimap.getValue(PREFIX_PID).get()));","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" editPatientDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" if (argMultimap.getValue(PREFIX_PREFERRED_NAME).isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" editPatientDescriptor.setPreferredName(ParserUtil.parsePreferredName(","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" argMultimap.getValue(PREFIX_PREFERRED_NAME).get()));","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":" if (argMultimap.getValue(PREFIX_FOOD_PREFERENCE).isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":" editPatientDescriptor.setFoodPreference(ParserUtil.parseFoodPreference(","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" argMultimap.getValue(PREFIX_FOOD_PREFERENCE).get()));","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" if (argMultimap.getValue(PREFIX_FAMILY_CONDITION).isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" editPatientDescriptor.setFamilyCondition(ParserUtil.parseFamilyCondition(","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":" argMultimap.getValue(PREFIX_FAMILY_CONDITION).get()));","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":" if (argMultimap.getValue(PREFIX_HOBBY).isPresent()) {","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":" editPatientDescriptor.setHobby(ParserUtil.parseHobby(","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":" argMultimap.getValue(PREFIX_HOBBY).get()));","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPatientDescriptor::setTags);","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" if (!editPatientDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" return new EditCommand(index, editPatientDescriptor);","lastModifiedDate":"2024-03-09"},{"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":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"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":{"choowengyan":23,"NeoHW":6,"-":68}},{"path":"src/main/java/seedu/address/logic/parser/EditEventCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.ParserUtil.arePrefixesPresent;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"guohuang88"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.commands.EditEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":" * Parses the user\u0027s input arguments and creates a new EditEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":"public class EditEventCommandParser implements Parser\u003cEditEventCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":" * Returns a new EditEventCommand instance.","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":" * @param args User\u0027s input.","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":" * @return A new EditEventCommand.","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":" public EditEventCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_EVENT,","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":" PREFIX_NAME, PREFIX_DATETIME);","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_EVENT, PREFIX_NAME, PREFIX_DATETIME)","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":" || argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":" EditEventCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":" Index patientIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":" Index eventIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":" Event event;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":" patientIndex \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":" eventIndex \u003d ParserUtil.parseIndex(argMultimap.getValue(PREFIX_EVENT).get());","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"guohuang88"},"content":" } catch (IllegalValueException e) {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"guohuang88"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"guohuang88"},"content":" EditEventCommand.MESSAGE_USAGE), e);","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"guohuang88"},"content":" event \u003d ParserUtil.parseEvent(argMultimap.getValue(PREFIX_NAME).get(),","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"guohuang88"},"content":" argMultimap.getValue(PREFIX_DATETIME).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"guohuang88"},"content":" return new EditEventCommand(patientIndex, eventIndex, event);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"guohuang88"},"content":"}","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"guohuang88":56}},{"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":"NeoHW"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-08"},{"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":{"NeoHW":1,"-":32}},{"path":"src/main/java/seedu/address/logic/parser/FindTagsCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.commands.FindTagsCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":" * Parses input arguments and creates a new FindTagsCommand object","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":"public class FindTagsCommandParser implements Parser\u003cFindTagsCommand\u003e {","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":" * Parses the given {@code String} of arguments in the context of the FindTagsCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":" * and returns a FindTagsCommand object for execution.","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":" public FindTagsCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTagsCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":" String[] tagKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":" return new FindTagsCommand(new TagContainsKeywordsPredicate(Arrays.asList(tagKeywords)));","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"guohuang88":35}},{"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":"SherisseTJW"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-12"},{"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":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" * Parses a {@code String patientHospitalId} into a {@code PatientHospitalId}.","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" * @throws ParseException if the given {@code patientHospitalId} is invalid.","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" public static PatientHospitalId parsePatientHospitalId(String patientHospitalId) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" requireNonNull(patientHospitalId);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" String trimmedId \u003d patientHospitalId.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" if (!PatientHospitalId.isValidPatientHospitalId(trimmedId)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" throw new ParseException(PatientHospitalId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" return new PatientHospitalId(trimmedId);","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":" * Parses a {@code String preferredName} into a {@code PreferredName}.","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"choowengyan"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"choowengyan"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"choowengyan"},"content":" * @throws ParseException if the given {@code preferredName} is invalid.","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"choowengyan"},"content":" public static PreferredName parsePreferredName(String preferredName) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"choowengyan"},"content":" requireNonNull(preferredName);","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"choowengyan"},"content":" String trimmedPreferredName \u003d preferredName.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"choowengyan"},"content":" if (!PreferredName.isValidPreferredName(trimmedPreferredName)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"choowengyan"},"content":" throw new ParseException(PreferredName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"choowengyan"},"content":" return new PreferredName(trimmedPreferredName);","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"choowengyan"},"content":" * Parses a {@code String food} into a {@code FoodPreference}.","lastModifiedDate":"2024-03-12"},{"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":"choowengyan"},"content":" * @throws ParseException if the given {@code food} is invalid.","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"choowengyan"},"content":" public static FoodPreference parseFoodPreference(String food) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"choowengyan"},"content":" requireNonNull(food);","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"choowengyan"},"content":" String trimmedFood \u003d food.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"choowengyan"},"content":" if (!FoodPreference.isValidFoodPreference(trimmedFood)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"choowengyan"},"content":" throw new ParseException(FoodPreference.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"choowengyan"},"content":" return new FoodPreference(trimmedFood);","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"choowengyan"},"content":" * Parses a {@code String condition} into an {@code FamilyCondition}.","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"choowengyan"},"content":" * @throws ParseException if the given {@code condition} is invalid.","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":111,"author":{"gitId":"choowengyan"},"content":" public static FamilyCondition parseFamilyCondition(String condition) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"choowengyan"},"content":" requireNonNull(condition);","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"choowengyan"},"content":" String trimmedFamilyCondition \u003d condition.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"choowengyan"},"content":" if (!FamilyCondition.isValidFamilyCondition(trimmedFamilyCondition)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"choowengyan"},"content":" throw new ParseException(FamilyCondition.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":117,"author":{"gitId":"choowengyan"},"content":" return new FamilyCondition(trimmedFamilyCondition);","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":121,"author":{"gitId":"choowengyan"},"content":" * Parses a {@code String hobby} into an {@code Hobby}.","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":123,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":124,"author":{"gitId":"choowengyan"},"content":" * @throws ParseException if the given {@code hobby} is invalid.","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":126,"author":{"gitId":"choowengyan"},"content":" public static Hobby parseHobby(String hobby) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"choowengyan"},"content":" requireNonNull(hobby);","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"choowengyan"},"content":" String trimmedEmail \u003d hobby.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"choowengyan"},"content":" if (!Hobby.isValidHobby(trimmedEmail)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"choowengyan"},"content":" throw new ParseException(Hobby.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":132,"author":{"gitId":"choowengyan"},"content":" return new Hobby(trimmedEmail);","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":138,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":142,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" String parsedTag \u003d removeExtraSpaces(tag.trim().toLowerCase());","lastModifiedDate":"2024-03-22"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":" if (!Tag.isValidTagName(parsedTag)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":" if (!Tag.isValidTagLength(parsedTag)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":" throw new ParseException(Tag.MESSAGE_LENGTH_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":150,"author":{"gitId":"NeoHW"},"content":" return new Tag(parsedTag);","lastModifiedDate":"2024-03-22"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":157,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":158,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":159,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":160,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":164,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":165,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":166,"author":{"gitId":"NeoHW"},"content":" * Removes extra spaces between words.","lastModifiedDate":"2024-03-22"},{"lineNumber":167,"author":{"gitId":"NeoHW"},"content":" *","lastModifiedDate":"2024-03-22"},{"lineNumber":168,"author":{"gitId":"NeoHW"},"content":" * @param toBeProcessed The string to be processed.","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"NeoHW"},"content":" * @return The string with extra spaces removed.","lastModifiedDate":"2024-03-22"},{"lineNumber":170,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":171,"author":{"gitId":"NeoHW"},"content":" public static String removeExtraSpaces(String toBeProcessed) {","lastModifiedDate":"2024-03-22"},{"lineNumber":172,"author":{"gitId":"NeoHW"},"content":" return Arrays.stream(toBeProcessed.split(\"\\\\s+\"))","lastModifiedDate":"2024-03-22"},{"lineNumber":173,"author":{"gitId":"NeoHW"},"content":" .filter(word -\u003e !word.isEmpty())","lastModifiedDate":"2024-03-22"},{"lineNumber":174,"author":{"gitId":"NeoHW"},"content":" .collect(Collectors.joining(\" \"));","lastModifiedDate":"2024-03-22"},{"lineNumber":175,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":176,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":177,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"SherisseTJW"},"content":" * Parses a {@param String event} into a {@code Event}.","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"SherisseTJW"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"SherisseTJW"},"content":" * @throws ParseException if the given {@code event} is invalid.","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"SherisseTJW"},"content":" public static Event parseEvent(String name, String event) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":184,"author":{"gitId":"SherisseTJW"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"SherisseTJW"},"content":" String trimmedEventDateTimeStr \u003d event.trim();","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"SherisseTJW"},"content":" requireAllNonNull(name, event);","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"SherisseTJW"},"content":" if (!Event.isValidEvent(trimmedEventDateTimeStr)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":189,"author":{"gitId":"SherisseTJW"},"content":" throw new ParseException(Event.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"SherisseTJW"},"content":" return new Event(trimmedName, trimmedEventDateTimeStr);","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":194,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":195,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":196,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":197,"author":{"gitId":"SherisseTJW"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"SherisseTJW"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-13"},{"lineNumber":199,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":200,"author":{"gitId":"SherisseTJW"},"content":" public static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-13"},{"lineNumber":201,"author":{"gitId":"SherisseTJW"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-13"},{"lineNumber":202,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"SherisseTJW":28,"ZhiWei1010":1,"choowengyan":59,"NeoHW":22,"-":93}},{"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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.UniquePatientList;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * Duplicates are not allowed (by .isSamePatient comparison)","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" private final UniquePatientList patients;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" patients \u003d new UniquePatientList();","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Creates an AddressBook using the Patients in the {@code toBeCopied}","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Replaces the contents of the patient list with {@code patients}.","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" * {@code patients} must not contain duplicate patients.","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" public void setPatients(List\u003cPatient\u003e patients) {","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" this.patients.setPatients(patients);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" setPatients(newData.getPatientList());","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" //// patient-level operations","lastModifiedDate":"2024-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" * Returns true if a patient with the same identity as {@code patient} exists in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" public boolean hasPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" return patients.contains(patient);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Adds a patient to the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" * The patient must not already exist in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" public void addPatient(Patient p) {","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" patients.add(p);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Replaces the given patient {@code target} in the list with {@code editedPatient}.","lastModifiedDate":"2024-03-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" * The patient identity of {@code editedPatient} must not be the","lastModifiedDate":"2024-03-08"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" * same as another existing patient in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" public void setPatient(Patient target, Patient editedPatient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" requireNonNull(editedPatient);","lastModifiedDate":"2024-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" patients.setPatient(target, editedPatient);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void removePatient(Patient key) {","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" patients.remove(key);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" .add(\"patients\", patients)","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public ObservableList\u003cPatient\u003e getPatientList() {","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" return patients.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-09"},{"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":"-"},"content":" if (!(other instanceof AddressBook)) {","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":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" return patients.equals(otherAddressBook.patients);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" return patients.hashCode();","lastModifiedDate":"2024-03-09"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"NeoHW":33,"-":98}},{"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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" Predicate\u003cPatient\u003e PREDICATE_SHOW_ALL_PATIENTS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Returns true if a patient with the same identity as {@code patient} exists in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" boolean hasPatient(Patient patient);","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" * Deletes the given patient.","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" * The patient must exist in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" void deletePatient(Patient target);","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" * Adds the given patient.","lastModifiedDate":"2024-03-08"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" * {@code patient} must not already exist in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" void addPatient(Patient patient);","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" * Replaces the given patient {@code target} with {@code editedPatient}.","lastModifiedDate":"2024-03-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" * The patient identity of {@code editedPatient} must not be the same as","lastModifiedDate":"2024-03-08"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" * another existing patient in the address book.","lastModifiedDate":"2024-03-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" void setPatient(Patient target, Patient editedPatient);","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" /** Returns an unmodifiable view of the filtered patient list */","lastModifiedDate":"2024-03-08"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" ObservableList\u003cPatient\u003e getFilteredPatientList();","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" * Updates the filter of the filtered patient list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" void updateFilteredPatientList(Predicate\u003cPatient\u003e predicate);","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"ZhiWei1010":1,"NeoHW":18,"-":70}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" private final FilteredList\u003cPatient\u003e filteredPatients;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" filteredPatients \u003d new FilteredList\u003c\u003e(this.addressBook.getPatientList());","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public boolean hasPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-08"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" return addressBook.hasPatient(patient);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void deletePatient(Patient target) {","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" addressBook.removePatient(target);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void addPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" addressBook.addPatient(patient);","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" updateFilteredPatientList(PREDICATE_SHOW_ALL_PATIENTS);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void setPatient(Patient target, Patient editedPatient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" requireAllNonNull(target, editedPatient);","lastModifiedDate":"2024-03-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" addressBook.setPatient(target, editedPatient);","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Patient 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-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":" * Returns an unmodifiable view of the list of {@code Patient} backed by the internal list of","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public ObservableList\u003cPatient\u003e getFilteredPatientList() {","lastModifiedDate":"2024-03-09"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":" return filteredPatients;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void updateFilteredPatientList(Predicate\u003cPatient\u003e predicate) {","lastModifiedDate":"2024-03-09"},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":" filteredPatients.setPredicate(predicate);","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" \u0026\u0026 filteredPatients.equals(otherModelManager.filteredPatients);","lastModifiedDate":"2024-03-08"},{"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":{"NeoHW":21,"-":127}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * Returns an unmodifiable view of the patients list.","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" * This list will not contain any duplicate patients.","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" ObservableList\u003cPatient\u003e getPatientList();","lastModifiedDate":"2024-03-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"NeoHW":4,"-":13}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"patientsync.json\");","lastModifiedDate":"2024-03-21"},{"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":{"ZhiWei1010":1,"-":87}},{"path":"src/main/java/seedu/address/model/patient/EditPatientDescriptor.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SherisseTJW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"SherisseTJW"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":" * Stores the details to edit the patient with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":" * corresponding field value of the patient.","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":"public class EditPatientDescriptor {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" private PatientHospitalId patientHospitalId;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":" private Name name;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":" private PreferredName preferredName;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":" private FoodPreference foodPreference;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":" private FamilyCondition familyCondition;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" private Hobby hobby;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"SherisseTJW"},"content":" private Set\u003cEvent\u003e events;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":" public EditPatientDescriptor() {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":" public EditPatientDescriptor(EditPatientDescriptor toCopy) {","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" setPatientHospitalId(toCopy.patientHospitalId);","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":" setName(toCopy.name);","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" setPreferredName(toCopy.preferredName);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" setFoodPreference(toCopy.foodPreference);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" setFamilyCondition(toCopy.familyCondition);","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" setHobby(toCopy.hobby);","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":" setEvents(toCopy.events);","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" return CollectionUtil.isAnyNonNull(patientHospitalId, name, preferredName, foodPreference, familyCondition,","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":" hobby, tags, events);","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" public void setPatientHospitalId(PatientHospitalId id) {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" this.patientHospitalId \u003d id;","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" public Optional\u003cPatientHospitalId\u003e getPatientHospitalId() {","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" return Optional.ofNullable(patientHospitalId);","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"SherisseTJW"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"SherisseTJW"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"SherisseTJW"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"SherisseTJW"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":" public void setPreferredName(PreferredName preferredName) {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":" this.preferredName \u003d preferredName;","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"choowengyan"},"content":" public Optional\u003cPreferredName\u003e getPreferredName() {","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"choowengyan"},"content":" return Optional.ofNullable(preferredName);","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"choowengyan"},"content":" public void setFoodPreference(FoodPreference foodPreference) {","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"choowengyan"},"content":" this.foodPreference \u003d foodPreference;","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"choowengyan"},"content":" public Optional\u003cFoodPreference\u003e getFoodPreference() {","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"choowengyan"},"content":" return Optional.ofNullable(foodPreference);","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"choowengyan"},"content":" public void setFamilyCondition(FamilyCondition familyCondition) {","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"choowengyan"},"content":" this.familyCondition \u003d familyCondition;","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"choowengyan"},"content":" public Optional\u003cFamilyCondition\u003e getFamilyCondition() {","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"choowengyan"},"content":" return Optional.ofNullable(familyCondition);","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"choowengyan"},"content":" public void setHobby(Hobby hobby) {","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"choowengyan"},"content":" this.hobby \u003d hobby;","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"choowengyan"},"content":" public Optional\u003cHobby\u003e getHobby() {","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"choowengyan"},"content":" return Optional.ofNullable(hobby);","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"SherisseTJW"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"SherisseTJW"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"SherisseTJW"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"SherisseTJW"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"SherisseTJW"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"SherisseTJW"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"SherisseTJW"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"SherisseTJW"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"SherisseTJW"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"SherisseTJW"},"content":" public Optional\u003cSet\u003cEvent\u003e\u003e getEvents() {","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"SherisseTJW"},"content":" return events !\u003d null ? Optional.of(Collections.unmodifiableSet(events)) : Optional.empty();","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"SherisseTJW"},"content":" public void setEvents(Set\u003cEvent\u003e events) {","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"SherisseTJW"},"content":" this.events \u003d events !\u003d null ? new HashSet\u003c\u003e(events) : null;","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"SherisseTJW"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"SherisseTJW"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"SherisseTJW"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"SherisseTJW"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"SherisseTJW"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"SherisseTJW"},"content":" if (!(other instanceof EditPatientDescriptor)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"SherisseTJW"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"SherisseTJW"},"content":" EditPatientDescriptor otherEditPatientDescriptor \u003d (EditPatientDescriptor) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"choowengyan"},"content":" return Objects.equals(patientHospitalId, otherEditPatientDescriptor.patientHospitalId)","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 Objects.equals(name, otherEditPatientDescriptor.name)","lastModifiedDate":"2024-03-17"},{"lineNumber":141,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 Objects.equals(preferredName, otherEditPatientDescriptor.preferredName)","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 Objects.equals(foodPreference, otherEditPatientDescriptor.foodPreference)","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 Objects.equals(familyCondition, otherEditPatientDescriptor.familyCondition)","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 Objects.equals(hobby, otherEditPatientDescriptor.hobby)","lastModifiedDate":"2024-03-17"},{"lineNumber":145,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPatientDescriptor.tags)","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 Objects.equals(events, otherEditPatientDescriptor.events);","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"SherisseTJW"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"SherisseTJW"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"SherisseTJW"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"choowengyan"},"content":" .add(\"patientHospitalId\", patientHospitalId)","lastModifiedDate":"2024-03-17"},{"lineNumber":153,"author":{"gitId":"SherisseTJW"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"choowengyan"},"content":" .add(\"preferredName\", preferredName)","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"choowengyan"},"content":" .add(\"foodPreference\", foodPreference)","lastModifiedDate":"2024-03-17"},{"lineNumber":156,"author":{"gitId":"choowengyan"},"content":" .add(\"familyCondition\", familyCondition)","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"choowengyan"},"content":" .add(\"hobby\", hobby)","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"SherisseTJW"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"SherisseTJW"},"content":" .add(\"events\", events)","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"SherisseTJW"},"content":" .toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"SherisseTJW"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"SherisseTJW":112,"choowengyan":50}},{"path":"src/main/java/seedu/address/model/patient/Event.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SherisseTJW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"SherisseTJW"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"import java.time.LocalTime;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":" * Represents Events for a Patient","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":"public class Event implements Comparable\u003cEvent\u003e {","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":" \"Dates should be in the format: DD-MM-YYYY, HH:mm - HH:mm, OR if there is no time period,\"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":" + \"in the format: DD-MM-YYYY\";","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":" public static final String DATE_PATTERN \u003d \"dd-MM-yyyy\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":" public static final String TIME_PATTERN \u003d \"HH:mm\";","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"SherisseTJW"},"content":" /** The name of the Event */","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":" public final String name;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"SherisseTJW"},"content":" /** The Date of the Event */","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":" public final String date;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":" /** The Start Time of the Event, null if there is no specific start time */","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":" public final String startTime;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":" /** The End Time of the Event, null if there is no specific end time */","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" public final String endTime;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":" * Constructs a {@Code Event}","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" * @param event","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":" public Event(String name, String event) {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" event \u003d event.strip();","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":" requireNonNull(event);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":" checkArgument(isValidEvent(event), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":" String[] args \u003d extractDateTimeArgs(event);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" this.date \u003d args[0];","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":" this.startTime \u003d args[1];","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":" this.endTime \u003d args[2];","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"SherisseTJW"},"content":" * Returns true if the given string is a valid Date / Datetime String","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"SherisseTJW"},"content":" * @param test the given string","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"SherisseTJW"},"content":" * @return true if the {@param test} is valid,","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"SherisseTJW"},"content":" * false is the {@param test} is not valid","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"SherisseTJW"},"content":" public static boolean isValidEvent(String test) {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SherisseTJW"},"content":" String[] args \u003d test.split(\",\");","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"SherisseTJW"},"content":" try {","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"SherisseTJW"},"content":" LocalDate.parse(args[0].trim(), DateTimeFormatter.ofPattern(DATE_PATTERN));","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SherisseTJW"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SherisseTJW"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"SherisseTJW"},"content":" if (args.length \u003e 1) {","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"SherisseTJW"},"content":" return isValidDateTimeStr(args[1]);","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SherisseTJW"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"SherisseTJW"},"content":" * Returns true if the given string is a valid time String","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"SherisseTJW"},"content":" * @param timeStr the given string","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"SherisseTJW"},"content":" * @return true if the {@param timeStr} is valid,","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"SherisseTJW"},"content":" * false is the {@param timeStr} is not valid","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"SherisseTJW"},"content":" public static boolean isValidDateTimeStr(String timeStr) {","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"SherisseTJW"},"content":" String[] args \u003d timeStr.split(\"-\");","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"SherisseTJW"},"content":" try {","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"SherisseTJW"},"content":" LocalTime.parse(args[0].trim(), DateTimeFormatter.ofPattern(TIME_PATTERN)); // start time","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"SherisseTJW"},"content":" LocalTime.parse(args[1].trim(), DateTimeFormatter.ofPattern(TIME_PATTERN)); // end time","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"SherisseTJW"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"SherisseTJW"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"SherisseTJW"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" * Extracts the date and/or time arguments from the user input","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"SherisseTJW"},"content":" * @param userInput","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"SherisseTJW"},"content":" * @return a String[] of the arguments extracted","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"SherisseTJW"},"content":" public static String[] extractDateTimeArgs(String userInput) {","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"SherisseTJW"},"content":" String[] args \u003d userInput.split(\",\");","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"SherisseTJW"},"content":" args[0] \u003d args[0].strip();","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" String[] temp \u003d new String[2];","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"SherisseTJW"},"content":" if (args.length \u003e 1) {","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"SherisseTJW"},"content":" temp \u003d args[1].split(\"-\");","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"SherisseTJW"},"content":" temp[0] \u003d temp[0].strip();","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"SherisseTJW"},"content":" temp[1] \u003d temp[1].strip();","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"SherisseTJW"},"content":" } else {","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"SherisseTJW"},"content":" temp[0] \u003d null;","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"SherisseTJW"},"content":" temp[1] \u003d null;","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"SherisseTJW"},"content":" return new String[] {args[0], temp[0], temp[1]};","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"SherisseTJW"},"content":" @Override","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"SherisseTJW"},"content":" public int compareTo(Event other) {","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"SherisseTJW"},"content":" if (!this.date.equals(other.date)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"SherisseTJW"},"content":" return this.date.compareTo(other.date);","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"SherisseTJW"},"content":" if (this.startTime !\u003d null \u0026\u0026 other.startTime !\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"SherisseTJW"},"content":" // If both events have time information, sort by start time then end time","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"SherisseTJW"},"content":" if (!this.startTime.equals(other.startTime)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"SherisseTJW"},"content":" return this.startTime.compareTo(other.startTime);","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"SherisseTJW"},"content":" if (!this.endTime.equals(other.endTime)) {","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"SherisseTJW"},"content":" return this.endTime.compareTo(other.endTime);","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":136,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":137,"author":{"gitId":"SherisseTJW"},"content":" // If only 1 event has time information, that event should be sorted behind","lastModifiedDate":"2024-03-23"},{"lineNumber":138,"author":{"gitId":"SherisseTJW"},"content":" if (this.startTime !\u003d null \u0026\u0026 other.startTime \u003d\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":139,"author":{"gitId":"SherisseTJW"},"content":" return 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":140,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":141,"author":{"gitId":"SherisseTJW"},"content":" if (this.startTime \u003d\u003d null \u0026\u0026 other.startTime !\u003d null) {","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"SherisseTJW"},"content":" return -1;","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"SherisseTJW"},"content":" // If all date / datetime information is the same, sort by name","lastModifiedDate":"2024-03-23"},{"lineNumber":146,"author":{"gitId":"SherisseTJW"},"content":" return this.name.compareTo(other.name);","lastModifiedDate":"2024-03-23"},{"lineNumber":147,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":148,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"SherisseTJW"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"SherisseTJW"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"SherisseTJW"},"content":" // If there is a start time, there must be a end time","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"SherisseTJW"},"content":" if (this.startTime !\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"SherisseTJW"},"content":" return String.format(\"%s (%s, from %s to %s)\", this.name, this.date, this.startTime, this.endTime);","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"SherisseTJW"},"content":" return String.format(\"%s (%s)\", this.name, this.date);","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"SherisseTJW"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"SherisseTJW"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"SherisseTJW"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"SherisseTJW"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"SherisseTJW"},"content":" if (!(other instanceof Event)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"SherisseTJW"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"SherisseTJW"},"content":" Event otherEvent \u003d (Event) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"SherisseTJW"},"content":" if (this.startTime \u003d\u003d null) {","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"SherisseTJW"},"content":" return this.name.equals(otherEvent.name)","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 this.date.equals(otherEvent.date);","lastModifiedDate":"2024-03-18"},{"lineNumber":173,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"SherisseTJW"},"content":" return this.name.equals(otherEvent.name)","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 this.date.equals(otherEvent.date)","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 this.startTime.equals(otherEvent.startTime)","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 this.endTime.equals(otherEvent.endTime);","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"SherisseTJW"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":182,"author":{"gitId":"SherisseTJW"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"SherisseTJW"},"content":" return date.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":184,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":185,"author":{"gitId":"SherisseTJW"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"SherisseTJW":185}},{"path":"src/main/java/seedu/address/model/patient/FamilyCondition.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"choowengyan"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"choowengyan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":" * Represents a Patient\u0027s family condition in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidFamilyCondition(String)}","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"public class FamilyCondition {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":" \"Family condition can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":" public final String familyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":" * Constructs a {@code FamilyCondition}.","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":" * @param condition A valid family condition.","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" public FamilyCondition(String condition) {","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":" requireNonNull(condition);","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" checkArgument(isValidFamilyCondition(condition), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":" familyCondition \u003d condition;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":" * Returns true if a given string is a valid family condition.","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" public static boolean isValidFamilyCondition(String test) {","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" return familyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" if (!(other instanceof FamilyCondition)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" FamilyCondition otherFamilyCondition \u003d (FamilyCondition) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" return familyCondition.equals(otherFamilyCondition.familyCondition);","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" return familyCondition.hashCode();","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"choowengyan":61}},{"path":"src/main/java/seedu/address/model/patient/FoodPreference.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":" * Represents a Patient\u0027s preferred food in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidFood(String)}","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"public class FoodPreference {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Food preferences can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-12"},{"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":"choowengyan"},"content":" public final String foodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" * Constructs an {@code FoodPreference}.","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" * @param food A valid food preference.","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" public FoodPreference(String food) {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" requireNonNull(food);","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" checkArgument(isValidFoodPreference(food), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":" foodPreference \u003d food;","lastModifiedDate":"2024-03-12"},{"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":"choowengyan"},"content":" * Returns true if a given string is a valid food details.","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" public static boolean isValidFoodPreference(String test) {","lastModifiedDate":"2024-03-18"},{"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":"choowengyan"},"content":" return foodPreference;","lastModifiedDate":"2024-03-12"},{"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":"choowengyan"},"content":" if (!(other instanceof FoodPreference)) {","lastModifiedDate":"2024-03-12"},{"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":"choowengyan"},"content":" FoodPreference otherFoodPreference \u003d (FoodPreference) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" return foodPreference.equals(otherFoodPreference.foodPreference);","lastModifiedDate":"2024-03-12"},{"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":"choowengyan"},"content":" return foodPreference.hashCode();","lastModifiedDate":"2024-03-12"},{"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":{"choowengyan":18,"NeoHW":1,"-":46}},{"path":"src/main/java/seedu/address/model/patient/Hobby.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":" * Represents a Patient\u0027s hobby in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidHobby(String)}","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"public class Hobby {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Hobby can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":" public final String hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" * Constructs a {@code Hobby}.","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":" * @param description A valid hobby.","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":" public Hobby(String description) {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" requireNonNull(description);","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":" checkArgument(isValidHobby(description), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" hobby \u003d description;","lastModifiedDate":"2024-03-12"},{"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":"choowengyan"},"content":" * Returns true if a given string is a valid hobby.","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" public static boolean isValidHobby(String test) {","lastModifiedDate":"2024-03-12"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" return hobby;","lastModifiedDate":"2024-03-12"},{"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 boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"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":"choowengyan"},"content":" if (!(other instanceof Hobby)) {","lastModifiedDate":"2024-03-12"},{"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":"choowengyan"},"content":" Hobby otherHobby \u003d (Hobby) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" return hobby.equals(otherHobby.hobby);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" return hobby.hashCode();","lastModifiedDate":"2024-03-12"},{"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"}],"authorContributionMap":{"choowengyan":19,"NeoHW":1,"-":40}},{"path":"src/main/java/seedu/address/model/patient/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * Represents a Patient\u0027s name in the address book.","lastModifiedDate":"2024-03-08"},{"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":{"NeoHW":2,"-":65}},{"path":"src/main/java/seedu/address/model/patient/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * Tests that a {@code Patient}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cPatient\u003e {","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public boolean test(Patient patient) {","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(patient.getName().fullName,","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" keyword));","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"guohuang88":1,"choowengyan":1,"NeoHW":4,"-":39}},{"path":"src/main/java/seedu/address/model/patient/Patient.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * Represents a Patient in the address book.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":"public class Patient {","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":" private final PatientHospitalId patientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":" private final PreferredName preferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" private final FoodPreference foodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":" private final FamilyCondition familyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" private final Hobby hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":" private final Set\u003cEvent\u003e events \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"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":"choowengyan"},"content":" public Patient(PatientHospitalId patientHospitalId, Name name, PreferredName preferredName,","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" FoodPreference foodPreference, FamilyCondition familyCondition, Hobby hobby,","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" requireAllNonNull(patientHospitalId, name, preferredName, foodPreference, familyCondition, hobby, tags);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" this.patientHospitalId \u003d patientHospitalId;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" this.preferredName \u003d preferredName;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" this.foodPreference \u003d foodPreference;","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" this.familyCondition \u003d familyCondition;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" this.hobby \u003d hobby;","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" * Constructs a Patient with {@param patientHospitalId},{@param name}, {@param preferredName},","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" * {@param foodPreference}, {@param familyCondition}, {@param hobby},{@param tags}, {@param events}","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" * @param patientHospitalId patient\u0027s hospital ID","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" * @param name patient\u0027s full name","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" * @param preferredName patient\u0027s preferred name","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" * @param foodPreference patient\u0027s preferred food","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" * @param familyCondition patient\u0027s family condition","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":" * @param hobby patient\u0027s hobby","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" * @param tags tag for patient","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"SherisseTJW"},"content":" * @param events","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":" public Patient(PatientHospitalId patientHospitalId, Name name, PreferredName preferredName,","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":" FoodPreference foodPreference, FamilyCondition familyCondition, Hobby hobby,","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cTag\u003e tags, Set\u003cEvent\u003e events) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" requireAllNonNull(patientHospitalId, name, preferredName, foodPreference, familyCondition, hobby, tags);","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"choowengyan"},"content":" this.patientHospitalId \u003d patientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" this.preferredName \u003d preferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":" this.foodPreference \u003d foodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":" this.familyCondition \u003d familyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":" this.hobby \u003d hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"SherisseTJW"},"content":" this.events.addAll(events);","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":74,"author":{"gitId":"choowengyan"},"content":" public PatientHospitalId getPatientHospitalId() {","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"choowengyan"},"content":" return patientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"choowengyan"},"content":" public PreferredName getPreferredName() {","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"choowengyan"},"content":" return preferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"choowengyan"},"content":" public FamilyCondition getFamilyCondition() {","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"choowengyan"},"content":" return familyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":90,"author":{"gitId":"choowengyan"},"content":" public FoodPreference getFoodPreference() {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"choowengyan"},"content":" return foodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"choowengyan"},"content":" public Hobby getHobby() {","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"choowengyan"},"content":" return hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":103,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":106,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" * Returns an immutable date set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"SherisseTJW"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"SherisseTJW"},"content":" public Set\u003cEvent\u003e getEvents() {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"SherisseTJW"},"content":" return Collections.unmodifiableSet(this.events);","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":115,"author":{"gitId":"choowengyan"},"content":" * Returns true if both patients have the same patientHospitalId.","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" * This defines a weaker notion of equality between two patients.","lastModifiedDate":"2024-03-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":" public boolean isSamePatient(Patient otherPatient) {","lastModifiedDate":"2024-03-08"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":" if (otherPatient \u003d\u003d this) {","lastModifiedDate":"2024-03-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":123,"author":{"gitId":"NeoHW"},"content":" return otherPatient !\u003d null","lastModifiedDate":"2024-03-08"},{"lineNumber":124,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 otherPatient.getPatientHospitalId().equals(getPatientHospitalId());","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":" * Returns true if both patients have the same identity and data fields.","lastModifiedDate":"2024-03-08"},{"lineNumber":129,"author":{"gitId":"NeoHW"},"content":" * This defines a stronger notion of equality between two patients.","lastModifiedDate":"2024-03-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":134,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":" if (!(other instanceof Patient)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":" Patient otherPatient \u003d (Patient) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":143,"author":{"gitId":"choowengyan"},"content":" return patientHospitalId.equals(otherPatient.patientHospitalId)","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 name.equals(otherPatient.name)","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 preferredName.equals(otherPatient.preferredName)","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 foodPreference.equals(otherPatient.foodPreference)","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 familyCondition.equals(otherPatient.familyCondition)","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"choowengyan"},"content":" \u0026\u0026 hobby.equals(otherPatient.hobby)","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 tags.equals(otherPatient.tags)","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"SherisseTJW"},"content":" \u0026\u0026 events.equals(otherPatient.events);","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":156,"author":{"gitId":"choowengyan"},"content":" return Objects.hash(patientHospitalId, name, preferredName, foodPreference, familyCondition, hobby, tags,","lastModifiedDate":"2024-03-17"},{"lineNumber":157,"author":{"gitId":"SherisseTJW"},"content":" events);","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":161,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":162,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":163,"author":{"gitId":"choowengyan"},"content":" .add(\"patientHospitalId\", patientHospitalId)","lastModifiedDate":"2024-03-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":165,"author":{"gitId":"choowengyan"},"content":" .add(\"preferredName\", preferredName)","lastModifiedDate":"2024-03-14"},{"lineNumber":166,"author":{"gitId":"choowengyan"},"content":" .add(\"foodPreference\", foodPreference)","lastModifiedDate":"2024-03-14"},{"lineNumber":167,"author":{"gitId":"choowengyan"},"content":" .add(\"familyCondition\", familyCondition)","lastModifiedDate":"2024-03-14"},{"lineNumber":168,"author":{"gitId":"choowengyan"},"content":" .add(\"hobby\", hobby)","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":170,"author":{"gitId":"SherisseTJW"},"content":" .add(\"events\", this.events)","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"SherisseTJW":24,"choowengyan":56,"NeoHW":11,"-":83}},{"path":"src/main/java/seedu/address/model/patient/PatientHospitalId.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"choowengyan"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"choowengyan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":" * Represents a Patient ID in hospital in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPatientHospitalId(String)}","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"public class PatientHospitalId {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":" \"Patient Hospital ID should only contain numeric characters, and it should not be blank\";","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":" /*","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":" public static final String VALIDATION_REGEX \u003d \"^[0-9]+$\";","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":" public final String patientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":" * Constructs a {@code id}.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":" * @param id A valid patient hospital ID.","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" public PatientHospitalId(String id) {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" requireNonNull(id);","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":" checkArgument(isValidPatientHospitalId(id), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" patientHospitalId \u003d id;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" public static boolean isValidPatientHospitalId(String test) {","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" return patientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" if (!(other instanceof PatientHospitalId)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" PatientHospitalId otherId \u003d (PatientHospitalId) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" return patientHospitalId.equals(otherId.patientHospitalId);","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"choowengyan"},"content":" return patientHospitalId.hashCode();","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"choowengyan":67}},{"path":"src/main/java/seedu/address/model/patient/PreferredName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"choowengyan"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"choowengyan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":" * Represents a Patient\u0027s name in the address book.","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPreferredName(String)}","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"public class PreferredName {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":" \"Preferred name should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":" /*","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":" public final String preferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":" * @param name A valid preferred name.","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" public PreferredName(String name) {","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":" checkArgument(isValidPreferredName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" preferredName \u003d name;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" public static boolean isValidPreferredName(String test) {","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" return preferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" if (!(other instanceof PreferredName)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" PreferredName otherName \u003d (PreferredName) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" return preferredName.equals(otherName.preferredName);","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"choowengyan"},"content":" return preferredName.hashCode();","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"choowengyan":67}},{"path":"src/main/java/seedu/address/model/patient/TagContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"import java.util.List;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"guohuang88"},"content":" * Tests that a {@code Patient}\u0027s {@code Tag} matches any of the keywords given.","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":"public class TagContainsKeywordsPredicate implements Predicate\u003cPatient\u003e {","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":" public TagContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":" public boolean test(Patient patient) {","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":" boolean result \u003d false;","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":" for (Tag t : patient.getTags()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":" result \u003d keywords.stream().anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(t.tagName, keyword));","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":" if (result) {","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":" break;","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":" return result;","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":" return true;","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":" if (!(other instanceof TagContainsKeywordsPredicate)) {","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":" return false;","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"guohuang88"},"content":" TagContainsKeywordsPredicate otherTagContainsKeywordsPredicate \u003d (TagContainsKeywordsPredicate) other;","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"guohuang88"},"content":" return keywords.equals(otherTagContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"guohuang88"},"content":" @Override","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"guohuang88"},"content":" public String toString() {","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"guohuang88"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"guohuang88"},"content":" .add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"guohuang88"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"guohuang88":57}},{"path":"src/main/java/seedu/address/model/patient/UniquePatientList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":"import seedu.address.model.patient.exceptions.DuplicatePatientException;","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.exceptions.PatientNotFoundException;","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" * A list of patients that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-08"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" * A patient is considered unique by comparing using {@code Patient#isSamePatient(Patient)}.","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * As such, adding and updating of patients uses Patient#isSamePatient(Patient) for equality so as to ensure","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" * that the patient being added or updated is unique in terms of identity in the UniquePatientList.","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":" * However, the removal of a patient uses Patient#equals(Object) so as to ensure that","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" * the patient with exactly the same fields will be removed.","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * @see Patient#isSamePatient(Patient)","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"public class UniquePatientList implements Iterable\u003cPatient\u003e {","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" private final ObservableList\u003cPatient\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" private final ObservableList\u003cPatient\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" * Returns true if the list contains an equivalent patient as the given argument.","lastModifiedDate":"2024-03-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" public boolean contains(Patient toCheck) {","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" return internalList.stream().anyMatch(toCheck::isSamePatient);","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","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":"NeoHW"},"content":" * Adds a patient to the list.","lastModifiedDate":"2024-03-08"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" * The patient must not already exist in the list.","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" public void add(Patient toAdd) {","lastModifiedDate":"2024-03-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" throw new DuplicatePatientException();","lastModifiedDate":"2024-03-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" * Replaces the patient {@code target} in the list with {@code editedPatient}.","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" * The patient identity of {@code editedPatient} must not be the same as another existing patient in the list.","lastModifiedDate":"2024-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" public void setPatient(Patient target, Patient editedPatient) {","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" requireAllNonNull(target, editedPatient);","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" throw new PatientNotFoundException();","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" if (!target.isSamePatient(editedPatient) \u0026\u0026 contains(editedPatient)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" throw new DuplicatePatientException();","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" internalList.set(index, editedPatient);","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" * Removes the equivalent patient from the list.","lastModifiedDate":"2024-03-08"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" * The patient must exist in the list.","lastModifiedDate":"2024-03-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" public void remove(Patient toRemove) {","lastModifiedDate":"2024-03-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" throw new PatientNotFoundException();","lastModifiedDate":"2024-03-08"},{"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"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" public void setPatients(UniquePatientList replacement) {","lastModifiedDate":"2024-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" * Replaces the contents of this list with {@code patients}.","lastModifiedDate":"2024-03-08"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" * {@code patients} must not contain duplicate patients.","lastModifiedDate":"2024-03-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" public void setPatients(List\u003cPatient\u003e patients) {","lastModifiedDate":"2024-03-08"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" requireAllNonNull(patients);","lastModifiedDate":"2024-03-08"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" if (!patientsAreUnique(patients)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" throw new DuplicatePatientException();","lastModifiedDate":"2024-03-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" internalList.setAll(patients);","lastModifiedDate":"2024-03-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" public ObservableList\u003cPatient\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" public Iterator\u003cPatient\u003e iterator() {","lastModifiedDate":"2024-03-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":114,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" if (!(other instanceof UniquePatientList)) {","lastModifiedDate":"2024-03-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" UniquePatientList otherUniquePatientList \u003d (UniquePatientList) other;","lastModifiedDate":"2024-03-08"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":" return internalList.equals(otherUniquePatientList.internalList);","lastModifiedDate":"2024-03-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" * Returns true if {@code patients} contains only unique patients.","lastModifiedDate":"2024-03-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":" private boolean patientsAreUnique(List\u003cPatient\u003e patients) {","lastModifiedDate":"2024-03-08"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":" for (int i \u003d 0; i \u003c patients.size() - 1; i++) {","lastModifiedDate":"2024-03-08"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" for (int j \u003d i + 1; j \u003c patients.size(); j++) {","lastModifiedDate":"2024-03-08"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":" if (patients.get(i).isSamePatient(patients.get(j))) {","lastModifiedDate":"2024-03-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return false;","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":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"NeoHW":50,"-":101}},{"path":"src/main/java/seedu/address/model/patient/exceptions/DuplicatePatientException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient.exceptions;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":" * Signals that the operation will result in duplicate Patients (Patients are considered duplicates","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" * if they have the same identity).","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"public class DuplicatePatientException extends RuntimeException {","lastModifiedDate":"2024-03-08"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":" public DuplicatePatientException() {","lastModifiedDate":"2024-03-08"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" super(\"Operation would result in duplicate patients\");","lastModifiedDate":"2024-03-08"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"NeoHW":11}},{"path":"src/main/java/seedu/address/model/patient/exceptions/PatientNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient.exceptions;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-08"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-03-08"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":" * Signals that the operation is unable to find the specified patient.","lastModifiedDate":"2024-03-08"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-08"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"public class PatientNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-03-08"}],"authorContributionMap":{"NeoHW":6}},{"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":"NeoHW"},"content":" public static final int MAX_TAG_LENGTH \u003d 50;","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_LENGTH_CONSTRAINTS \u003d \"Tag names must be less than \"","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" + MAX_TAG_LENGTH + \" characters\";","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tag names must not be empty, less than\" + MAX_TAG_LENGTH","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":" + \" characters and can only contain alphanumeric characters or spaces\";","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" public static final String VALIDATION_REGEX \u003d \"^[\\\\p{Alnum}][\\\\p{Alnum} ]*$\";","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" public Tag(String tagName) throws IllegalArgumentException {","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30"},{"lineNumber":27,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" checkArgument(tagName.length() \u003c\u003d MAX_TAG_LENGTH, MESSAGE_LENGTH_CONSTRAINTS);","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" * Returns true if a given string is of valid tag length.","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" public static boolean isValidTagLength(String test) {","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" return test.length() \u003c\u003d MAX_TAG_LENGTH;","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-23"},{"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 Tag)) {","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":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","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 tagName.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"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","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":{"NeoHW":15,"-":58}},{"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":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-08"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-12"},{"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":"NeoHW"},"content":" public static Patient[] getSamplePatients() {","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" return new Patient[] {","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" new Patient(new PatientHospitalId(\"12345\"), new Name(\"Alex Yeoh Jia Jun\"), new PreferredName(\"Alex\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":" new FoodPreference(\"Curry chicken\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" new FamilyCondition(\"Stable, Has 2 sons that visits him regularly\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" new Hobby(\"Singing karaoke\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":" getTagSet(\"diabetes\"), getEventSet(new String[] {\"Birthday\"}, new String[] {\"20-01-2022\"})),","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":" new Patient(new PatientHospitalId(\"12346\"), new Name(\"Bernice Yu Sheng Huat\"), new PreferredName(\"Bern\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" new FoodPreference(\"Char Kuay Tiao, Black Carrot Cake\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" new FamilyCondition(\"Lives alone, no family members around\"), new Hobby(\"Playing Mahjong\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":" getTagSet(\"HighBloodPressure\"),","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":" getEventSet(new String[] {\"Family Visit\"}, new String[] {\"30-03-2022, 15:00 - 18:00\"})),","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" new Patient(new PatientHospitalId(\"12347\"), new Name(\"Mary Jane\"), new PreferredName(\"Mary\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" new FoodPreference(\"Korean\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" new FamilyCondition(\"Lives with only daughter, quarrels regularly with daughter\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" new Hobby(\"Watching Drama\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" getTagSet(\"heart\")),","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" new Patient(new PatientHospitalId(\"12348\"), new Name(\"David Li\"), new PreferredName(\"David\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" new FoodPreference(\"Bak Kut Teh\"), new FamilyCondition(\"Son visits him every weekend\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" new Hobby(\"Plays erhu\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" getTagSet(\"diabetes\", \"skin\")),","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" new Patient(new PatientHospitalId(\"12349\"), new Name(\"Irfan Ibrahim\"), new PreferredName(\"Fan\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" new FoodPreference(\"Roti Prata\"), new FamilyCondition(\"Children encountered accident 2 months ago\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" new Hobby(\"Plays badminton\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" getTagSet(\"tumour\")),","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" new Patient(new PatientHospitalId(\"12350\"), new Name(\"Roy Balakrishnan\"), new PreferredName(\"Rony\"),","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" new FoodPreference(\"Fish Ball Soup\"), new FamilyCondition(\"Financial problem\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" new Hobby(\"Jog around park\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" getTagSet(\"wheelchair\")),","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" for (Patient samplePatient : getSamplePatients()) {","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" sampleAb.addPatient(samplePatient);","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":" * Returns a set of Events containing the list of strings given.","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"SherisseTJW"},"content":" public static Set\u003cEvent\u003e getEventSet(String[] names, String[] dates) {","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"SherisseTJW"},"content":" Event[] events \u003d new Event[names.length];","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"SherisseTJW"},"content":" for (int i \u003d 0; i \u003c names.length; i++) {","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"SherisseTJW"},"content":" events[i] \u003d new Event(names[i], dates[i]);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"SherisseTJW"},"content":" return Arrays.stream(events).collect(Collectors.toSet());","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"SherisseTJW":16,"choowengyan":29,"NeoHW":6,"-":33}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedEvent.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SherisseTJW"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":" * Jackson-friendly version of {@link Event}.","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"public class JsonAdaptedEvent {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":" private final String name;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":" private final String dateTime;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":" * Constructs a {@code JsonAdaptedEvent} with the given {@code eventName}, {@code dateTime}","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SherisseTJW"},"content":" @JsonCreator","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":" public JsonAdaptedEvent(@JsonProperty(\"name\") String name,","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":" @JsonProperty(\"dateTime\") String dateTime) {","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SherisseTJW"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":" this.dateTime \u003d dateTime;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":" * Converts a given {@code Event} into this class for Jackson use.","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" public JsonAdaptedEvent(Event source) {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":" this.name \u003d source.name;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":" this.dateTime \u003d convertToExpectedDateTimeFormat(source.date, source.startTime, source.endTime);","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":" * Converts this Jackson-friendly adapted tag object into the model\u0027s {@code Event} object.","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted Event.","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":" public Event toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":" if (!Event.isValidEvent(this.dateTime)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":" throw new IllegalValueException(Event.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" return new Event(this.name, this.dateTime);","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":" private String convertToExpectedDateTimeFormat(String date, String startTime, String endTime) {","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":" if (startTime \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" return date;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SherisseTJW"},"content":" return String.format(\"%s, %s - %s\", date, startTime, endTime);","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SherisseTJW"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SherisseTJW":54}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPatient.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":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * Jackson-friendly version of {@link Patient}.","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"class JsonAdaptedPatient {","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Patient\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":" private final String patientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" private final String preferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" private final String foodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" private final String familyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" private final String hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":" private final List\u003cJsonAdaptedEvent\u003e events \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" * Constructs a {@code JsonAdaptedPatient} with the given patient details.","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" public JsonAdaptedPatient(@JsonProperty(\"patientHospitalId\") String patientHospitalId,","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" @JsonProperty(\"name\") String name, @JsonProperty(\"preferredName\") String preferredName,","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" @JsonProperty(\"foodPreference\") String foodPreference,","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" @JsonProperty(\"familyCondition\") String familyCondition,","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" @JsonProperty(\"hobby\") String hobby,","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" @JsonProperty(\"events\") List\u003cJsonAdaptedEvent\u003e events) {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" this.patientHospitalId \u003d patientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" this.preferredName \u003d preferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" this.foodPreference \u003d foodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" this.familyCondition \u003d familyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" this.hobby \u003d hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"SherisseTJW"},"content":" if (events !\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SherisseTJW"},"content":" this.events.addAll(events);","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-15"},{"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":"choowengyan"},"content":" * Converts a given {@code Patient} into this class for Alex use.","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" public JsonAdaptedPatient(Patient source) {","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":" patientHospitalId \u003d source.getPatientHospitalId().patientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":" preferredName \u003d source.getPreferredName().preferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":" foodPreference \u003d source.getFoodPreference().foodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":" familyCondition \u003d source.getFamilyCondition().familyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"choowengyan"},"content":" hobby \u003d source.getHobby().hobby;","lastModifiedDate":"2024-03-12"},{"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":"SherisseTJW"},"content":" events.addAll(source.getEvents().stream()","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"SherisseTJW"},"content":" .map(JsonAdaptedEvent::new)","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"SherisseTJW"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","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":"NeoHW"},"content":" * Converts this Jackson-friendly adapted patient object into the model\u0027s {@code Patient} object.","lastModifiedDate":"2024-03-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted patient.","lastModifiedDate":"2024-03-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" public Patient toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-08"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" final List\u003cTag\u003e patientTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" patientTags.add(tag.toModelType());","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"SherisseTJW"},"content":" final List\u003cEvent\u003e patientEvents \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"SherisseTJW"},"content":" for (JsonAdaptedEvent date : events) {","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"SherisseTJW"},"content":" patientEvents.add(date.toModelType());","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"choowengyan"},"content":" if (patientHospitalId \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"choowengyan"},"content":" PatientHospitalId.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"choowengyan"},"content":" if (!PatientHospitalId.isValidPatientHospitalId(patientHospitalId)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(PatientHospitalId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"choowengyan"},"content":" final PatientHospitalId modelPatientHospitalId \u003d new PatientHospitalId(patientHospitalId);","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"choowengyan"},"content":" if (preferredName \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"choowengyan"},"content":" PreferredName.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"choowengyan"},"content":" if (!PreferredName.isValidPreferredName(preferredName)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(PreferredName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"choowengyan"},"content":" final PreferredName modelPreferredName \u003d new PreferredName(preferredName);","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"choowengyan"},"content":" if (foodPreference \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"choowengyan"},"content":" FoodPreference.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"choowengyan"},"content":" if (!FoodPreference.isValidFoodPreference(foodPreference)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(FoodPreference.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":133,"author":{"gitId":"choowengyan"},"content":" final FoodPreference modelFoodPreference \u003d new FoodPreference(foodPreference);","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"choowengyan"},"content":" if (familyCondition \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"choowengyan"},"content":" FamilyCondition.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"choowengyan"},"content":" if (!FamilyCondition.isValidFamilyCondition(familyCondition)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(FamilyCondition.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":142,"author":{"gitId":"choowengyan"},"content":" final FamilyCondition modelFamilyCondition \u003d new FamilyCondition(familyCondition);","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":144,"author":{"gitId":"choowengyan"},"content":" if (hobby \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Hobby.class.getSimpleName()));","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"choowengyan"},"content":" if (!Hobby.isValidHobby(hobby)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"choowengyan"},"content":" throw new IllegalValueException(Hobby.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"choowengyan"},"content":" final Hobby modelHobby \u003d new Hobby(hobby);","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(patientTags);","lastModifiedDate":"2024-03-09"},{"lineNumber":153,"author":{"gitId":"SherisseTJW"},"content":" final Set\u003cEvent\u003e modelEvents \u003d new HashSet\u003c\u003e(patientEvents);","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":155,"author":{"gitId":"choowengyan"},"content":" return new Patient(modelPatientHospitalId, modelName, modelPreferredName, modelFoodPreference,","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"SherisseTJW"},"content":" modelFamilyCondition, modelHobby, modelTags, modelEvents);","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"SherisseTJW":20,"choowengyan":64,"NeoHW":11,"-":64}},{"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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public static final String MESSAGE_DUPLICATE_PATIENT \u003d \"Patients list contains duplicate patient(s).\";","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" private final List\u003cJsonAdaptedPatient\u003e patients \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given patients.","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"patients\") List\u003cJsonAdaptedPatient\u003e patients) {","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" this.patients.addAll(patients);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" patients.addAll(source.getPatientList().stream().map(JsonAdaptedPatient::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" for (JsonAdaptedPatient jsonAdaptedPatient : patients) {","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" Patient patient \u003d jsonAdaptedPatient.toModelType();","lastModifiedDate":"2024-03-09"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" if (addressBook.hasPatient(patient)) {","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PATIENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" addressBook.addPatient(patient);","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":12,"-":48}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" private PatientListPanel patientListPanel;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" private StackPane patientListPanelPlaceholder;","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" patientListPanel \u003d new PatientListPanel(logic.getFilteredPatientList());","lastModifiedDate":"2024-03-09"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" patientListPanelPlaceholder.getChildren().add(patientListPanel.getRoot());","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public PatientListPanel getPatientListPanel() {","lastModifiedDate":"2024-03-09"},{"lineNumber":167,"author":{"gitId":"NeoHW"},"content":" return patientListPanel;","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":6,"-":190}},{"path":"src/main/java/seedu/address/ui/PatientCard.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":"SherisseTJW"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" * An UI component that displays information of a {@code Patient}.","lastModifiedDate":"2024-03-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"public class PatientCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" private static final String FXML \u003d \"PatientListCard.fxml\";","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"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":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" public final Patient patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" private Label patientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" private Label preferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" private Label foodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" @FXML","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" private Label familyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" @FXML","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" private Label hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":" @FXML","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"SherisseTJW"},"content":" private VBox events;","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" * Creates a {@code PatientCode} with the given {@code Patient} and index to display.","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" public PatientCard(Patient patient, int displayedIndex) {","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" this.patient \u003d patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" name.setText(patient.getName().fullName);","lastModifiedDate":"2024-03-08"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":" preferredName.setText(patient.getPreferredName().preferredName);","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" foodPreference.setText(patient.getFoodPreference().foodPreference);","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"choowengyan"},"content":" familyCondition.setText(patient.getFamilyCondition().familyCondition);","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" hobby.setText(patient.getHobby().hobby);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" patient.getTags().stream()","lastModifiedDate":"2024-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":68,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":69,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"SherisseTJW"},"content":" if (patient.getEvents().size() \u003e\u003d 1) {","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SherisseTJW"},"content":" events.getChildren().add(new Label(\"Upcoming:\\n\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":" ArrayList\u003cEvent\u003e allEvents \u003d new ArrayList\u003c\u003e(patient.getEvents());","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SherisseTJW"},"content":" Collections.sort(allEvents);","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"SherisseTJW"},"content":" for (int i \u003d 1; i \u003c\u003d allEvents.size(); i++) {","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"SherisseTJW"},"content":" events.getChildren().add(new Label((i) + \". \"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"SherisseTJW"},"content":" + allEvents.get(i - 1).toString() + \"\\n\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"SherisseTJW"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"SherisseTJW":17,"choowengyan":11,"NeoHW":10,"-":43}},{"path":"src/main/java/seedu/address/ui/PatientListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":" * Panel containing the list of patients.","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"public class PatientListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-09"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":" private static final String FXML \u003d \"PatientListPanel.fxml\";","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" private final Logger logger \u003d LogsCenter.getLogger(PatientListPanel.class);","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" private ListView\u003cPatient\u003e patientListView;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * Creates a {@code PatientListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" public PatientListPanel(ObservableList\u003cPatient\u003e patientList) {","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" patientListView.setItems(patientList);","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" patientListView.setCellFactory(listView -\u003e new PatientListViewCell());","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Patient} using a {@code PatientCard}.","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" class PatientListViewCell extends ListCell\u003cPatient\u003e {","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" protected void updateItem(Patient patient, boolean empty) {","lastModifiedDate":"2024-03-08"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" super.updateItem(patient, empty);","lastModifiedDate":"2024-03-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" if (empty || patient \u003d\u003d null) {","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" setGraphic(new PatientCard(patient, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":16,"-":33}},{"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":"ZhiWei1010"},"content":" title\u003d\"PatientSync\" 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":"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":"NeoHW"},"content":" \u003cVBox fx:id\u003d\"patientList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-08"},{"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":"SherisseTJW"},"content":" \u003cStackPane fx:id\u003d\"patientListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-10"},{"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":{"SherisseTJW":1,"ZhiWei1010":1,"NeoHW":1,"-":57}},{"path":"src/main/resources/view/PatientListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27"},{"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":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" \u003cLabel fx:id\u003d\"preferredNameLabel\" styleClass\u003d\"cell_small_label\" text\u003d\"Preferred Name:\"/\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" \u003cLabel fx:id\u003d\"preferredName\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$preferredName\"/\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" \u003cLabel fx:id\u003d\"foodPreferenceLabel\" styleClass\u003d\"cell_small_label\" text\u003d\"Food Preference:\"/\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" \u003cLabel fx:id\u003d\"foodPreference\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$foodPreference\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" \u003cLabel fx:id\u003d\"familyConditionLabel\" styleClass\u003d\"cell_small_label\" text\u003d\"Family Condition:\"/\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" \u003cLabel fx:id\u003d\"familyCondition\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$familyCondition\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" \u003cLabel fx:id\u003d\"hobbyLabel\" styleClass\u003d\"cell_small_label\" text\u003d\"Hobby:\"/\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" \u003cLabel fx:id\u003d\"hobby\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$hobby\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":" \u003cVBox fx:id\u003d\"events\" GridPane.columnIndex\u003d\"1\" alignment\u003d\"CENTER\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"SherisseTJW":3,"choowengyan":17,"-":33}},{"path":"src/main/resources/view/PatientListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":" \u003cListView fx:id\u003d\"patientListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-10"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"SherisseTJW":1,"-":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":"NeoHW"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FAMILY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FOOD_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOBBY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ID_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREFERRED_NAME_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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.AMY;","lastModifiedDate":"2024-03-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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void getFilteredPatientList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPatientList().remove(0));","lastModifiedDate":"2024-03-09"},{"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":"choowengyan"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + ID_DESC_AMY + NAME_DESC_AMY + PREFERRED_NAME_DESC_AMY","lastModifiedDate":"2024-03-14"},{"lineNumber":171,"author":{"gitId":"choowengyan"},"content":" + FOOD_DESC_AMY + FAMILY_DESC_AMY + HOBBY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":172,"author":{"gitId":"NeoHW"},"content":" Patient expectedPatient \u003d new PatientBuilder(AMY).withTags().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"NeoHW"},"content":" expectedModel.addPatient(expectedPatient);","lastModifiedDate":"2024-03-09"},{"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":{"choowengyan":7,"NeoHW":9,"-":161}},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" public void execute_duplicatePatient_throwsCommandException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" Patient patientInList \u003d model.getAddressBook().getPatientList().get(0);","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" assertCommandFailure(new AddCommand(patientInList), model,","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":" AddCommand.MESSAGE_DUPLICATE_PATIENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"NeoHW":6,"-":27}},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-09"},{"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.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":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" public void constructor_nullPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" public void execute_duplicatePatient_throwsCommandException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" Patient validPatient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" AddCommand addCommand \u003d new AddCommand(validPatient);","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" ModelStub modelStub \u003d new ModelStubWithPatient(validPatient);","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PATIENT, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" Patient alice \u003d new PatientBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" Patient bob \u003d new PatientBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" // different patient -\u003e returns false","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22"},{"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":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":76,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","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":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"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 Path getAddressBookFilePath() {","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 void setAddressBookFilePath(Path addressBookFilePath) {","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":"2017-05-12"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" public void addPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":123,"author":{"gitId":"NeoHW"},"content":" public boolean hasPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":" public void deletePatient(Patient target) {","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void setPatient(Patient target, Patient editedPatient) {","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public ObservableList\u003cPatient\u003e getFilteredPatientList() {","lastModifiedDate":"2024-03-09"},{"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":"2017-05-12"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" public void updateFilteredPatientList(Predicate\u003cPatient\u003e predicate) {","lastModifiedDate":"2024-03-09"},{"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":"","lastModifiedDate":"2017-05-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":149,"author":{"gitId":"NeoHW"},"content":" * A Model stub that contains a single patient.","lastModifiedDate":"2024-03-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":151,"author":{"gitId":"NeoHW"},"content":" private class ModelStubWithPatient extends ModelStub {","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" private final Patient patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":" ModelStubWithPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-08"},{"lineNumber":156,"author":{"gitId":"NeoHW"},"content":" this.patient \u003d patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"NeoHW"},"content":" public boolean hasPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":161,"author":{"gitId":"NeoHW"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-08"},{"lineNumber":162,"author":{"gitId":"NeoHW"},"content":" return this.patient.isSamePatient(patient);","lastModifiedDate":"2024-03-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":167,"author":{"gitId":"NeoHW"},"content":" * A Model stub that always accept the patient being added.","lastModifiedDate":"2024-03-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":169,"author":{"gitId":"NeoHW"},"content":" private class ModelStubAcceptingPatientAdded extends ModelStub {","lastModifiedDate":"2024-03-09"},{"lineNumber":170,"author":{"gitId":"NeoHW"},"content":" final ArrayList\u003cPatient\u003e patientsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-09"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":173,"author":{"gitId":"NeoHW"},"content":" public boolean hasPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":174,"author":{"gitId":"NeoHW"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-08"},{"lineNumber":175,"author":{"gitId":"NeoHW"},"content":" return patientsAdded.stream().anyMatch(patient::isSamePatient);","lastModifiedDate":"2024-03-09"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":179,"author":{"gitId":"NeoHW"},"content":" public void addPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":180,"author":{"gitId":"NeoHW"},"content":" requireNonNull(patient);","lastModifiedDate":"2024-03-08"},{"lineNumber":181,"author":{"gitId":"NeoHW"},"content":" patientsAdded.add(patient);","lastModifiedDate":"2024-03-09"},{"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 ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":186,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"NeoHW":36,"-":154}},{"path":"src/test/java/seedu/address/logic/commands/AddEventCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SherisseTJW"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SherisseTJW"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SherisseTJW"},"content":"public class AddEventCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":" private final Event validDate \u003d new Event(\"Test\", \"20-02-2022\");","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":" private final Event secondValidDate \u003d new Event(\"SomethingElse\", \"20-02-2022\");","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":" private final Event thirdValidDate \u003d new Event(\"Test\", \"20-02-2023\");","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":" public void constructor_nullIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddEventCommand(null, validDate));","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" public void constructor_nullEventDateTimeStr_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":" Index index \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddEventCommand(index, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" public void constructor_nullIndexAndEventDateTimeStr_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddEventCommand(null, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" public void execute_addValidEventToInvalidPatient_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":" Index invalidIndex \u003d Index.fromOneBased(model.getFilteredPatientList().size() + 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand addEventCommand \u003d new AddEventCommand(invalidIndex, validDate);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SherisseTJW"},"content":" CommandException exception \u003d assertThrows(CommandException.class, () -\u003e addEventCommand.execute(model));","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SherisseTJW"},"content":" assertEquals(MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX, exception.getMessage());","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SherisseTJW"},"content":" public void execute_addValidEvent_success() throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SherisseTJW"},"content":" Index validIndex \u003d Index.fromZeroBased(1);","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand addEventCommand \u003d new AddEventCommand(validIndex, validDate);","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"SherisseTJW"},"content":" CommandResult result \u003d addEventCommand.execute(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"SherisseTJW"},"content":" Patient editedPatient \u003d model.getFilteredPatientList().get(validIndex.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"SherisseTJW"},"content":" String expected \u003d String.format(AddEventCommand.MESSAGE_SUCCESS, validDate.name,","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"SherisseTJW"},"content":" editedPatient.getName(), validIndex.getOneBased(), validDate.date);","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"SherisseTJW"},"content":" assertEquals(expected, result.getFeedbackToUser());","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cEvent\u003e expectedEvents \u003d new HashSet\u003c\u003e(editedPatient.getEvents());","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(editedPatient.getEvents().equals(expectedEvents));","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":" public void execute_addDuplicateEvent_success() throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"SherisseTJW"},"content":" Index validIndex \u003d Index.fromZeroBased(1);","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand addEventCommand \u003d new AddEventCommand(validIndex, validDate);","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"SherisseTJW"},"content":" CommandResult result;","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"SherisseTJW"},"content":" String expected;","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"SherisseTJW"},"content":" Patient editedPatient;","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cEvent\u003e expectedEvents;","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"SherisseTJW"},"content":" // Confirm the basic add works","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"SherisseTJW"},"content":" result \u003d addEventCommand.execute(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"SherisseTJW"},"content":" editedPatient \u003d model.getFilteredPatientList().get(validIndex.getZeroBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"SherisseTJW"},"content":" expected \u003d String.format(AddEventCommand.MESSAGE_SUCCESS, validDate.name,","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"SherisseTJW"},"content":" editedPatient.getName(), validIndex.getOneBased(), validDate.date);","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"SherisseTJW"},"content":" assertEquals(expected, result.getFeedbackToUser());","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"SherisseTJW"},"content":" expectedEvents \u003d new HashSet\u003c\u003e(editedPatient.getEvents());","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(editedPatient.getEvents().equals(expectedEvents));","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"SherisseTJW"},"content":" // Attempt to insert duplicate","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"SherisseTJW"},"content":" result \u003d addEventCommand.execute(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"SherisseTJW"},"content":" editedPatient \u003d model.getFilteredPatientList().get(validIndex.getZeroBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"SherisseTJW"},"content":" expected \u003d String.format(AddEventCommand.MESSAGE_DUPLICATE, validDate.name,","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"SherisseTJW"},"content":" editedPatient.getName(), validIndex.getOneBased(), validDate.date);","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" assertEquals(expected, result.getFeedbackToUser());","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"SherisseTJW"},"content":" expectedEvents \u003d new HashSet\u003c\u003e(editedPatient.getEvents());","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(editedPatient.getEvents().equals(expectedEvents));","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"SherisseTJW"},"content":" public void equalsTest() {","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand addEventCommandFirst \u003d new AddEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" INDEX_FIRST_PATIENT, validDate);","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand addEventCommandSecond \u003d new AddEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"SherisseTJW"},"content":" INDEX_SECOND_PATIENT, validDate);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand addEventCommandThird \u003d new AddEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"SherisseTJW"},"content":" INDEX_FIRST_PATIENT, secondValidDate);","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand addEventCommandFourth \u003d new AddEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"SherisseTJW"},"content":" INDEX_FIRST_PATIENT, thirdValidDate);","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(addEventCommandFirst.equals(addEventCommandSecond));","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(addEventCommandFirst.equals(addEventCommandThird));","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(addEventCommandFirst.equals(addEventCommandFourth));","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(addEventCommandFirst.equals(addEventCommandFirst));","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"SherisseTJW"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand addEventCommand \u003d new AddEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"SherisseTJW"},"content":" INDEX_FIRST_PATIENT, validDate);","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"SherisseTJW"},"content":" String expected \u003d AddEventCommand.class.getCanonicalName() + \"{index\u003d\" + INDEX_FIRST_PATIENT","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"SherisseTJW"},"content":" + \", event\u003d\" + validDate + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(addEventCommand.toString().equals(expected));","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"SherisseTJW"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SherisseTJW":133}},{"path":"src/test/java/seedu/address/logic/commands/AddTagsCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-11"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-11"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION_OUTPUT;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DIABETES;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DIABETES_OUTPUT;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"public class AddTagsCommandTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-11"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" public void execute_validTagsUnfilteredList_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" Index index \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagsToAdd \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" tagsToAdd.add(new Tag(VALID_TAG_DIABETES));","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand addTagsCommand \u003d new AddTagsCommand(index, tagsToAdd);","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-03-11"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" CommandResult commandResult \u003d addTagsCommand.execute(model);","lastModifiedDate":"2024-03-11"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" Patient editedPatient \u003d model.getFilteredPatientList().get(index.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(AddTagsCommand.MESSAGE_ADD_TAG_SUCCESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" editedPatient.getName(), VALID_TAG_DIABETES_OUTPUT) + \"\\n\";","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedMessage, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-11"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e expectedTagsSet \u003d new HashSet\u003c\u003e(editedPatient.getTags());","lastModifiedDate":"2024-03-11"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" expectedTagsSet.add(new Tag(VALID_TAG_DIABETES));","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" assertEquals(editedPatient.getTags(), expectedTagsSet);","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-11"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" // The command should not throw an exception in this test","lastModifiedDate":"2024-03-11"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" throw new AssertionError(\"Execution of command should not fail.\", e);","lastModifiedDate":"2024-03-11"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" public void execute_addDuplicateTagsUnfilteredList_success() {","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" Index index \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagsToAdd \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":" tagsToAdd.add(new Tag(VALID_TAG_DIABETES));","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" tagsToAdd.add(new Tag(VALID_TAG_DIABETES)); // Adding a duplicate tag should result in one unique tag","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand addTagsCommand \u003d new AddTagsCommand(index, tagsToAdd);","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" CommandResult commandResult \u003d addTagsCommand.execute(model);","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" Patient editedPatient \u003d model.getFilteredPatientList().get(index.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(AddTagsCommand.MESSAGE_ADD_TAG_SUCCESS,","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" editedPatient.getName(), VALID_TAG_DIABETES_OUTPUT) + \"\\n\";","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedMessage, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e expectedTagsSet \u003d new HashSet\u003c\u003e(editedPatient.getTags());","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"choowengyan"},"content":" expectedTagsSet.add(new Tag(VALID_TAG_DIABETES));","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" assertEquals(editedPatient.getTags(), expectedTagsSet);","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-11"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" // The command should not throw an exception in this test","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" throw new AssertionError(\"Execution of command should not fail.\", e);","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" public void execute_addPreExistingTagsUnfilteredList_logOutputFailure() {","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" Index index \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagsToAdd \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"choowengyan"},"content":" tagsToAdd.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand addTagsCommand \u003d new AddTagsCommand(index, tagsToAdd);","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" CommandResult commandResult \u003d addTagsCommand.execute(model);","lastModifiedDate":"2024-03-11"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" Patient editedPatient \u003d model.getFilteredPatientList().get(index.getZeroBased());","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(AddTagsCommand.MESSAGE_DUPLICATE_TAG,","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" editedPatient.getName(), VALID_TAG_DEPRESSION_OUTPUT) + \"\\n\";","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedMessage, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e expectedTagsSet \u003d new HashSet\u003c\u003e(editedPatient.getTags());","lastModifiedDate":"2024-03-11"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" assertTrue(editedPatient.getTags().equals(expectedTagsSet));","lastModifiedDate":"2024-03-11"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-11"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" // The command should not throw an exception in this test","lastModifiedDate":"2024-03-11"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" throw new AssertionError(\"Execution of command should not fail.\", e);","lastModifiedDate":"2024-03-11"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPatientList().size() + 1);","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagsToAdd \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":112,"author":{"gitId":"choowengyan"},"content":" tagsToAdd.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand addTagsCommand \u003d new AddTagsCommand(outOfBoundIndex, tagsToAdd);","lastModifiedDate":"2024-03-11"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":" CommandException exception \u003d assertThrows(CommandException.class, () -\u003e addTagsCommand.execute(model));","lastModifiedDate":"2024-03-11"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" assertEquals(MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX, exception.getMessage());","lastModifiedDate":"2024-03-11"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" public void equals() {","lastModifiedDate":"2024-03-11"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":" final Index index \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":" final Set\u003cTag\u003e firstTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":123,"author":{"gitId":"choowengyan"},"content":" firstTags.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" final Set\u003cTag\u003e secondTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":125,"author":{"gitId":"choowengyan"},"content":" secondTags.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":" final AddTagsCommand standardCommand \u003d new AddTagsCommand(index, firstTags);","lastModifiedDate":"2024-03-11"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":129,"author":{"gitId":"NeoHW"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":130,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand commandWithSameValues \u003d new AddTagsCommand(index, secondTags);","lastModifiedDate":"2024-03-11"},{"lineNumber":131,"author":{"gitId":"NeoHW"},"content":" assertEquals(standardCommand, commandWithSameValues);","lastModifiedDate":"2024-03-22"},{"lineNumber":132,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":" assertEquals(standardCommand, standardCommand);","lastModifiedDate":"2024-03-22"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":136,"author":{"gitId":"NeoHW"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":137,"author":{"gitId":"NeoHW"},"content":" assertNotEquals(null, standardCommand);","lastModifiedDate":"2024-03-22"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":140,"author":{"gitId":"NeoHW"},"content":" assertNotEquals(standardCommand, new ClearCommand());","lastModifiedDate":"2024-03-22"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" assertNotEquals(standardCommand, new AddTagsCommand(INDEX_SECOND_PATIENT, firstTags));","lastModifiedDate":"2024-03-22"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":145,"author":{"gitId":"NeoHW"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-11"},{"lineNumber":146,"author":{"gitId":"NeoHW"},"content":" assertNotEquals(standardCommand, new AddTagsCommand(index, new HashSet\u003c\u003e()));","lastModifiedDate":"2024-03-22"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":149,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":150,"author":{"gitId":"NeoHW"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-11"},{"lineNumber":151,"author":{"gitId":"NeoHW"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-11"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-11"},{"lineNumber":153,"author":{"gitId":"choowengyan"},"content":" tags.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"choowengyan"},"content":" tags.add(new Tag(VALID_TAG_DIABETES));","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":156,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand addTagsCommand \u003d new AddTagsCommand(index, tags);","lastModifiedDate":"2024-03-11"},{"lineNumber":157,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":158,"author":{"gitId":"NeoHW"},"content":" String expected \u003d AddTagsCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", tags\u003d\"","lastModifiedDate":"2024-03-11"},{"lineNumber":159,"author":{"gitId":"NeoHW"},"content":" + tags + \"}\";","lastModifiedDate":"2024-03-11"},{"lineNumber":160,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":161,"author":{"gitId":"NeoHW"},"content":" assertEquals(expected, addTagsCommand.toString());","lastModifiedDate":"2024-03-11"},{"lineNumber":162,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":163,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":164,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"choowengyan":13,"NeoHW":151}},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08"}],"authorContributionMap":{"NeoHW":1,"-":31}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FAMILY_CONDITION;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FOOD_PREFERENCE;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOBBY;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PID;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PREFERRED_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"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":"NeoHW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-09"},{"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":"choowengyan"},"content":" public static final String VALID_ID_AMY \u003d \"12345\";","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_ID_BOB \u003d \"12234\";","lastModifiedDate":"2024-03-17"},{"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":"SherisseTJW"},"content":" public static final String VALID_EVENT_NAME \u003d \"Birthday\";","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" public static final String VALID_EVENT_DATE \u003d \"20-02-2022\";","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":" public static final String VALID_EVENT_DATETIME \u003d \"20-02-2022, 12:12 - 15:15\";","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_PREFERRED_NAME_AMY \u003d \"Amy\";","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_PREFERRED_NAME_BOB \u003d \"Bob\";","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_FOOD_AMY \u003d \"Dim sum\";","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_FOOD_BOB \u003d \"Chicken rice\";","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_FAMILY_CONDITION_AMY \u003d \"2 sons migrated to Korea\";","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_FAMILY_CONDITION_BOB \u003d \"Always quarrels with daughter\";","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_HOBBY_AMY \u003d \"Watch Hong Kong Drama\";","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_HOBBY_BOB \u003d \"Interested in calligraphy\";","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_TAG_DIABETES \u003d \"diabetes\";","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" public static final String VALID_TAG_DEPRESSION \u003d \"depression\";","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" public static final String VALID_TAG_DIABETES_OUTPUT \u003d \"[diabetes]\";","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" public static final String VALID_TAG_DEPRESSION_OUTPUT \u003d \"[depression]\";","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" public static final String ID_DESC_AMY \u003d \" \" + PREFIX_PID + VALID_ID_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" public static final String ID_DESC_BOB \u003d \" \" + PREFIX_PID + VALID_ID_BOB;","lastModifiedDate":"2024-03-14"},{"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":"SherisseTJW"},"content":" public static final String EVENT_DESC_DATE \u003d \" \" + PREFIX_NAME + VALID_EVENT_NAME + \" \"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"SherisseTJW"},"content":" + PREFIX_DATETIME + VALID_EVENT_DATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"SherisseTJW"},"content":" public static final String EVENT_DESC_DATETIME \u003d \" \" + PREFIX_NAME + VALID_EVENT_NAME + \" \"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"SherisseTJW"},"content":" + PREFIX_DATETIME + VALID_EVENT_DATETIME;","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"SherisseTJW"},"content":" public static final String INVALID_EVENT_DESC \u003d \" \" + PREFIX_NAME + VALID_EVENT_NAME","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"SherisseTJW"},"content":" + PREFIX_DATETIME + \"Invalid\";","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" public static final String PREFERRED_NAME_DESC_AMY \u003d \" \" + PREFIX_PREFERRED_NAME + VALID_PREFERRED_NAME_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"choowengyan"},"content":" public static final String PREFERRED_NAME_DESC_BOB \u003d \" \" + PREFIX_PREFERRED_NAME + VALID_PREFERRED_NAME_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" public static final String FOOD_DESC_BOB \u003d \" \" + PREFIX_FOOD_PREFERENCE + VALID_FOOD_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" public static final String FOOD_DESC_AMY \u003d \" \" + PREFIX_FOOD_PREFERENCE + VALID_FOOD_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":" public static final String FAMILY_DESC_AMY \u003d \" \" + PREFIX_FAMILY_CONDITION + VALID_FAMILY_CONDITION_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":" public static final String FAMILY_DESC_BOB \u003d \" \" + PREFIX_FAMILY_CONDITION + VALID_FAMILY_CONDITION_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":" public static final String HOBBY_DESC_AMY \u003d \" \" + PREFIX_HOBBY + VALID_HOBBY_AMY;","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":" public static final String HOBBY_DESC_BOB \u003d \" \" + PREFIX_HOBBY + VALID_HOBBY_BOB;","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":" public static final String TAG_DESC_DIABETES \u003d \" \" + PREFIX_TAG + VALID_TAG_DIABETES;","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":" public static final String TAG_DESC_DEPRESSION \u003d \" \" + PREFIX_TAG + VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"choowengyan"},"content":" public static final String INVALID_ID_DESC \u003d \" \" + PREFIX_PID + \"10 a\"; // only digits are allowed in ID","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"choowengyan"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026 Lee Kuang\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":" // \u0027\u0026\u0027 not allowed in preferred name","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"choowengyan"},"content":" public static final String INVALID_PREFERRED_NAME_DESC \u003d \" \" + PREFIX_PREFERRED_NAME + \"James\u0026\";","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"choowengyan"},"content":" // empty string not allowed for food description","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"choowengyan"},"content":" public static final String INVALID_FOOD_DESC \u003d \" \" + PREFIX_FOOD_PREFERENCE;","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"choowengyan"},"content":" // empty string not allowed for family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"choowengyan"},"content":" public static final String INVALID_FAMILY_DESC \u003d \" \" + PREFIX_FAMILY_CONDITION;","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"choowengyan"},"content":" // empty string not allowed for hobby","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"choowengyan"},"content":" public static final String INVALID_HOBBY_DESC \u003d \" \" + PREFIX_HOBBY;","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"choowengyan"},"content":" // \u0027*\u0027 and spacing not allowed in tags","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"choowengyan"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hearing loss*\";","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" public static final EditPatientDescriptor DESC_AMY;","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" public static final EditPatientDescriptor DESC_BOB;","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":93,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" DESC_AMY \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(VALID_PREFERRED_NAME_AMY).withFoodPreference(VALID_FOOD_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"choowengyan"},"content":" .withFamilyCondition(VALID_FAMILY_CONDITION_AMY).withHobby(VALID_HOBBY_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"choowengyan"},"content":" .withTags(VALID_TAG_DIABETES).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" DESC_BOB \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(VALID_PREFERRED_NAME_BOB).withFoodPreference(VALID_FOOD_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"choowengyan"},"content":" .withFamilyCondition(VALID_FAMILY_CONDITION_BOB).withHobby(VALID_HOBBY_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":101,"author":{"gitId":"choowengyan"},"content":" .withTags(VALID_TAG_DEPRESSION, VALID_TAG_DIABETES).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":111,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"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":"NeoHW"},"content":" * - the address book, filtered patient list and selected patient in {@code actualModel} remain unchanged","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" List\u003cPatient\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPatientList());","lastModifiedDate":"2024-03-09"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPatientList());","lastModifiedDate":"2024-03-09"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":" * Updates {@code model}\u0027s filtered list to show only the patient at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":150,"author":{"gitId":"NeoHW"},"content":" public static void showPatientAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-03-09"},{"lineNumber":151,"author":{"gitId":"NeoHW"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPatientList().size());","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":153,"author":{"gitId":"NeoHW"},"content":" Patient patient \u003d model.getFilteredPatientList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-09"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":" final String[] splitName \u003d patient.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-08"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":" model.updateFilteredPatientList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-03-09"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":157,"author":{"gitId":"NeoHW"},"content":" assertEquals(1, model.getFilteredPatientList().size());","lastModifiedDate":"2024-03-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"SherisseTJW":10,"choowengyan":47,"NeoHW":20,"-":83}},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" Patient patientToDelete \u003d model.getFilteredPatientList().get(INDEX_FIRST_PATIENT.getZeroBased());","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PATIENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PATIENT_SUCCESS,","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" patientToDelete.getName(), INDEX_FIRST_PATIENT.getOneBased());","lastModifiedDate":"2024-03-17"},{"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":"NeoHW"},"content":" expectedModel.deletePatient(patientToDelete);","lastModifiedDate":"2024-03-09"},{"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":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPatientList().size() + 1);","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-09"},{"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":"2018-01-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PATIENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PATIENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PATIENT);","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" // different patient -\u003e returns false","lastModifiedDate":"2024-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","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":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" private void showNoPatient(Model model) {","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" model.updateFilteredPatientList(p -\u003e false);","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" assertTrue(model.getFilteredPatientList().isEmpty());","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"choowengyan":1,"NeoHW":17,"-":71}},{"path":"src/test/java/seedu/address/logic/commands/DeleteEventCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_EVENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.DeleteEventCommand.MESSAGE_DELETE_EVENT_SUCCESS;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EVENT;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_EVENT;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.List;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":"public class DeleteEventCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"ZhiWei1010"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":" public void constructor_nullPatientIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeleteEventCommand(null,","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"ZhiWei1010"},"content":" INDEX_FIRST_EVENT));","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":" public void constructor_nullEventIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeleteEventCommand(INDEX_FIRST_PATIENT,","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"ZhiWei1010"},"content":" null));","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"ZhiWei1010"},"content":" public void constructor_nullPatientAndEventIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeleteEventCommand(null,","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":" null));","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"SherisseTJW"},"content":" public void execute_deleteEventToInvalidPatient_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"ZhiWei1010"},"content":" Index invalidIndex \u003d Index.fromOneBased(model.getFilteredPatientList().size() + 1);","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand deleteEventCommand \u003d new DeleteEventCommand(invalidIndex,","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"ZhiWei1010"},"content":" INDEX_FIRST_EVENT);","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"SherisseTJW"},"content":" CommandException exception \u003d assertThrows(CommandException.class, () -\u003e deleteEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"ZhiWei1010"},"content":" .execute(model));","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX, exception.getMessage());","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"SherisseTJW"},"content":" public void execute_deleteEventWithInvalidEventId_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"ZhiWei1010"},"content":" Index invalidIndex \u003d Index.fromOneBased(model.getFilteredPatientList().get(1)","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"SherisseTJW"},"content":" .getEvents().size() + 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand deleteEventCommand \u003d new DeleteEventCommand(INDEX_FIRST_PATIENT,","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"ZhiWei1010"},"content":" invalidIndex);","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"SherisseTJW"},"content":" CommandException exception \u003d assertThrows(CommandException.class, () -\u003e deleteEventCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"ZhiWei1010"},"content":" .execute(model));","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":" assertEquals(MESSAGE_INVALID_EVENT_DISPLAYED_INDEX, exception.getMessage());","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"ZhiWei1010"},"content":" public void execute_deleteValidEventIndexFromValidPatient_success() throws CommandException {","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"ZhiWei1010"},"content":" Index validIndex \u003d Index.fromZeroBased(1);","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand deleteEventCommand \u003d new DeleteEventCommand(validIndex,","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"ZhiWei1010"},"content":" INDEX_FIRST_EVENT);","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"ZhiWei1010"},"content":" Patient editedPatient \u003d model.getFilteredPatientList().get(validIndex.getZeroBased());","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"SherisseTJW"},"content":" List\u003cEvent\u003e currEventList \u003d new ArrayList\u003c\u003e(editedPatient.getEvents());","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"SherisseTJW"},"content":" Event eventToDelete \u003d currEventList.get(INDEX_FIRST_EVENT.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"SherisseTJW"},"content":" CommandResult result \u003d deleteEventCommand.execute(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"SherisseTJW"},"content":" String expected \u003d String.format(MESSAGE_DELETE_EVENT_SUCCESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"ZhiWei1010"},"content":" Messages.format(editedPatient),","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"ZhiWei1010"},"content":" eventToDelete);","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"ZhiWei1010"},"content":" assertEquals(expected, result.getFeedbackToUser());","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cEvent\u003e expectedEvents \u003d new HashSet\u003c\u003e(editedPatient.getEvents());","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(editedPatient.getEvents().equals(expectedEvents));","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"ZhiWei1010"},"content":" public void equalsTest() {","lastModifiedDate":"2024-03-15"},{"lineNumber":96,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand deleteEventCommandFirst \u003d new DeleteEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"ZhiWei1010"},"content":" INDEX_FIRST_PATIENT, INDEX_FIRST_EVENT);","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand deleteEventCommandSecond \u003d new DeleteEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"ZhiWei1010"},"content":" INDEX_SECOND_PATIENT, INDEX_FIRST_EVENT);","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand deleteEventCommandThird \u003d new DeleteEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"ZhiWei1010"},"content":" INDEX_FIRST_PATIENT, INDEX_SECOND_EVENT);","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand deleteEventCommandFourth \u003d new DeleteEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"ZhiWei1010"},"content":" INDEX_SECOND_PATIENT, INDEX_SECOND_EVENT);","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"ZhiWei1010"},"content":" ListCommand listCommand \u003d new ListCommand();","lastModifiedDate":"2024-03-15"},{"lineNumber":105,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(deleteEventCommandFirst.equals(deleteEventCommandSecond));","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(deleteEventCommandFirst.equals(deleteEventCommandThird));","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(deleteEventCommandFirst.equals(deleteEventCommandFourth));","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(deleteEventCommandFirst.equals(listCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(deleteEventCommandFirst.equals(deleteEventCommandFirst));","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":114,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":117,"author":{"gitId":"ZhiWei1010"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand deleteEventCommand \u003d new DeleteEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"ZhiWei1010"},"content":" INDEX_FIRST_PATIENT, INDEX_FIRST_EVENT);","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"SherisseTJW"},"content":" String expected \u003d DeleteEventCommand.class.getCanonicalName() + \"{targetPatientIndex\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"ZhiWei1010"},"content":" + INDEX_FIRST_PATIENT","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"ZhiWei1010"},"content":" + \", targetEventIndex\u003d\" + INDEX_FIRST_EVENT + \"}\";","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(deleteEventCommand.toString().equals(expected));","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"SherisseTJW":34,"ZhiWei1010":93}},{"path":"src/test/java/seedu/address/logic/commands/DeleteTagsCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION_OUTPUT;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DIABETES;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"public class DeleteTagsCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" private final Set\u003cTag\u003e validTagSet \u003d Set.of(new Tag(\"test\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" private Model model;","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" private final UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" @BeforeEach","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" public void setUp() {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), userPrefs);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" public void constructor_nullIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeleteTagsCommand(null, validTagSet));","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" public void constructor_nullTagSet_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeleteTagsCommand(INDEX_FIRST_PATIENT, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" public void constructor_nullIndexAndNullTagSet_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e new DeleteTagsCommand(null, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" public void execute_validIndexAndTags_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" Index index \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagsToDelete \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" tagsToDelete.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand deleteTagsCommand \u003d new DeleteTagsCommand(index, tagsToDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" CommandResult commandResult \u003d deleteTagsCommand.execute(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" Patient editedPatient \u003d model.getFilteredPatientList().get(index.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(DeleteTagsCommand.MESSAGE_DELETE_TAG_SUCCESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" editedPatient.getName(), VALID_TAG_DEPRESSION_OUTPUT) + \"\\n\";","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedMessage, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e expectedTagsSet \u003d new HashSet\u003c\u003e(editedPatient.getTags());","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" assertFalse(expectedTagsSet.contains(new Tag(VALID_TAG_DEPRESSION)));","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" // The command should not throw an exception in this test","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" throw new AssertionError(\"Execution of command should not fail.\", e);","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" public void execute_invalidIndex_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPatientList().size() + 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagsToDelete \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" tagsToDelete.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand deleteTagsCommand \u003d new DeleteTagsCommand(outOfBoundIndex, tagsToDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" CommandException exception \u003d assertThrows(CommandException.class, () -\u003e deleteTagsCommand.execute(model));","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" assertEquals(MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX, exception.getMessage());","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" public void execute_invalidTags_logsOutcome() {","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" Index index \u003d INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagsToDelete \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" tagsToDelete.add(new Tag(\"nonExistentTag\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand deleteTagsCommand \u003d new DeleteTagsCommand(index, tagsToDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" CommandResult commandResult \u003d deleteTagsCommand.execute(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(DeleteTagsCommand.MESSAGE_INVALID_TAG,","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" model.getFilteredPatientList().get(index.getZeroBased()).getName(), \"[nonExistentTag]\") + \"\\n\";","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedMessage, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" } catch (CommandException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" throw new AssertionError(\"Execution of command should not fail.\", e);","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" final Index index \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"NeoHW"},"content":" final Set\u003cTag\u003e firstTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"NeoHW"},"content":" firstTags.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"NeoHW"},"content":" final Set\u003cTag\u003e secondTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":" secondTags.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"NeoHW"},"content":" final DeleteTagsCommand standardCommand \u003d new DeleteTagsCommand(index, firstTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand commandWithSameValues \u003d new DeleteTagsCommand(index, secondTags);","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"NeoHW"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"NeoHW"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"NeoHW"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"NeoHW"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" assertFalse(standardCommand.equals(new DeleteTagsCommand(INDEX_SECOND_PATIENT, firstTags)));","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"NeoHW"},"content":" assertFalse(standardCommand.equals(new DeleteTagsCommand(index, new HashSet\u003c\u003e())));","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"NeoHW"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"NeoHW"},"content":" tags.add(new Tag(VALID_TAG_DEPRESSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"NeoHW"},"content":" tags.add(new Tag(VALID_TAG_DIABETES));","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand deleteTagsCommand \u003d new DeleteTagsCommand(index, tags);","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":" String expected \u003d DeleteTagsCommand.class.getCanonicalName() + \"{targetPatientIndex\u003d\" + index + \", tags\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"NeoHW"},"content":" + tags + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"NeoHW"},"content":" assertEquals(expected, deleteTagsCommand.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"NeoHW":154}},{"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":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"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.Messages;","lastModifiedDate":"2023-07-13"},{"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-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" Patient editedPatient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder(editedPatient).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PATIENT, descriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-09"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" EditCommand.MESSAGE_EDIT_PATIENT_SUCCESS, Messages.format(editedPatient));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" expectedModel.setPatient(model.getFilteredPatientList().get(0), editedPatient);","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" Index indexLastPatient \u003d Index.fromOneBased(model.getFilteredPatientList().size());","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" Patient lastPatient \u003d model.getFilteredPatientList().get(indexLastPatient.getZeroBased());","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" PatientBuilder patientInList \u003d new PatientBuilder(lastPatient);","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" Patient editedPatient \u003d patientInList.withName(VALID_NAME_BOB).withTags(VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-11"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":" .withTags(VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPatient, descriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" EditCommand.MESSAGE_EDIT_PATIENT_SUCCESS, Messages.format(editedPatient));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" expectedModel.setPatient(lastPatient, editedPatient);","lastModifiedDate":"2024-03-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PATIENT, new EditPatientDescriptor());","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" Patient editedPatient \u003d model.getFilteredPatientList().get(INDEX_FIRST_PATIENT.getZeroBased());","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" EditCommand.MESSAGE_EDIT_PATIENT_SUCCESS, Messages.format(editedPatient));","lastModifiedDate":"2024-03-09"},{"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":"","lastModifiedDate":"2017-05-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" public void execute_duplicatePatientUnfilteredList_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" Patient firstPatient \u003d model.getFilteredPatientList().get(INDEX_FIRST_PATIENT.getZeroBased());","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder(firstPatient).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PATIENT, descriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PATIENT);","lastModifiedDate":"2024-03-09"},{"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-18"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" public void execute_invalidPatientIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPatientList().size() + 1);","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" EditPatientDescriptor descriptor \u003d","lastModifiedDate":"2024-03-11"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" new EditPatientDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"NeoHW"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PATIENT, DESC_AMY);","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"NeoHW"},"content":" EditPatientDescriptor copyDescriptor \u003d new EditPatientDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-11"},{"lineNumber":111,"author":{"gitId":"NeoHW"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PATIENT, copyDescriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PATIENT, DESC_AMY)));","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PATIENT, DESC_BOB)));","lastModifiedDate":"2024-03-09"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"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":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" EditPatientDescriptor editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-11"},{"lineNumber":134,"author":{"gitId":"NeoHW"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPatientDescriptor);","lastModifiedDate":"2024-03-09"},{"lineNumber":135,"author":{"gitId":"NeoHW"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPatientDescriptor\u003d\"","lastModifiedDate":"2024-03-09"},{"lineNumber":136,"author":{"gitId":"NeoHW"},"content":" + editPatientDescriptor + \"}\";","lastModifiedDate":"2024-03-09"},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.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":"2017-05-08"}],"authorContributionMap":{"choowengyan":3,"NeoHW":44,"-":93}},{"path":"src/test/java/seedu/address/logic/commands/EditEventCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_EVENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EVENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_EVENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_EVENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":"public class EditEventCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":" private final Event validEvent \u003d new Event(\"Test\", \"20-02-2022\");","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":" private final Event secondValidEvent \u003d new Event(\"SomethingElse\", \"20-02-2022\");","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":" private final Event thirdValidEvent \u003d new Event(\"Test\", \"20-02-2023\");","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":" public void constructor_nullPatientIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":" null, INDEX_FIRST_EVENT, validEvent));","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":" public void constructor_nullEventIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_PATIENT, null, validEvent));","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"guohuang88"},"content":" public void constructor_nullDate_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"guohuang88"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_PATIENT, INDEX_FIRST_EVENT, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"guohuang88"},"content":" public void constructor_nullPatientIndexEventIndex_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"guohuang88"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":" null, null, validEvent));","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"guohuang88"},"content":" public void constructor_nullPatientIndexDate_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"guohuang88"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"guohuang88"},"content":" null, INDEX_FIRST_EVENT, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"guohuang88"},"content":" public void constructor_nullEventIndexDate_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"guohuang88"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_PATIENT, null, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"guohuang88"},"content":" public void constructor_nullPatientIndexEventIndexDate_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"guohuang88"},"content":" assertThrows(NullPointerException.class, () -\u003e new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"guohuang88"},"content":" null, null, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"guohuang88"},"content":" public void execute_editEvent_success() throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommand \u003d new EditEventCommand(INDEX_SECOND_PATIENT,","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_EVENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"guohuang88"},"content":" CommandResult result \u003d editEventCommand.execute(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"guohuang88"},"content":" Patient editedPatient \u003d model.getFilteredPatientList().get(INDEX_SECOND_PATIENT.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"guohuang88"},"content":" String expected \u003d String.format(EditEventCommand.MESSAGE_SUCCESS, validEvent.name,","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_EVENT.getOneBased(), validEvent.date, editedPatient.getName(),","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"guohuang88"},"content":" INDEX_SECOND_PATIENT.getOneBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"guohuang88"},"content":" assertEquals(expected, result.getFeedbackToUser());","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"guohuang88"},"content":" Set\u003cEvent\u003e expectedEvents \u003d new HashSet\u003c\u003e(editedPatient.getEvents());","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"guohuang88"},"content":" assertEquals(editedPatient.getEvents(), expectedEvents);","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"guohuang88"},"content":" public void execute_editEventWithInvalidPatientIndex_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"guohuang88"},"content":" Index invalidPatientIndex \u003d Index.fromOneBased(model.getFilteredPatientList().size() + 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommand \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"guohuang88"},"content":" invalidPatientIndex, INDEX_FIRST_EVENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"guohuang88"},"content":" CommandException exception \u003d assertThrows(CommandException.class, () -\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"guohuang88"},"content":" editEventCommand.execute(model));","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"guohuang88"},"content":" assertEquals(MESSAGE_INVALID_PATIENT_DISPLAYED_INDEX, exception.getMessage());","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"guohuang88"},"content":" public void execute_editEventWithInvalidEventIndex_throwsCommandException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"guohuang88"},"content":" Index invalidEventIndex \u003d Index.fromOneBased(model.getFilteredPatientList().get(1)","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"guohuang88"},"content":" .getEvents().size() + 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommand \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_PATIENT, invalidEventIndex, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"guohuang88"},"content":" CommandException exception \u003d assertThrows(CommandException.class, () -\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"guohuang88"},"content":" editEventCommand.execute(model));","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"guohuang88"},"content":" assertEquals(MESSAGE_INVALID_EVENT_DISPLAYED_INDEX, exception.getMessage());","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"guohuang88"},"content":" public void execute_editEventToAnExistingEvent_success() throws CommandException {","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"guohuang88"},"content":" CommandResult result;","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"guohuang88"},"content":" String expected;","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"guohuang88"},"content":" Patient editedPatient;","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"guohuang88"},"content":" Set\u003cEvent\u003e expectedEvents;","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommand \u003d new EditEventCommand(INDEX_SECOND_PATIENT,","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_EVENT, validEvent);","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"guohuang88"},"content":" //Confirm basic edit event works","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"guohuang88"},"content":" result \u003d editEventCommand.execute(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"guohuang88"},"content":" editedPatient \u003d model.getFilteredPatientList().get(INDEX_SECOND_PATIENT.getZeroBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"guohuang88"},"content":" expected \u003d String.format(EditEventCommand.MESSAGE_SUCCESS, validEvent.name,","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_EVENT.getOneBased(), validEvent.date, editedPatient.getName(),","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"guohuang88"},"content":" INDEX_SECOND_PATIENT.getOneBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":136,"author":{"gitId":"guohuang88"},"content":" assertEquals(expected, result.getFeedbackToUser());","lastModifiedDate":"2024-03-23"},{"lineNumber":137,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":138,"author":{"gitId":"guohuang88"},"content":" expectedEvents \u003d new HashSet\u003c\u003e(editedPatient.getEvents());","lastModifiedDate":"2024-03-23"},{"lineNumber":139,"author":{"gitId":"guohuang88"},"content":" assertEquals(editedPatient.getEvents(), expectedEvents);","lastModifiedDate":"2024-03-23"},{"lineNumber":140,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":141,"author":{"gitId":"guohuang88"},"content":" //Test duplicate event using edit command","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"guohuang88"},"content":" result \u003d editEventCommand.execute(model);","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"guohuang88"},"content":" editedPatient \u003d model.getFilteredPatientList().get(INDEX_SECOND_PATIENT.getZeroBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"guohuang88"},"content":" expected \u003d String.format(EditEventCommand.MESSAGE_DUPLICATE, validEvent.name, validEvent.date,","lastModifiedDate":"2024-03-23"},{"lineNumber":146,"author":{"gitId":"guohuang88"},"content":" editedPatient.getName(), INDEX_SECOND_PATIENT.getOneBased());","lastModifiedDate":"2024-03-23"},{"lineNumber":147,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":148,"author":{"gitId":"guohuang88"},"content":" assertEquals(expected, result.getFeedbackToUser());","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":150,"author":{"gitId":"guohuang88"},"content":" expectedEvents \u003d new HashSet\u003c\u003e(editedPatient.getEvents());","lastModifiedDate":"2024-03-23"},{"lineNumber":151,"author":{"gitId":"guohuang88"},"content":" assertEquals(editedPatient.getEvents(), expectedEvents);","lastModifiedDate":"2024-03-23"},{"lineNumber":152,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":153,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":154,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"guohuang88"},"content":" public void equals_differentEventIndex_returnFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommandFirst \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_PATIENT, INDEX_FIRST_EVENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommandSecond \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_PATIENT, INDEX_SECOND_EVENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"guohuang88"},"content":" // Test same patient index, same event but different event index","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"guohuang88"},"content":" assertNotEquals(editEventCommandFirst, editEventCommandSecond);","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"guohuang88"},"content":" public void equals_differentPatientIndex_returnFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommandFirst \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_PATIENT, INDEX_THIRD_EVENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommandSecond \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"guohuang88"},"content":" INDEX_SECOND_PATIENT, INDEX_THIRD_EVENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"guohuang88"},"content":" // Test same event index, same event but different patient index","lastModifiedDate":"2024-03-18"},{"lineNumber":173,"author":{"gitId":"guohuang88"},"content":" assertNotEquals(editEventCommandFirst, editEventCommandSecond);","lastModifiedDate":"2024-03-18"},{"lineNumber":174,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":175,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"guohuang88"},"content":" public void equals_differentEvent_returnFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommandFirst \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":179,"author":{"gitId":"guohuang88"},"content":" INDEX_SECOND_PATIENT, INDEX_SECOND_EVENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":180,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommandSecond \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":181,"author":{"gitId":"guohuang88"},"content":" INDEX_SECOND_PATIENT, INDEX_SECOND_EVENT, secondValidEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":182,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommandThird \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":183,"author":{"gitId":"guohuang88"},"content":" INDEX_SECOND_PATIENT, INDEX_SECOND_EVENT, thirdValidEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":184,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":185,"author":{"gitId":"guohuang88"},"content":" // Test same patient index, same event index, same event date but different event name","lastModifiedDate":"2024-03-18"},{"lineNumber":186,"author":{"gitId":"guohuang88"},"content":" assertNotEquals(editEventCommandFirst, editEventCommandSecond);","lastModifiedDate":"2024-03-18"},{"lineNumber":187,"author":{"gitId":"guohuang88"},"content":" // Test same patient index, same event index, same event name but different event date","lastModifiedDate":"2024-03-18"},{"lineNumber":188,"author":{"gitId":"guohuang88"},"content":" assertNotEquals(editEventCommandFirst, editEventCommandThird);","lastModifiedDate":"2024-03-18"},{"lineNumber":189,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":192,"author":{"gitId":"guohuang88"},"content":" public void equals_differentInstance_returnFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommand \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_PATIENT, INDEX_FIRST_EVENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"guohuang88"},"content":" AddEventCommand addEventCommand \u003d new AddEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"guohuang88"},"content":" INDEX_FIRST_PATIENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"guohuang88"},"content":" assertNotEquals(editEventCommand, addEventCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"guohuang88"},"content":" public void equals_sameValues_returnTrue() {","lastModifiedDate":"2024-03-18"},{"lineNumber":202,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommandFirst \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"guohuang88"},"content":" INDEX_THIRD_PATIENT, INDEX_THIRD_EVENT, thirdValidEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":204,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommandSecond \u003d new EditEventCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":205,"author":{"gitId":"guohuang88"},"content":" INDEX_THIRD_PATIENT, INDEX_THIRD_EVENT, thirdValidEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":206,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":207,"author":{"gitId":"guohuang88"},"content":" // Test with the same object","lastModifiedDate":"2024-03-18"},{"lineNumber":208,"author":{"gitId":"guohuang88"},"content":" assertEquals(editEventCommandFirst, editEventCommandFirst);","lastModifiedDate":"2024-03-18"},{"lineNumber":209,"author":{"gitId":"guohuang88"},"content":" // Test with different object but same values","lastModifiedDate":"2024-03-18"},{"lineNumber":210,"author":{"gitId":"guohuang88"},"content":" assertEquals(editEventCommandFirst, editEventCommandSecond);","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":214,"author":{"gitId":"guohuang88"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-18"},{"lineNumber":215,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommand \u003d","lastModifiedDate":"2024-03-18"},{"lineNumber":216,"author":{"gitId":"guohuang88"},"content":" new EditEventCommand(INDEX_FIRST_PATIENT, INDEX_FIRST_EVENT, validEvent);","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":218,"author":{"gitId":"guohuang88"},"content":" String expected \u003d EditEventCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"guohuang88"},"content":" + \"{patientIndex\u003d\" + INDEX_FIRST_PATIENT","lastModifiedDate":"2024-03-18"},{"lineNumber":220,"author":{"gitId":"guohuang88"},"content":" + \", eventIndex\u003d\" + INDEX_FIRST_EVENT","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"guohuang88"},"content":" + \", eventToUpdate\u003d\" + validEvent + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":222,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":223,"author":{"gitId":"guohuang88"},"content":" assertEquals(editEventCommand.toString(), expected);","lastModifiedDate":"2024-03-18"},{"lineNumber":224,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":225,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":226,"author":{"gitId":"guohuang88"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"guohuang88":226}},{"path":"src/test/java/seedu/address/logic/commands/EditPatientDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_DATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_DATETIME;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FAMILY_CONDITION_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FOOD_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOBBY_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PREFERRED_NAME_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":"public class EditPatientDescriptorTest {","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":" EditPatientDescriptor descriptorWithSameValues \u003d new EditPatientDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":" EditPatientDescriptor editedAmy \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" new EditPatientDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" // different id -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withPatientHospitalId(VALID_ID_BOB).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" // different preferred name -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withPreferredName(VALID_PREFERRED_NAME_BOB).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" // different food preference -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withFoodPreference(VALID_FOOD_BOB).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":" // different family condition -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withFamilyCondition(VALID_FAMILY_CONDITION_BOB).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" // different hobby -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withHobby(VALID_HOBBY_BOB).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withEvent(VALID_EVENT_NAME,","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"SherisseTJW"},"content":" VALID_EVENT_DATE).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"SherisseTJW"},"content":" editedAmy \u003d new EditPatientDescriptorBuilder(DESC_AMY).withEvent(VALID_EVENT_NAME,","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"SherisseTJW"},"content":" VALID_EVENT_DATETIME).build();","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"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":"SherisseTJW"},"content":" EditPatientDescriptor editPatientDescriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"choowengyan"},"content":" String expected \u003d EditPatientDescriptor.class.getCanonicalName() + \"{patientHospitalId\u003d\"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"choowengyan"},"content":" + editPatientDescriptor.getPatientHospitalId().orElse(null) + \", name\u003d\"","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"choowengyan"},"content":" + editPatientDescriptor.getName().orElse(null) + \", preferredName\u003d\"","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"choowengyan"},"content":" + editPatientDescriptor.getPreferredName().orElse(null) + \", foodPreference\u003d\"","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"choowengyan"},"content":" + editPatientDescriptor.getFoodPreference().orElse(null) + \", familyCondition\u003d\"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"choowengyan"},"content":" + editPatientDescriptor.getFamilyCondition().orElse(null) + \", hobby\u003d\"","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"choowengyan"},"content":" + editPatientDescriptor.getHobby().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"SherisseTJW"},"content":" + editPatientDescriptor.getTags().orElse(null) + \", events\u003d\"","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"SherisseTJW"},"content":" + editPatientDescriptor.getEvents().orElse(null) + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" assertEquals(expected, editPatientDescriptor.toString());","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"SherisseTJW":17,"choowengyan":28,"NeoHW":4,"-":47}},{"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":"NeoHW"},"content":"import static seedu.address.logic.Messages.MESSAGE_PATIENT_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","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":"NeoHW"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" // different patient -\u003e returns false","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","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-12"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" public void execute_zeroKeywords_noPatientFound() {","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" String expectedMessage \u003d String.format(MESSAGE_PATIENT_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" expectedModel.updateFilteredPatientList(predicate);","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPatientList());","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"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":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"NeoHW":8,"-":70}},{"path":"src/test/java/seedu/address/logic/commands/FindTagsCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.Messages.MESSAGE_PATIENT_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalPatients.BENSON;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"guohuang88"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":"import java.util.List;","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":"public class FindTagsCommandTest {","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":" public void execute_zeroKeyword_noPatientFound() {","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":" String expectedMessage \u003d String.format(MESSAGE_PATIENT_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":" String userInput \u003d \" \";","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":" TagContainsKeywordsPredicate predicate \u003d new TagContainsKeywordsPredicate(","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":" Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":" FindTagsCommand command \u003d new FindTagsCommand(predicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":" expectedModel.updateFilteredPatientList(predicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPatientList());","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":" public void execute_oneKeyword_onePatientFound() {","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":" String expectedMessage \u003d String.format(MESSAGE_PATIENT_LISTED_OVERVIEW, 1);","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":" String userInput \u003d \"depression\";","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":" TagContainsKeywordsPredicate predicate \u003d new TagContainsKeywordsPredicate(","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"guohuang88"},"content":" Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"guohuang88"},"content":" FindTagsCommand command \u003d new FindTagsCommand(predicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"guohuang88"},"content":" expectedModel.updateFilteredPatientList(predicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"guohuang88"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"guohuang88"},"content":" assertEquals(Collections.singletonList(ALICE), model.getFilteredPatientList());","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"guohuang88"},"content":" public void execute_twoKeywords_twoPatientFound() {","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"guohuang88"},"content":" String expectedMessage \u003d String.format(MESSAGE_PATIENT_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":" String userInput \u003d \"depression diabetes\";","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"guohuang88"},"content":" TagContainsKeywordsPredicate predicate \u003d new TagContainsKeywordsPredicate(","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"guohuang88"},"content":" Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"guohuang88"},"content":" FindTagsCommand command \u003d new FindTagsCommand(predicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"guohuang88"},"content":" expectedModel.updateFilteredPatientList(predicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"guohuang88"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"guohuang88"},"content":" assertEquals(List.of(ALICE, BENSON), model.getFilteredPatientList());","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"guohuang88"},"content":" public void equalsTest() {","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"guohuang88"},"content":" TagContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"guohuang88"},"content":" new TagContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"guohuang88"},"content":" TagContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"guohuang88"},"content":" new TagContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"guohuang88"},"content":" FindTagsCommand findTagsCommandFirst \u003d new FindTagsCommand(firstPredicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"guohuang88"},"content":" FindTagsCommand findTagsCommandSecond \u003d new FindTagsCommand(secondPredicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"guohuang88"},"content":" // same object -\u003e equals","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"guohuang88"},"content":" assertEquals(findTagsCommandFirst, findTagsCommandFirst);","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"guohuang88"},"content":" // same values -\u003e equals","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"guohuang88"},"content":" FindTagsCommand findTagsCommandFirstDuplicate \u003d new FindTagsCommand(firstPredicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"guohuang88"},"content":" assertEquals(findTagsCommandFirst, findTagsCommandFirstDuplicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"guohuang88"},"content":" // null -\u003e not equals","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"guohuang88"},"content":" assertNotEquals(null, findTagsCommandFirst);","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"guohuang88"},"content":" // different tag -\u003e not equals","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"author":{"gitId":"guohuang88"},"content":" assertNotEquals(findTagsCommandFirst, findTagsCommandSecond);","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"guohuang88"},"content":" //different instance -\u003e not equals","lastModifiedDate":"2024-03-24"},{"lineNumber":90,"author":{"gitId":"guohuang88"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"guohuang88"},"content":" Collections.singletonList(\"first\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"guohuang88"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"guohuang88"},"content":" assertNotEquals(findTagsCommandFirst, findCommand);","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"guohuang88"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-24"},{"lineNumber":98,"author":{"gitId":"guohuang88"},"content":" TagContainsKeywordsPredicate predicate \u003d new TagContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":99,"author":{"gitId":"guohuang88"},"content":" FindTagsCommand findTagsCommand \u003d new FindTagsCommand(predicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":100,"author":{"gitId":"guohuang88"},"content":" String expected \u003d FindTagsCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-24"},{"lineNumber":101,"author":{"gitId":"guohuang88"},"content":" assertEquals(expected, findTagsCommand.toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":102,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":103,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":104,"author":{"gitId":"guohuang88"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"guohuang88":104}},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27"},{"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":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"NeoHW":1,"-":31}},{"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":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FAMILY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FAMILY_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FOOD_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FOOD_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOBBY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOBBY_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ID_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ID_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_FAMILY_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_FOOD_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_HOBBY_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ID_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PREFERRED_NAME_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.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":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREFERRED_NAME_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREFERRED_NAME_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_DIABETES;","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FAMILY_CONDITION_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FOOD_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOBBY_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PREFERRED_NAME_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DIABETES;","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FAMILY_CONDITION;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FOOD_PREFERENCE;","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOBBY;","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PID;","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PREFERRED_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.AMY;","lastModifiedDate":"2024-03-09"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.BOB;","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-08"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" Patient expectedPatient \u003d new PatientBuilder(BOB).withTags(VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":" + FOOD_DESC_BOB + FAMILY_DESC_BOB + HOBBY_DESC_BOB + TAG_DESC_DEPRESSION, new AddCommand(expectedPatient));","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":73,"author":{"gitId":"choowengyan"},"content":" Patient expectedPatientMultipleTags \u003d new PatientBuilder(BOB).withTags(VALID_TAG_DEPRESSION, VALID_TAG_DIABETES)","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":75,"author":{"gitId":"choowengyan"},"content":" assertParseSuccess(parser, ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES,","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" new AddCommand(expectedPatientMultipleTags));","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":" String validExpectedPatientString \u003d ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB + TAG_DESC_DIABETES;","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"choowengyan"},"content":" // multiple patient hospital ID","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_AMY + validExpectedPatientString,","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PID));","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPatientString,","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"choowengyan"},"content":" // multiple preferred names","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, PREFERRED_NAME_DESC_AMY + validExpectedPatientString,","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PREFERRED_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"choowengyan"},"content":" // multiple food preference","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, FOOD_DESC_AMY + validExpectedPatientString,","lastModifiedDate":"2024-03-14"},{"lineNumber":99,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FOOD_PREFERENCE));","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"choowengyan"},"content":" // multiple family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, FAMILY_DESC_AMY + validExpectedPatientString,","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FAMILY_CONDITION));","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"choowengyan"},"content":" // multiple hobbies","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, HOBBY_DESC_AMY + validExpectedPatientString,","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_HOBBY));","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, validExpectedPatientString + ID_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-03-15"},{"lineNumber":111,"author":{"gitId":"choowengyan"},"content":" + PREFERRED_NAME_DESC_AMY + FOOD_DESC_AMY + FAMILY_DESC_AMY + HOBBY_DESC_AMY","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"choowengyan"},"content":" + validExpectedPatientString, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PID, PREFIX_NAME,","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"choowengyan"},"content":" PREFIX_PREFERRED_NAME, PREFIX_FOOD_PREFERENCE, PREFIX_FAMILY_CONDITION, PREFIX_HOBBY));","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"choowengyan"},"content":" // invalid patient hospital ID","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, INVALID_ID_DESC + validExpectedPatientString,","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PID));","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPatientString,","lastModifiedDate":"2024-03-09"},{"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":"choowengyan"},"content":" // invalid preferred name","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, INVALID_PREFERRED_NAME_DESC + validExpectedPatientString,","lastModifiedDate":"2024-03-14"},{"lineNumber":127,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PREFERRED_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"choowengyan"},"content":" // invalid food preference","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, INVALID_FOOD_DESC + validExpectedPatientString,","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FOOD_PREFERENCE));","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"choowengyan"},"content":" // invalid family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":134,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, INVALID_FAMILY_DESC + validExpectedPatientString,","lastModifiedDate":"2024-03-14"},{"lineNumber":135,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FAMILY_CONDITION));","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":137,"author":{"gitId":"choowengyan"},"content":" // invalid hobby","lastModifiedDate":"2024-03-14"},{"lineNumber":138,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, INVALID_HOBBY_DESC + validExpectedPatientString,","lastModifiedDate":"2024-03-14"},{"lineNumber":139,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_HOBBY));","lastModifiedDate":"2024-03-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"choowengyan"},"content":" // invalid patient hospital ID","lastModifiedDate":"2024-03-14"},{"lineNumber":144,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, validExpectedPatientString + INVALID_ID_DESC,","lastModifiedDate":"2024-03-14"},{"lineNumber":145,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PID));","lastModifiedDate":"2024-03-14"},{"lineNumber":146,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":" assertParseFailure(parser, validExpectedPatientString + INVALID_NAME_DESC,","lastModifiedDate":"2024-03-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"choowengyan"},"content":" // invalid preferred name","lastModifiedDate":"2024-03-14"},{"lineNumber":152,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, validExpectedPatientString + INVALID_PREFERRED_NAME_DESC,","lastModifiedDate":"2024-03-14"},{"lineNumber":153,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PREFERRED_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":155,"author":{"gitId":"choowengyan"},"content":" // invalid food preference","lastModifiedDate":"2024-03-14"},{"lineNumber":156,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, validExpectedPatientString + INVALID_FOOD_DESC,","lastModifiedDate":"2024-03-14"},{"lineNumber":157,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FOOD_PREFERENCE));","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"choowengyan"},"content":" // invalid family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":160,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, validExpectedPatientString + INVALID_FAMILY_DESC,","lastModifiedDate":"2024-03-14"},{"lineNumber":161,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_FAMILY_CONDITION));","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":163,"author":{"gitId":"choowengyan"},"content":" // invalid hobby","lastModifiedDate":"2024-03-14"},{"lineNumber":164,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, validExpectedPatientString + INVALID_HOBBY_DESC,","lastModifiedDate":"2024-03-14"},{"lineNumber":165,"author":{"gitId":"choowengyan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_HOBBY));","lastModifiedDate":"2024-03-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"NeoHW"},"content":" Patient expectedPatient \u003d new PatientBuilder(AMY).withTags().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":172,"author":{"gitId":"choowengyan"},"content":" assertParseSuccess(parser, ID_DESC_AMY + NAME_DESC_AMY + PREFERRED_NAME_DESC_AMY + FOOD_DESC_AMY","lastModifiedDate":"2024-03-14"},{"lineNumber":173,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_AMY + HOBBY_DESC_AMY, new AddCommand(expectedPatient));","lastModifiedDate":"2024-03-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"choowengyan"},"content":" // missing patient hospital ID prefix","lastModifiedDate":"2024-03-14"},{"lineNumber":181,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, VALID_ID_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":182,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB,","lastModifiedDate":"2024-03-14"},{"lineNumber":183,"author":{"gitId":"choowengyan"},"content":" expectedMessage);","lastModifiedDate":"2024-03-14"},{"lineNumber":184,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + VALID_NAME_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":187,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB,","lastModifiedDate":"2024-03-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2024-03-14"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":190,"author":{"gitId":"choowengyan"},"content":" // missing preferred name prefix","lastModifiedDate":"2024-03-14"},{"lineNumber":191,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + NAME_DESC_BOB + VALID_PREFERRED_NAME_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":192,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB,","lastModifiedDate":"2024-03-14"},{"lineNumber":193,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"choowengyan"},"content":" // missing food preference prefix","lastModifiedDate":"2024-03-14"},{"lineNumber":196,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + VALID_FOOD_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":197,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB,","lastModifiedDate":"2024-03-14"},{"lineNumber":198,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":200,"author":{"gitId":"choowengyan"},"content":" // missing family condition prefix","lastModifiedDate":"2024-03-14"},{"lineNumber":201,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":202,"author":{"gitId":"choowengyan"},"content":" + VALID_FAMILY_CONDITION_BOB + HOBBY_DESC_BOB,","lastModifiedDate":"2024-03-14"},{"lineNumber":203,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":205,"author":{"gitId":"choowengyan"},"content":" // missing hobby prefix","lastModifiedDate":"2024-03-14"},{"lineNumber":206,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":207,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + VALID_HOBBY_BOB,","lastModifiedDate":"2024-03-14"},{"lineNumber":208,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":211,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, VALID_ID_BOB + VALID_NAME_BOB + VALID_PREFERRED_NAME_BOB + VALID_FOOD_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":212,"author":{"gitId":"choowengyan"},"content":" + VALID_FAMILY_CONDITION_BOB + VALID_HOBBY_BOB,","lastModifiedDate":"2024-03-14"},{"lineNumber":213,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":216,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":217,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":218,"author":{"gitId":"choowengyan"},"content":" // invalid patient hospital ID","lastModifiedDate":"2024-03-14"},{"lineNumber":219,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, INVALID_ID_DESC + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":220,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES,","lastModifiedDate":"2024-03-14"},{"lineNumber":221,"author":{"gitId":"choowengyan"},"content":" PatientHospitalId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":222,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":223,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":224,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + INVALID_NAME_DESC + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":225,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":226,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":227,"author":{"gitId":"choowengyan"},"content":" // invalid preferred name","lastModifiedDate":"2024-03-14"},{"lineNumber":228,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + NAME_DESC_BOB + INVALID_PREFERRED_NAME_DESC + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":229,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES,","lastModifiedDate":"2024-03-14"},{"lineNumber":230,"author":{"gitId":"choowengyan"},"content":" PreferredName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":232,"author":{"gitId":"choowengyan"},"content":" // invalid food preference","lastModifiedDate":"2024-03-14"},{"lineNumber":233,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + INVALID_FOOD_DESC","lastModifiedDate":"2024-03-14"},{"lineNumber":234,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES,","lastModifiedDate":"2024-03-14"},{"lineNumber":235,"author":{"gitId":"choowengyan"},"content":" FoodPreference.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":237,"author":{"gitId":"choowengyan"},"content":" // invalid family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":238,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":239,"author":{"gitId":"choowengyan"},"content":" + INVALID_FAMILY_DESC + HOBBY_DESC_BOB + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES,","lastModifiedDate":"2024-03-14"},{"lineNumber":240,"author":{"gitId":"choowengyan"},"content":" FamilyCondition.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":242,"author":{"gitId":"choowengyan"},"content":" // invalid hobby","lastModifiedDate":"2024-03-14"},{"lineNumber":243,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":244,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + INVALID_HOBBY_DESC + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES,","lastModifiedDate":"2024-03-14"},{"lineNumber":245,"author":{"gitId":"choowengyan"},"content":" Hobby.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":247,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":248,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":249,"author":{"gitId":"choowengyan"},"content":" + FAMILY_DESC_BOB + HOBBY_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_DIABETES, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":251,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":252,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, ID_DESC_BOB + INVALID_NAME_DESC + PREFERRED_NAME_DESC_BOB + FOOD_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":253,"author":{"gitId":"choowengyan"},"content":" + INVALID_FAMILY_DESC + HOBBY_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + ID_DESC_BOB + NAME_DESC_BOB + PREFERRED_NAME_DESC_BOB","lastModifiedDate":"2024-03-14"},{"lineNumber":257,"author":{"gitId":"choowengyan"},"content":" + FOOD_DESC_BOB + FAMILY_DESC_BOB + HOBBY_DESC_BOB + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES,","lastModifiedDate":"2024-03-14"},{"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":{"choowengyan":147,"NeoHW":10,"-":103}},{"path":"src/test/java/seedu/address/logic/parser/AddEventParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SherisseTJW"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EVENT_DESC_DATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EVENT_DESC_DATETIME;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EVENT_DESC;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_DATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_DATETIME;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.commands.AddEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"SherisseTJW"},"content":"public class AddEventParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":" private final AddEventParser parser \u003d new AddEventParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":" private final Event validDate \u003d new Event(VALID_EVENT_NAME, VALID_EVENT_DATE);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SherisseTJW"},"content":" private final Event validDateTime \u003d new Event(VALID_EVENT_NAME, VALID_EVENT_DATETIME);","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(VALID_EVENT_DATE));","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\" + INVALID_EVENT_DESC));","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + VALID_EVENT_DATE));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + VALID_EVENT_DATETIME));","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + INVALID_EVENT_DESC));","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":" public void parse_validArgs_returnsAddEventCommand() throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" Index validIndex \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":" String userInput;","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand expected;","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand command;","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" userInput \u003d validIndex.getOneBased() + EVENT_DESC_DATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":" expected \u003d new AddEventCommand(validIndex, validDate);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":" command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":" assertEquals(expected, command);","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" userInput \u003d validIndex.getOneBased() + EVENT_DESC_DATETIME;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":" expected \u003d new AddEventCommand(validIndex, validDateTime);","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":" command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"SherisseTJW"},"content":" assertEquals(expected, command);","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"SherisseTJW"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"SherisseTJW":54}},{"path":"src/test/java/seedu/address/logic/parser/AddTagsCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-11"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-11"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-11"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-11"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_DEPRESSION;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_DIABETES;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DIABETES;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-11"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-11"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.AddTagsCommand;","lastModifiedDate":"2024-03-11"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-11"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-11"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"public class AddTagsCommandParserTest {","lastModifiedDate":"2024-03-11"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" private final AddTagsCommandParser parser \u003d new AddTagsCommandParser();","lastModifiedDate":"2024-03-11"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" public void parse_validArgs_returnsAddTagsCommand() throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_DESC_DEPRESSION;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" AddTagsCommand expectedCommand \u003d new AddTagsCommand(targetIndex, Set.of(new Tag(VALID_TAG_DEPRESSION)));","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-11"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" public void parse_validDifferentCasesArgs_returnsAddTagsCommand() throws ParseException {","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" String userInput \u003d targetIndex.getOneBased() + \" t/ fall risk t/ FALL RISK t/ FaLl RiSk\";","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand expectedCommand \u003d new AddTagsCommand(targetIndex, Set.of(new Tag(\"fall risk\")));","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" public void parse_validDifferentNumOfSpacesArgs_returnsAddTagsCommand() throws ParseException {","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" String userInput \u003d targetIndex.getOneBased() + \" t/ fall risk t/ fall risk t/ FaLl RiSk\";","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand expectedCommand \u003d new AddTagsCommand(targetIndex, Set.of(new Tag(\"fall risk\")));","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" public void parse_validArgsMultipleTags_returnsAddTagsCommand() throws ParseException {","lastModifiedDate":"2024-03-11"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-11"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES;","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand expectedCommand \u003d new AddTagsCommand(targetIndex,","lastModifiedDate":"2024-03-11"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":" Set.of(new Tag(VALID_TAG_DEPRESSION), new Tag(VALID_TAG_DIABETES)));","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-11"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-11"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-11"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-11"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" // Empty index","lastModifiedDate":"2024-03-11"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" // Invalid tag","lastModifiedDate":"2024-03-11"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\" + INVALID_TAG_DESC));","lastModifiedDate":"2024-03-11"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" // Missing index","lastModifiedDate":"2024-03-11"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(TAG_DESC_DEPRESSION));","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" // Empty or missing tags","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\"));","lastModifiedDate":"2024-03-11"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" // Only Whitespace tags","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1 \"));","lastModifiedDate":"2024-03-11"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" // Mixed invalid and valid tags","lastModifiedDate":"2024-03-11"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\" + INVALID_TAG_DESC","lastModifiedDate":"2024-03-11"},{"lineNumber":86,"author":{"gitId":"choowengyan"},"content":" + TAG_DESC_DEPRESSION));","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" // Multiple invalid tags","lastModifiedDate":"2024-03-11"},{"lineNumber":89,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\" + INVALID_TAG_DESC","lastModifiedDate":"2024-03-11"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" + INVALID_TAG_DESC));","lastModifiedDate":"2024-03-11"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" // Invalid index","lastModifiedDate":"2024-03-11"},{"lineNumber":93,"author":{"gitId":"choowengyan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"a\" + TAG_DESC_DEPRESSION));","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-11"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":" // Invalid index followed by valid tag","lastModifiedDate":"2024-03-11"},{"lineNumber":96,"author":{"gitId":"choowengyan"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"a\" + TAG_DESC_DEPRESSION));","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-11"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"choowengyan":12,"NeoHW":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":"SherisseTJW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.commands.AddEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.AddTagsCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.commands.FindTagsCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.PatientUtil;","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" Patient patient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PatientUtil.getAddCommand(patient));","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" assertEquals(new AddCommand(patient), command);","lastModifiedDate":"2024-03-08"},{"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_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" // this means that \"clear 123\" also works","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","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_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PATIENT.getOneBased());","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PATIENT), command);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" Patient patient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder(patient).build();","lastModifiedDate":"2024-03-11"},{"lineNumber":72,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":" + INDEX_FIRST_PATIENT.getOneBased() + \" \" + PatientUtil.getEditPatientDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PATIENT, descriptor), command);","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" public void parseCommand_addTags() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" String args \u003d \"1 \" + PREFIX_TAG + \"tag1 \" + PREFIX_TAG + \"tag2 \" + PREFIX_TAG + \"tag3\";","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand command \u003d (AddTagsCommand) parser.parseCommand(","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" AddTagsCommand.COMMAND_WORD + \" \" + args);","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e expectedTags \u003d new HashSet\u003c\u003e(Arrays.asList(new Tag(\"tag1\"), new Tag(\"tag2\"), new Tag(\"tag3\")));","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":" assertEquals(new AddTagsCommand(INDEX_FIRST_PATIENT, expectedTags), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"guohuang88"},"content":" public void parseCommand_findTags() throws Exception {","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"guohuang88"},"content":" List\u003cString\u003e keywords \u003d List.of(\"diabetes\", \"depression\", \"wheelchair\");","lastModifiedDate":"2024-03-24"},{"lineNumber":90,"author":{"gitId":"guohuang88"},"content":" FindTagsCommand command \u003d (FindTagsCommand) parser.parseCommand(","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"guohuang88"},"content":" FindTagsCommand.COMMAND_WORD + \" \" + String.join(\" \", keywords));","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"guohuang88"},"content":" assertEquals(new FindTagsCommand(new TagContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"SherisseTJW"},"content":" public void parseCommand_addEvent() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"SherisseTJW"},"content":" String name \u003d \"Birthday\";","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" String date \u003d \"20-01-2022\";","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"SherisseTJW"},"content":" String args \u003d \"1 \" + PREFIX_NAME + name + \" \" + PREFIX_DATETIME + date;","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand command \u003d (AddEventCommand) parser.parseCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"SherisseTJW"},"content":" AddEventCommand.COMMAND_WORD + \" \" + args);","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"SherisseTJW"},"content":" assertEquals(new AddEventCommand(INDEX_FIRST_PATIENT, new Event(name, date)), command);","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"NeoHW"},"content":" // this means that \"exit 123\" also works","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","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_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":117,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"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_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":124,"author":{"gitId":"NeoHW"},"content":" // this means that \"help 123\" also works","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","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":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":131,"author":{"gitId":"NeoHW"},"content":" // this means that \"list 123\" also works","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseCommand_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":{"guohuang88":10,"SherisseTJW":13,"NeoHW":35,"-":87}},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_PATIENT));","lastModifiedDate":"2024-03-09"},{"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":"choowengyan"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"choowengyan":2,"NeoHW":2,"-":29}},{"path":"src/test/java/seedu/address/logic/parser/DeleteEventParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ZhiWei1010"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EVENT;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"ZhiWei1010"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"ZhiWei1010"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.logic.commands.DeleteEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":"public class DeleteEventParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":" private final DeleteEventCommandParser parser \u003d new DeleteEventCommandParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ZhiWei1010"},"content":" private final Index validPatientIndex \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"ZhiWei1010"},"content":" private final Index validEventIndex \u003d INDEX_FIRST_EVENT;","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"ZhiWei1010"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"ZhiWei1010"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"ZhiWei1010"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"ZhiWei1010"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\" + \" \"));","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"ZhiWei1010"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + \"1\"));","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"ZhiWei1010"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + \" \"));","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"ZhiWei1010"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(validPatientIndex + \" \"));","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"ZhiWei1010"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\" \" + validEventIndex));","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":" public void parse_validArgs_returnsDeleteEventCommand() throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"ZhiWei1010"},"content":" String validUserInput;","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":" DeleteEventCommand expected;","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"ZhiWei1010"},"content":" validUserInput \u003d validPatientIndex.getOneBased() + \" e/\" + validEventIndex.getOneBased();","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" expected \u003d new DeleteEventCommand(validPatientIndex, validEventIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"ZhiWei1010"},"content":" assertParseSuccess(parser, validUserInput, expected);","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"ZhiWei1010"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":" public void parse_invalidArgs_returnsDeleteEventommand() {","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"ZhiWei1010"},"content":" String invalidUserInput;","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"ZhiWei1010"},"content":" invalidUserInput \u003d \"-1\" + \" e/\" + validEventIndex.getZeroBased();","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":" String expected \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteEventCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"ZhiWei1010"},"content":" assertParseFailure(parser, invalidUserInput, expected);","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"ZhiWei1010"},"content":" invalidUserInput \u003d validPatientIndex.getZeroBased() + \"d/\" + validEventIndex.getZeroBased();","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":" expected \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteEventCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"ZhiWei1010"},"content":" assertParseFailure(parser, invalidUserInput, expected);","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"ZhiWei1010"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"ZhiWei1010"},"content":" invalidUserInput \u003d validPatientIndex.getZeroBased() + \" e/\" + \"-1\";","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"SherisseTJW"},"content":" expected \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteEventCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"ZhiWei1010"},"content":" assertParseFailure(parser, invalidUserInput, expected);","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"ZhiWei1010"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"ZhiWei1010"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"SherisseTJW":10,"ZhiWei1010":48}},{"path":"src/test/java/seedu/address/logic/parser/DeleteTagsCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_DEPRESSION;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_DIABETES;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DIABETES;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.commands.DeleteTagsCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"public class DeleteTagsCommandParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" private final DeleteTagsCommandParser parser \u003d new DeleteTagsCommandParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" public void parse_validArgs_returnsDeleteTagsCommand() throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_DESC_DEPRESSION;","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand expectedCommand \u003d new DeleteTagsCommand(targetIndex, Set.of(new Tag(VALID_TAG_DEPRESSION)));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" public void parse_validArgsMultipleTags_returnsDeleteTagsCommand() throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES;","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand expectedCommand \u003d new DeleteTagsCommand(targetIndex,","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" Set.of(new Tag(VALID_TAG_DEPRESSION), new Tag(VALID_TAG_DIABETES)));","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" public void parse_validArgsMultipleSameTags_returnsDeleteTagsCommand() throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_DESC_DEPRESSION + TAG_DESC_DEPRESSION;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand expectedCommand \u003d new DeleteTagsCommand(targetIndex, Set.of(new Tag(VALID_TAG_DEPRESSION)));","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" DeleteTagsCommand command \u003d parser.parse(userInput);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedCommand, command);","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" // Empty index","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" // Invalid tag","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\" + INVALID_TAG_DESC));","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" // Missing index","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(TAG_DESC_DEPRESSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" // Empty or missing tags","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" // Only Whitespace tags","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1 \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" // Mixed invalid and valid tags","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\" + INVALID_TAG_DESC","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" + TAG_DESC_DEPRESSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" // Multiple invalid tags","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"1\" + INVALID_TAG_DESC","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" + INVALID_TAG_DESC));","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" // Invalid index","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"a\" + TAG_DESC_DEPRESSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" // Invalid index followed by valid tag","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(\"a\" + TAG_DESC_DEPRESSION));","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"NeoHW":88}},{"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":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FAMILY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FAMILY_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FOOD_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HOBBY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ID_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ID_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_FAMILY_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_FOOD_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_HOBBY_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ID_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PREFERRED_NAME_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREFERRED_NAME_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_DIABETES;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FAMILY_CONDITION_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FAMILY_CONDITION_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FOOD_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOBBY_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PREFERRED_NAME_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DIABETES;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PATIENT;","lastModifiedDate":"2024-03-09"},{"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.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.EditPatientDescriptorBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":53,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06"},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06"},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":89,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, \"1\" + INVALID_ID_DESC, PatientHospitalId.MESSAGE_CONSTRAINTS); // invalid id","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22"},{"lineNumber":91,"author":{"gitId":"choowengyan"},"content":" // invalid preferred name","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, \"1\" + INVALID_PREFERRED_NAME_DESC, PreferredName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"choowengyan"},"content":" // invalid food preference","lastModifiedDate":"2024-03-14"},{"lineNumber":94,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, \"1\" + INVALID_FOOD_DESC, FoodPreference.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"choowengyan"},"content":" // invalid family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, \"1\" + INVALID_FAMILY_DESC, FamilyCondition.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, \"1\" + INVALID_HOBBY_DESC, Hobby.MESSAGE_CONSTRAINTS); // invalid hobby","lastModifiedDate":"2024-03-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Patient} being edited,","lastModifiedDate":"2024-03-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES + TAG_EMPTY,","lastModifiedDate":"2024-03-14"},{"lineNumber":103,"author":{"gitId":"choowengyan"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":104,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_DEPRESSION + TAG_EMPTY + TAG_DESC_DIABETES,","lastModifiedDate":"2024-03-14"},{"lineNumber":105,"author":{"gitId":"choowengyan"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":106,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES,","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"choowengyan"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"choowengyan"},"content":" assertParseFailure(parser, \"1\" + INVALID_ID_DESC + INVALID_NAME_DESC + INVALID_PREFERRED_NAME_DESC","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"choowengyan"},"content":" + VALID_FOOD_AMY + VALID_FAMILY_CONDITION_AMY + VALID_HOBBY_AMY, PatientHospitalId.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":116,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_SECOND_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":117,"author":{"gitId":"choowengyan"},"content":" String userInput \u003d targetIndex.getOneBased() + ID_DESC_AMY + NAME_DESC_AMY + TAG_DESC_DEPRESSION","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"choowengyan"},"content":" + PREFERRED_NAME_DESC_AMY + FOOD_DESC_AMY + FAMILY_DESC_AMY + HOBBY_DESC_AMY + TAG_DESC_DIABETES;","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":120,"author":{"gitId":"choowengyan"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"choowengyan"},"content":" .withPatientHospitalId(VALID_ID_AMY).withName(VALID_NAME_AMY).withPreferredName(VALID_PREFERRED_NAME_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"choowengyan"},"content":" .withFoodPreference(VALID_FOOD_AMY).withFamilyCondition(VALID_FAMILY_CONDITION_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":123,"author":{"gitId":"choowengyan"},"content":" .withHobby(VALID_HOBBY_AMY).withTags(VALID_TAG_DIABETES, VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"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":"NeoHW"},"content":" Index targetIndex \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":132,"author":{"gitId":"choowengyan"},"content":" String userInput \u003d targetIndex.getOneBased() + FAMILY_DESC_BOB + HOBBY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"choowengyan"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder()","lastModifiedDate":"2024-03-17"},{"lineNumber":135,"author":{"gitId":"choowengyan"},"content":" .withFamilyCondition(VALID_FAMILY_CONDITION_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":136,"author":{"gitId":"choowengyan"},"content":" .withHobby(VALID_HOBBY_AMY).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_THIRD_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":146,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":147,"author":{"gitId":"SherisseTJW"},"content":" EditPatientDescriptor descriptor \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"NeoHW"},"content":" new EditPatientDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":149,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":152,"author":{"gitId":"choowengyan"},"content":" // preferred name","lastModifiedDate":"2024-03-14"},{"lineNumber":153,"author":{"gitId":"choowengyan"},"content":" userInput \u003d targetIndex.getOneBased() + PREFERRED_NAME_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":154,"author":{"gitId":"choowengyan"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withPreferredName(VALID_PREFERRED_NAME_AMY).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":155,"author":{"gitId":"choowengyan"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-03-14"},{"lineNumber":156,"author":{"gitId":"choowengyan"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-14"},{"lineNumber":157,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":158,"author":{"gitId":"choowengyan"},"content":" // food preference","lastModifiedDate":"2024-03-14"},{"lineNumber":159,"author":{"gitId":"choowengyan"},"content":" userInput \u003d targetIndex.getOneBased() + FOOD_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":160,"author":{"gitId":"choowengyan"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withFoodPreference(VALID_FOOD_AMY).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"choowengyan"},"content":" // family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":165,"author":{"gitId":"choowengyan"},"content":" userInput \u003d targetIndex.getOneBased() + FAMILY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":166,"author":{"gitId":"choowengyan"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withFamilyCondition(VALID_FAMILY_CONDITION_AMY).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":170,"author":{"gitId":"choowengyan"},"content":" // hobby","lastModifiedDate":"2024-03-14"},{"lineNumber":171,"author":{"gitId":"choowengyan"},"content":" userInput \u003d targetIndex.getOneBased() + HOBBY_DESC_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":172,"author":{"gitId":"choowengyan"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withHobby(VALID_HOBBY_AMY).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":176,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04"},{"lineNumber":177,"author":{"gitId":"choowengyan"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":178,"author":{"gitId":"choowengyan"},"content":" descriptor \u003d new EditPatientDescriptorBuilder().withTags(VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":179,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":185,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":186,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":189,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":190,"author":{"gitId":"choowengyan"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_ID_DESC + ID_DESC_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":192,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":193,"author":{"gitId":"choowengyan"},"content":" userInput \u003d targetIndex.getOneBased() + ID_DESC_BOB + INVALID_ID_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":195,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":196,"author":{"gitId":"choowengyan"},"content":" userInput \u003d targetIndex.getOneBased() + ID_DESC_AMY + TAG_DESC_DIABETES + ID_DESC_AMY + TAG_DESC_DIABETES","lastModifiedDate":"2024-03-14"},{"lineNumber":197,"author":{"gitId":"choowengyan"},"content":" + ID_DESC_BOB + TAG_DESC_DEPRESSION + TAG_DESC_DIABETES;","lastModifiedDate":"2024-03-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":"choowengyan"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_ID_DESC + INVALID_ID_DESC;","lastModifiedDate":"2024-03-14"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":203,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":204,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":205,"author":{"gitId":"NeoHW"},"content":" Index targetIndex \u003d INDEX_THIRD_PATIENT;","lastModifiedDate":"2024-03-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":208,"author":{"gitId":"SherisseTJW"},"content":" EditPatientDescriptor descriptor \u003d new EditPatientDescriptorBuilder().withTags().build();","lastModifiedDate":"2024-03-13"},{"lineNumber":209,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":211,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"SherisseTJW":3,"choowengyan":75,"NeoHW":12,"-":123}},{"path":"src/test/java/seedu/address/logic/parser/EditEventCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_DATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_DATETIME;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EVENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_EVENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.commands.EditEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":"public class EditEventCommandParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":" private final EditEventCommandParser editEventCommandParser \u003d new EditEventCommandParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":" private final Event validDate \u003d new Event(VALID_EVENT_NAME, VALID_EVENT_DATE);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":" assertThrows(ParseException.class, () -\u003e editEventCommandParser.parse(\"\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":" assertThrows(ParseException.class, () -\u003e editEventCommandParser.parse(\"1\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":" assertThrows(ParseException.class, () -\u003e editEventCommandParser.parse(VALID_EVENT_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":" assertThrows(ParseException.class, () -\u003e editEventCommandParser.parse(VALID_EVENT_DATE));","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":" assertThrows(ParseException.class, () -\u003e editEventCommandParser.parse(\"1\"","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":" + PREFIX_EVENT + \"1\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":" assertThrows(ParseException.class, () -\u003e editEventCommandParser.parse(\"1 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":" + PREFIX_EVENT + \" 1 \" + PREFIX_NAME + VALID_EVENT_NAME));","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":" assertThrows(ParseException.class, () -\u003e editEventCommandParser.parse(\"-1 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":" + PREFIX_EVENT + \" 1 \" + PREFIX_NAME + VALID_EVENT_NAME + \" \" + PREFIX_DATETIME","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":" + VALID_EVENT_DATE));","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":" assertThrows(ParseException.class, () -\u003e editEventCommandParser.parse(\"1 \"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":" + PREFIX_EVENT + \" -1 \" + PREFIX_NAME + VALID_EVENT_NAME + \" \" + PREFIX_DATETIME","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":" + VALID_EVENT_DATE));","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":" public void parse_validArgs_returnEditEventCommand() {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":" String userInput;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":" EditEventCommand editEventCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"guohuang88"},"content":" userInput \u003d INDEX_FIRST_PATIENT.getOneBased() + \" e/\" + INDEX_FIRST_EVENT.getOneBased() + \" n/\"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"guohuang88"},"content":" + VALID_EVENT_NAME + \" d/\" + VALID_EVENT_DATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"guohuang88"},"content":" editEventCommand \u003d new EditEventCommand(INDEX_FIRST_PATIENT, INDEX_FIRST_EVENT, validDate);","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"guohuang88"},"content":" assertParseSuccess(editEventCommandParser, userInput, editEventCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"guohuang88"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"guohuang88":50}},{"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":"NeoHW"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-08"},{"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":{"NeoHW":1,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/FindTagsCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"guohuang88"},"content":"import seedu.address.logic.commands.FindTagsCommand;","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":"import seedu.address.model.patient.TagContainsKeywordsPredicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":"public class FindTagsCommandParserTest {","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":" private FindTagsCommandParser parser \u003d new FindTagsCommandParser();","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindTagsCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":" public void parse_validArgs_returnsFindTagsCommand() {","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":" FindTagsCommand expectedFindTagsCommand \u003d","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":" new FindTagsCommand(new TagContainsKeywordsPredicate(Arrays.asList(\"depression\", \"diabetes\")));","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":" assertParseSuccess(parser, \"depression diabetes\", expectedFindTagsCommand);","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":" assertParseSuccess(parser, \" \\n depression \\n \\t diabetes \\t\", expectedFindTagsCommand);","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"guohuang88":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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PATIENT;","lastModifiedDate":"2024-03-09"},{"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":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" private static final String INVALID_ID \u003d \"a3\";","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_NAME \u003d \"R@chel Lim Zhao\";","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_PREFERRED_NAME \u003d \"R@chel\";","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_FOOD_PREFERENCE \u003d \" \";","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_FAMILY_CONDITION \u003d \" \";","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_HOBBY \u003d \" \";","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_ID \u003d \"12344\";","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_NAME \u003d \"Rachel Lim Zhao\";","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_PREFERRED_NAME \u003d \"Rachel\";","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_FOOD_PREFERENCE \u003d \"Hor Fun\";","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_FAMILY_CONDITION \u003d \"Facing financial difficulty\";","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_HOBBY \u003d \"Singing\";","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_TAG_1 \u003d \"diabetes\";","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" private static final String VALID_TAG_2 \u003d \"high cholesterol\";","lastModifiedDate":"2024-03-22"},{"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":"NeoHW"},"content":" assertEquals(INDEX_FIRST_PATIENT, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" assertEquals(INDEX_FIRST_PATIENT, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" public void parsePatientHospitalId_invalidInput_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"102 a\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":" public void parsePatientHospitalId_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePatientHospitalId((String) null));","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":" public void parsePatientHospitalId_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"choowengyan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePatientHospitalId(INVALID_ID));","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"choowengyan"},"content":" public void parseHospitalPatientId_validValueWithoutWhitespace_returnsId() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"choowengyan"},"content":" PatientHospitalId expectedId \u003d new PatientHospitalId(VALID_ID);","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedId, ParserUtil.parsePatientHospitalId(VALID_ID));","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"choowengyan"},"content":" public void parseHospitalPatientId_validValueWithWhitespace_returnsTrimmedId() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"choowengyan"},"content":" String idWithWhitespace \u003d WHITESPACE + VALID_ID + WHITESPACE;","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"choowengyan"},"content":" PatientHospitalId expectedId \u003d new PatientHospitalId(VALID_ID);","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedId, ParserUtil.parsePatientHospitalId(idWithWhitespace));","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","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 parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","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 parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":111,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":112,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"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":"choowengyan"},"content":" public void parsePreferredName_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePreferredName((String) null));","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"choowengyan"},"content":" public void parsePreferredName_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":123,"author":{"gitId":"choowengyan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePreferredName(INVALID_PREFERRED_NAME));","lastModifiedDate":"2024-03-14"},{"lineNumber":124,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":125,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":126,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":127,"author":{"gitId":"choowengyan"},"content":" public void parsePreferredName_validValueWithoutWhitespace_returnsPreferredName() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":128,"author":{"gitId":"choowengyan"},"content":" PreferredName expectedPreferredName \u003d new PreferredName(VALID_PREFERRED_NAME);","lastModifiedDate":"2024-03-14"},{"lineNumber":129,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedPreferredName, ParserUtil.parsePreferredName(VALID_PREFERRED_NAME));","lastModifiedDate":"2024-03-14"},{"lineNumber":130,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":131,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":132,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"choowengyan"},"content":" public void parsePreferredName_validValueWithWhitespace_returnsTrimmedPreferredName() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":134,"author":{"gitId":"choowengyan"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_PREFERRED_NAME + WHITESPACE;","lastModifiedDate":"2024-03-14"},{"lineNumber":135,"author":{"gitId":"choowengyan"},"content":" PreferredName expectedPreferredName \u003d new PreferredName(VALID_PREFERRED_NAME);","lastModifiedDate":"2024-03-14"},{"lineNumber":136,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedPreferredName, ParserUtil.parsePreferredName(nameWithWhitespace));","lastModifiedDate":"2024-03-14"},{"lineNumber":137,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":138,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":139,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":140,"author":{"gitId":"choowengyan"},"content":" public void parseFoodPreference_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":141,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseFoodPreference((String) null));","lastModifiedDate":"2024-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":"choowengyan"},"content":" public void parseFoodPreference_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":146,"author":{"gitId":"choowengyan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseFoodPreference(INVALID_FOOD_PREFERENCE));","lastModifiedDate":"2024-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":"choowengyan"},"content":" public void parseFoodPreference_validValueWithoutWhitespace_returnsFoodPreference() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":151,"author":{"gitId":"choowengyan"},"content":" FoodPreference expectedFoodPreference \u003d new FoodPreference(VALID_FOOD_PREFERENCE);","lastModifiedDate":"2024-03-14"},{"lineNumber":152,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedFoodPreference, ParserUtil.parseFoodPreference(VALID_FOOD_PREFERENCE));","lastModifiedDate":"2024-03-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":156,"author":{"gitId":"choowengyan"},"content":" public void parseFoodPreference_validValueWithWhitespace_returnsTrimmedFoodPreference() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":157,"author":{"gitId":"choowengyan"},"content":" String foodPreferenceWithWhitespace \u003d WHITESPACE + VALID_FOOD_PREFERENCE + WHITESPACE;","lastModifiedDate":"2024-03-14"},{"lineNumber":158,"author":{"gitId":"choowengyan"},"content":" FoodPreference expectedFoodPreference \u003d new FoodPreference(VALID_FOOD_PREFERENCE);","lastModifiedDate":"2024-03-14"},{"lineNumber":159,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedFoodPreference, ParserUtil.parseFoodPreference(foodPreferenceWithWhitespace));","lastModifiedDate":"2024-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":"choowengyan"},"content":" public void parseFamilyCondition_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":164,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseFamilyCondition((String) null));","lastModifiedDate":"2024-03-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":168,"author":{"gitId":"choowengyan"},"content":" public void parseFamilyCondition_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":169,"author":{"gitId":"choowengyan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseFamilyCondition(INVALID_FAMILY_CONDITION));","lastModifiedDate":"2024-03-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":173,"author":{"gitId":"choowengyan"},"content":" public void parseFamilyCondition_validValueWithoutWhitespace_returnsFamilyCondition() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":174,"author":{"gitId":"choowengyan"},"content":" FamilyCondition expectedFamilyCondition \u003d new FamilyCondition(VALID_FAMILY_CONDITION);","lastModifiedDate":"2024-03-14"},{"lineNumber":175,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedFamilyCondition, ParserUtil.parseFamilyCondition(VALID_FAMILY_CONDITION));","lastModifiedDate":"2024-03-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":179,"author":{"gitId":"choowengyan"},"content":" public void parseFamilyCondition_validValueWithWhitespace_returnsTrimmedFamilyCondition() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":180,"author":{"gitId":"choowengyan"},"content":" String familyConditionWithWhitespace \u003d WHITESPACE + VALID_FAMILY_CONDITION + WHITESPACE;","lastModifiedDate":"2024-03-14"},{"lineNumber":181,"author":{"gitId":"choowengyan"},"content":" FamilyCondition expectedFamilyCondition \u003d new FamilyCondition(VALID_FAMILY_CONDITION);","lastModifiedDate":"2024-03-14"},{"lineNumber":182,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedFamilyCondition, ParserUtil.parseFamilyCondition(familyConditionWithWhitespace));","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" public void parseHobby_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":187,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseHobby((String) null));","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" public void parseHobby_invalidValue_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":192,"author":{"gitId":"choowengyan"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseHobby(INVALID_HOBBY));","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" public void parseHobby_validValueWithoutWhitespace_returnsHobby() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":197,"author":{"gitId":"choowengyan"},"content":" Hobby expectedHobby \u003d new Hobby(VALID_HOBBY);","lastModifiedDate":"2024-03-14"},{"lineNumber":198,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedHobby, ParserUtil.parseHobby(VALID_HOBBY));","lastModifiedDate":"2024-03-14"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":202,"author":{"gitId":"choowengyan"},"content":" public void parseHobby_validValueWithWhitespace_returnsTrimmedHobby() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":203,"author":{"gitId":"choowengyan"},"content":" String hobbyWithWhitespace \u003d WHITESPACE + VALID_HOBBY + WHITESPACE;","lastModifiedDate":"2024-03-14"},{"lineNumber":204,"author":{"gitId":"choowengyan"},"content":" Hobby expectedHobby \u003d new Hobby(VALID_HOBBY);","lastModifiedDate":"2024-03-14"},{"lineNumber":205,"author":{"gitId":"choowengyan"},"content":" assertEquals(expectedHobby, ParserUtil.parseHobby(hobbyWithWhitespace));","lastModifiedDate":"2024-03-14"},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":208,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":209,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":213,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":214,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":218,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":219,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":220,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":221,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30"},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":224,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":225,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":226,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":227,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30"},{"lineNumber":228,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":231,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":232,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":236,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","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_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":243,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":246,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":247,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22"},{"lineNumber":248,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22"},{"lineNumber":249,"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":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":251,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"choowengyan":100,"NeoHW":5,"-":148}},{"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":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.exceptions.DuplicatePatientException;","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" assertEquals(Collections.emptyList(), addressBook.getPatientList());","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void resetData_withDuplicatePatient_throwsDuplicatePatientException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" // Two patients with the same identity fields","lastModifiedDate":"2024-03-08"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withPatientHospitalId(VALID_ID_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" .withTags(VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"NeoHW"},"content":" List\u003cPatient\u003e newPatients \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-03-08"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPatients);","lastModifiedDate":"2024-03-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" assertThrows(DuplicatePatientException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void hasPatient_nullPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPatient(null));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" assertFalse(addressBook.hasPatient(ALICE));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" addressBook.addPatient(ALICE);","lastModifiedDate":"2024-03-09"},{"lineNumber":70,"author":{"gitId":"NeoHW"},"content":" assertTrue(addressBook.hasPatient(ALICE));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" addressBook.addPatient(ALICE);","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withPatientHospitalId(VALID_ID_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"choowengyan"},"content":" .withTags(VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" assertTrue(addressBook.hasPatient(editedAlice));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPatientList().remove(0));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{patients\u003d\" + addressBook.getPatientList() + \"}\";","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * A stub ReadOnlyAddressBook whose patients list can violate interface constraints.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" private final ObservableList\u003cPatient\u003e patients \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" AddressBookStub(Collection\u003cPatient\u003e patients) {","lastModifiedDate":"2024-03-08"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" this.patients.setAll(patients);","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public ObservableList\u003cPatient\u003e getPatientList() {","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" return patients;","lastModifiedDate":"2024-03-08"},{"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":{"choowengyan":6,"NeoHW":26,"-":76}},{"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":"NeoHW"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PATIENTS;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.BENSON;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":"import seedu.address.model.patient.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void hasPatient_nullPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPatient(null));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void hasPatient_patientNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-03-09"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" assertFalse(modelManager.hasPatient(ALICE));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void hasPatient_patientInAddressBook_returnsTrue() {","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":" modelManager.addPatient(ALICE);","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" assertTrue(modelManager.hasPatient(ALICE));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPatientList().remove(0));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPatient(ALICE).withPatient(BENSON).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":" modelManager.updateFilteredPatientList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" modelManager.updateFilteredPatientList(PREDICATE_SHOW_ALL_PATIENTS);","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":15,"-":117}},{"path":"src/test/java/seedu/address/model/patient/EventTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SherisseTJW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"SherisseTJW"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"public class EventTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"SherisseTJW"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e new Event(null, null));","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e new Event(null, \"01-01-2022\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e new Event(\"Family Visit\", null));","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":" public void constructor_invalidDate_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Event(\"Family Visit\", \"something\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Event(\"Family Visit\", \"1-1-2022\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Event(\"Family Visit\", \"01-01-22\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"SherisseTJW"},"content":" public void constructor_invalidTime_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"SherisseTJW"},"content":" String validDate \u003d \"01-01-2022\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Event(\"Family Visit\",","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"SherisseTJW"},"content":" validDate + \", HH:mm - HH:mm\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Event(\"Family Visit\",","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":" validDate + \"21-02-2022, 99:88 - 99:99\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Event(\"Family Visit\",","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"SherisseTJW"},"content":" validDate + \"21-02-2022, 0000 - 2359\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"SherisseTJW"},"content":" public void isValidEvent() {","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(NullPointerException.class, () -\u003e Event.isValidEvent(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(Event.isValidEvent(\"\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(Event.isValidEvent(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(Event.isValidEvent(\"01-01-2022, HH:mm - HH:mm\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(Event.isValidEvent(\"01-01-2022, 99:99 - 99:99\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(Event.isValidEvent(\"01-01-2022, 12:12 - 99:99\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(Event.isValidEvent(\"01-01-2022, 12:12 to 12:12\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(Event.isValidEvent(\"01-01-2022 \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(Event.isValidEvent(\" 01-01-2022\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(Event.isValidEvent(\"01-01-2022\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(Event.isValidEvent(\"21-02-2022, 01:00 - 19:00\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(Event.isValidEvent(\"21-02-2022, 00:00 - 23:59\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(Event.isValidEvent(\"01-01-2022, 12:12 - 12:12 \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(Event.isValidEvent(\" 01-01-2022, 12:12 - 12:12\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"SherisseTJW"},"content":" public void compareTo() {","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"SherisseTJW"},"content":" Event earlierEvent \u003d new Event(\"Family Visit\", \"01-01-2022, 12:12 - 12:12\");","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"SherisseTJW"},"content":" Event nullTimeEvent \u003d new Event(\"Family Visit\", \"01-01-2022\");","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"SherisseTJW"},"content":" Event laterDateEvent \u003d new Event(\"Family Visit\", \"02-01-2022, 12:12 - 12:12\");","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"SherisseTJW"},"content":" Event laterMonthEvent \u003d new Event(\"Family Visit\", \"01-02-2022, 12:12 - 12:12\");","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"SherisseTJW"},"content":" Event laterYearEvent \u003d new Event(\"Family Visit\", \"01-01-2023, 12:12 - 12:12\");","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"SherisseTJW"},"content":" Event laterStartTimeEvent \u003d new Event(\"Family Visit\", \"01-01-2022, 12:13 - 12:12\");","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"SherisseTJW"},"content":" Event laterEndTimeEvent \u003d new Event(\"Family Visit\", \"01-01-2022, 12:12 - 12:13\");","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"SherisseTJW"},"content":" Event laterNameEvent \u003d new Event(\"Z\", \"01-01-2022, 12:12 - 12:12\");","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(earlierEvent.compareTo(nullTimeEvent) \u003e 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(nullTimeEvent.compareTo(earlierEvent) \u003c 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(earlierEvent.compareTo(laterDateEvent) \u003c 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(laterDateEvent.compareTo(earlierEvent) \u003e 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(earlierEvent.compareTo(laterMonthEvent) \u003c 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(laterMonthEvent.compareTo(earlierEvent) \u003e 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(earlierEvent.compareTo(laterYearEvent) \u003c 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(laterYearEvent.compareTo(earlierEvent) \u003e 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(earlierEvent.compareTo(laterStartTimeEvent) \u003c 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(laterStartTimeEvent.compareTo(earlierEvent) \u003e 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(earlierEvent.compareTo(laterEndTimeEvent) \u003c 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(laterEndTimeEvent.compareTo(earlierEvent) \u003e 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(earlierEvent.compareTo(laterNameEvent) \u003c 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(laterNameEvent.compareTo(earlierEvent) \u003e 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"SherisseTJW"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"SherisseTJW"},"content":" Event date \u003d new Event(\"Family Visit\", \"01-01-2022, 12:12 - 12:12\");","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(\"Something\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(10));","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(new Event(\"Family Visit\", \"02-01-2022, 12:12 - 12:12\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(new Event(\"Family Visit\", \"01-02-2022, 12:12 - 12:12\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(new Event(\"Family Visit\", \"01-02-2023, 12:12 - 12:12\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(new Event(\"Family Visit\", \"01-01-2022, 12:12 - 12:11\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(new Event(\"Family Visit\", \"01-01-2022, 12:12 - 11:12\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(new Event(\"Family Visit\", \"01-01-2022, 12:11 - 12:12\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"SherisseTJW"},"content":" assertFalse(date.equals(new Event(\"Family Visit\", \"01-01-2022, 11:12 - 12:12\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(date.equals(date));","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(date.equals(new Event(\"Family Visit\", \"01-01-2022, 12:12 - 12:12\")));","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"SherisseTJW"},"content":" public void dateToString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"SherisseTJW"},"content":" Event date \u003d new Event(\"Family Visit\", \"01-01-2022\");","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(date.toString().equals(\"Family Visit (01-01-2022)\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"SherisseTJW"},"content":" public void dateTimeToString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"SherisseTJW"},"content":" Event date \u003d new Event(\"Family Visit\", \"01-01-2022, 12:12 - 12:12\");","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"SherisseTJW"},"content":" assertTrue(date.toString().equals(\"Family Visit (01-01-2022, from 12:12 to 12:12)\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"SherisseTJW"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"SherisseTJW":122}},{"path":"src/test/java/seedu/address/model/patient/FamilyConditionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"choowengyan"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"choowengyan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"choowengyan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"public class FamilyConditionTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e new FamilyCondition(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":" public void constructor_invalidFamilyCondition_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" String invalidFamilyCondition \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new FamilyCondition(invalidFamilyCondition));","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" public void isValidFamilyCondition() {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":" // null family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e FamilyCondition.isValidFamilyCondition(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" // invalid family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" assertFalse(FamilyCondition.isValidFamilyCondition(\"\")); // empty string","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" assertFalse(FamilyCondition.isValidFamilyCondition(\" \")); // spaces only","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" // valid family condition","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" assertTrue(FamilyCondition.isValidFamilyCondition(\"Wife not around\")); // with spaces","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" assertTrue(FamilyCondition.isValidFamilyCondition(\"Overseas\")); // without spaces","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" assertTrue(FamilyCondition.isValidFamilyCondition(\"Has 2 sons\")); // allow numeric and alphabets","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" FamilyCondition familyCondition \u003d new FamilyCondition(\"good relationship\");","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" assertTrue(familyCondition.equals(new FamilyCondition(\"good relationship\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" assertTrue(familyCondition.equals(familyCondition));","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" assertFalse(familyCondition.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" assertFalse(familyCondition.equals(5.0f));","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" assertFalse(familyCondition.equals(new FoodPreference(\"son just met accident\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"choowengyan":56}},{"path":"src/test/java/seedu/address/model/patient/FoodPreferenceTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":"public class FoodPreferenceTest {","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e new FoodPreference(null));","lastModifiedDate":"2024-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":"choowengyan"},"content":" public void constructor_invalidFoodPreference_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" String invalidFoodPreference \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new FoodPreference(invalidFoodPreference));","lastModifiedDate":"2024-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":"choowengyan"},"content":" public void isValidFoodPreference() {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":" // null food preference","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e FoodPreference.isValidFoodPreference(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" // invalid food preference","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" assertFalse(FoodPreference.isValidFoodPreference(\"\")); // empty string","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" assertFalse(FoodPreference.isValidFoodPreference(\" \")); // spaces onl","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" // valid food preference","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" assertTrue(FoodPreference.isValidFoodPreference(\"chicken rice\")); // with spaces","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" assertTrue(FoodPreference.isValidFoodPreference(\"pasta\")); // without spaces","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" FoodPreference foodPreference \u003d new FoodPreference(\"pasta\");","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" assertTrue(foodPreference.equals(new FoodPreference(\"pasta\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" assertTrue(foodPreference.equals(foodPreference));","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" assertFalse(foodPreference.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" assertFalse(foodPreference.equals(5.0f));","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" assertFalse(foodPreference.equals(new FoodPreference(\"spaghetti\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"choowengyan":22,"NeoHW":1,"-":32}},{"path":"src/test/java/seedu/address/model/patient/HobbyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"choowengyan"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"choowengyan"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"choowengyan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"public class HobbyTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e new Hobby(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":" public void constructor_invalidHobby_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" String invalidHobby \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Hobby(invalidHobby));","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" public void isValidHobby() {","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":" // null hobby","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e Hobby.isValidHobby(null));","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" // invalid hobby","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" assertFalse(Hobby.isValidHobby(\"\")); // empty string","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" assertFalse(Hobby.isValidHobby(\" \")); // spaces only","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" // valid hobby","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" assertTrue(Hobby.isValidHobby(\"rock climbing\")); // with spaces","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" assertTrue(Hobby.isValidHobby(\"hiking\")); // without spaces","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" public void equals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" Hobby hobby \u003d new Hobby(\"hiking\");","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" assertTrue(hobby.equals(new Hobby(\"hiking\")));","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" assertTrue(hobby.equals(hobby));","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" assertFalse(hobby.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" assertFalse(hobby.equals(5.0f));","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" assertFalse(hobby.equals(new Hobby(\"swimming\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"choowengyan":55}},{"path":"src/test/java/seedu/address/model/patient/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" // different patient -\u003e returns false","lastModifiedDate":"2024-03-08"},{"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_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" assertFalse(predicate.test(new PatientBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" assertFalse(predicate.test(new PatientBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":52,"author":{"gitId":"guohuang88"},"content":" // Keywords match patient hospital id, preferred name, food preference, family condition, hobby and tag,","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"guohuang88"},"content":" // but does not match patient name","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"guohuang88"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12344\", \"Carol\", \"Pasta\", \"Daughter\", \"not\",","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"guohuang88"},"content":" \"in\", \"Singapore\", \"swimming\", \"depression\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":" assertFalse(predicate.test(new PatientBuilder().withPatientHospitalId(\"12344\").withName(\"Caroline Li\")","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"guohuang88"},"content":" .withPreferredName(\"Carol\").withFoodPreference(\"Pasta\").withFamilyCondition(\"Daughter not in Singapore\")","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"guohuang88"},"content":" .withHobby(\"swimming\").withTags(\"depression\").build()));","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"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":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"guohuang88":7,"NeoHW":5,"-":57}},{"path":"src/test/java/seedu/address/model/patient/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"NeoHW":1,"-":59}},{"path":"src/test/java/seedu/address/model/patient/PatientHospitalIdTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":"public class PatientHospitalIdTest {","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e new PatientHospitalId(null));","lastModifiedDate":"2024-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":"choowengyan"},"content":" public void constructor_invalidId_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" String invalidId \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new PatientHospitalId(invalidId));","lastModifiedDate":"2024-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":"choowengyan"},"content":" public void isValidId() {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e PatientHospitalId.isValidPatientHospitalId(null));","lastModifiedDate":"2024-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":"choowengyan"},"content":" assertFalse(PatientHospitalId.isValidPatientHospitalId(\"\")); // empty string","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" assertFalse(PatientHospitalId.isValidPatientHospitalId(\" \")); // spaces only","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" assertFalse(PatientHospitalId.isValidPatientHospitalId(\"@23\")); // contains non-integer character","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" assertFalse(PatientHospitalId.isValidPatientHospitalId(\"@!\")); // contains non-integer character","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" assertFalse(PatientHospitalId.isValidPatientHospitalId(\"abc\")); // contains character","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" assertFalse(PatientHospitalId.isValidPatientHospitalId(\"123ab\")); // contains character and integer","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" assertFalse(PatientHospitalId.isValidPatientHospitalId(\"-123\")); // contains negative integer","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" // valid patient hospital id","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" assertTrue(PatientHospitalId.isValidPatientHospitalId(\"12345\")); // contains all integers","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" assertTrue(PatientHospitalId.isValidPatientHospitalId(\"123\")); // contains all integers in different length","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" PatientHospitalId patientHospitalId \u003d new PatientHospitalId(\"11234\");","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" assertTrue(patientHospitalId.equals(new PatientHospitalId(\"11234\")));","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" assertTrue(patientHospitalId.equals(patientHospitalId));","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" assertFalse(patientHospitalId.equals(null));","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" assertFalse(patientHospitalId.equals(5.0f));","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" assertFalse(patientHospitalId.equals(new PatientHospitalId(\"11235\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"choowengyan":24,"NeoHW":1,"-":37}},{"path":"src/test/java/seedu/address/model/patient/PatientTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FAMILY_CONDITION_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FOOD_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOBBY_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_AMY;","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":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PREFERRED_NAME_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.BOB;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"public class PatientTest {","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" Patient patient \u003d new PatientBuilder().build();","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e patient.getTags().remove(0));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" assertTrue(ALICE.isSamePatient(ALICE));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" assertFalse(ALICE.isSamePatient(null));","lastModifiedDate":"2024-03-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" // same id, all other attributes different -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(VALID_PREFERRED_NAME_BOB).withFoodPreference(VALID_FOOD_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" .withFamilyCondition(VALID_FAMILY_CONDITION_BOB).withHobby(VALID_HOBBY_BOB).withTags(VALID_TAG_DEPRESSION)","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" .build();","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"NeoHW"},"content":" assertTrue(ALICE.isSamePatient(editedAlice));","lastModifiedDate":"2024-03-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" // different id, all other attributes same -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withPatientHospitalId(VALID_ID_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" assertFalse(ALICE.isSamePatient(editedAlice));","lastModifiedDate":"2024-03-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" Patient aliceCopy \u003d new PatientBuilder(ALICE).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" // different patient -\u003e returns false","lastModifiedDate":"2024-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":68,"author":{"gitId":"NeoHW"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":" // different patient hospital id -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withPatientHospitalId(VALID_ID_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"choowengyan"},"content":" // different preferred name -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withPreferredName(VALID_PREFERRED_NAME_BOB).build();","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" // different food preference -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"choowengyan"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withFoodPreference(VALID_FOOD_BOB).build();","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" // different family condition -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"choowengyan"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withFamilyCondition(VALID_FAMILY_CONDITION_BOB).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":87,"author":{"gitId":"choowengyan"},"content":" // different hobby -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"choowengyan"},"content":" editedAlice \u003d new PatientBuilder(ALICE).withHobby(VALID_HOBBY_BOB).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":94,"author":{"gitId":"choowengyan"},"content":" String expected \u003d Patient.class.getCanonicalName() + \"{patientHospitalId\u003d\" + ALICE.getPatientHospitalId()","lastModifiedDate":"2024-03-14"},{"lineNumber":95,"author":{"gitId":"choowengyan"},"content":" + \", name\u003d\" + ALICE.getName() + \", preferredName\u003d\" + ALICE.getPreferredName()","lastModifiedDate":"2024-03-14"},{"lineNumber":96,"author":{"gitId":"choowengyan"},"content":" + \", foodPreference\u003d\" + ALICE.getFoodPreference() + \", familyCondition\u003d\" + ALICE.getFamilyCondition()","lastModifiedDate":"2024-03-14"},{"lineNumber":97,"author":{"gitId":"choowengyan"},"content":" + \", hobby\u003d\" + ALICE.getHobby()","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" + \", tags\u003d\" + ALICE.getTags() + \", events\u003d\" + ALICE.getEvents() + \"}\";;","lastModifiedDate":"2024-03-18"},{"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":{"SherisseTJW":1,"choowengyan":27,"NeoHW":14,"-":59}},{"path":"src/test/java/seedu/address/model/patient/PreferredNameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":"public class PreferredNameTest {","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e new PreferredName(null));","lastModifiedDate":"2024-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":"choowengyan"},"content":" public void constructor_invalidPreferredName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":" String invalidPreferredName \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new PreferredName(invalidPreferredName));","lastModifiedDate":"2024-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":"choowengyan"},"content":" public void isValidPreferredName() {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null address","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" assertThrows(NullPointerException.class, () -\u003e PreferredName.isValidPreferredName(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" // invalid preferred name","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" assertFalse(PreferredName.isValidPreferredName(\"\")); // empty string","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" assertFalse(PreferredName.isValidPreferredName(\" \")); // spaces only","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" // valid preferred name","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" assertTrue(PreferredName.isValidPreferredName(\"Kenny\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" assertTrue(PreferredName.isValidPreferredName(\"Ah Ken\")); // with spaces","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" PreferredName preferredName \u003d new PreferredName(\"Valid Preferred Name\");","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" assertTrue(preferredName.equals(new PreferredName(\"Valid Preferred Name\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" assertTrue(preferredName.equals(preferredName));","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" assertFalse(preferredName.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" assertFalse(preferredName.equals(5.0f));","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" assertFalse(preferredName.equals(new PreferredName(\"Other Valid Preferred Name\")));","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"choowengyan":19,"NeoHW":1,"-":35}},{"path":"src/test/java/seedu/address/model/patient/TagContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"guohuang88"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"guohuang88"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"guohuang88"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"guohuang88"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"guohuang88"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"guohuang88"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"guohuang88"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"guohuang88"},"content":"import java.util.List;","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"guohuang88"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"guohuang88"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"guohuang88"},"content":"public class TagContainsKeywordsPredicateTest {","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"guohuang88"},"content":" public void equalsTest() {","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"guohuang88"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"guohuang88"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d List.of(\"first\", \"second\");","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"guohuang88"},"content":" TagContainsKeywordsPredicate firstPredicate \u003d new TagContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"guohuang88"},"content":" TagContainsKeywordsPredicate secondPredicate \u003d new TagContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"guohuang88"},"content":" // same object -\u003e equals","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"guohuang88"},"content":" assertEquals(firstPredicate, firstPredicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"guohuang88"},"content":" // same values -\u003e equals","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"guohuang88"},"content":" TagContainsKeywordsPredicate firstPredicateDuplicate \u003d new TagContainsKeywordsPredicate(","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"guohuang88"},"content":" firstPredicateKeywordList);","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"guohuang88"},"content":" assertEquals(firstPredicate, firstPredicateDuplicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"guohuang88"},"content":" // null -\u003e not equals","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"guohuang88"},"content":" assertNotEquals(null, firstPredicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"guohuang88"},"content":" // different predicate -\u003e not equals","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"guohuang88"},"content":" assertNotEquals(firstPredicate, secondPredicate);","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"guohuang88"},"content":" public void test_tagDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"guohuang88"},"content":" // Zero keyword","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"guohuang88"},"content":" TagContainsKeywordsPredicate predicate \u003d new TagContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"guohuang88"},"content":" assertFalse(predicate.test(new PatientBuilder().withTags(\"depression\").build()));","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"guohuang88"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"guohuang88"},"content":" predicate \u003d new TagContainsKeywordsPredicate(List.of(\"diabetes\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"guohuang88"},"content":" assertFalse(predicate.test(new PatientBuilder().withTags(\"depression\").build()));","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"guohuang88"},"content":" // Keywords match patient hospital id, name, preferred name, food preference, family condition and hobby,","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"guohuang88"},"content":" // but does not match tag","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"guohuang88"},"content":" predicate \u003d new TagContainsKeywordsPredicate(Arrays.asList(\"12344\", \"Caroline\", \"Li\", \"Carol\", \"Pasta\",","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"guohuang88"},"content":" \"Daughter\", \"not\", \"in\", \"Singapore\", \"swimming\", \"diabetes\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"guohuang88"},"content":" assertFalse(predicate.test(new PatientBuilder().withPatientHospitalId(\"12344\").withName(\"Caroline Li\")","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"guohuang88"},"content":" .withPreferredName(\"Carol\").withFoodPreference(\"Pasta\").withFamilyCondition(\"Daughter not in Singapore\")","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"guohuang88"},"content":" .withHobby(\"swimming\").withTags(\"depression\").build()));","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"guohuang88"},"content":" public void test_tagDoesContainKeywords_returnsTrue() {","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"guohuang88"},"content":" TagContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"guohuang88"},"content":" // Matching keyword","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"guohuang88"},"content":" predicate \u003d new TagContainsKeywordsPredicate(List.of(\"diabetes\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"guohuang88"},"content":" assertTrue(predicate.test(new PatientBuilder().withTags(\"diabetes\").build()));","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"guohuang88"},"content":" // Keywords does not match patient hospital id, name, preferred name, food preference,","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"guohuang88"},"content":" // family condition and hobby but only match tag","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"guohuang88"},"content":" predicate \u003d new TagContainsKeywordsPredicate(Arrays.asList(\"12345\", \"Carolina\", \"Lee\", \"Caroli\", \"Paste\",","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"guohuang88"},"content":" \"Son\", \"at\", \"China\", \"dancing\", \"diabetes\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"guohuang88"},"content":" assertTrue(predicate.test(new PatientBuilder().withPatientHospitalId(\"12344\").withName(\"Caroline Li\")","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"guohuang88"},"content":" .withPreferredName(\"Carol\").withFoodPreference(\"Pasta\").withFamilyCondition(\"Daughter not in Singapore\")","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"guohuang88"},"content":" .withHobby(\"swimming\").withTags(\"diabetes\").build()));","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"guohuang88"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"guohuang88"},"content":" public void toStringTest() {","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"guohuang88"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"guohuang88"},"content":" TagContainsKeywordsPredicate predicate \u003d new TagContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"guohuang88"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"guohuang88"},"content":" String expected \u003d TagContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"guohuang88"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"guohuang88"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"guohuang88"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"guohuang88":84}},{"path":"src/test/java/seedu/address/model/patient/UniquePatientListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.model.patient;","lastModifiedDate":"2024-03-08"},{"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":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.testutil.TypicalPatients.AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.BOB;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":"import seedu.address.model.patient.exceptions.DuplicatePatientException;","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.exceptions.PatientNotFoundException;","lastModifiedDate":"2024-03-08"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"import seedu.address.testutil.PatientBuilder;","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"public class UniquePatientListTest {","lastModifiedDate":"2024-03-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":" private final UniquePatientList uniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" public void contains_nullPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.contains(null));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void contains_patientNotInList_returnsFalse() {","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" assertFalse(uniquePatientList.contains(ALICE));","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" public void contains_patientInList_returnsTrue() {","lastModifiedDate":"2024-03-09"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" assertTrue(uniquePatientList.contains(ALICE));","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" public void contains_patientWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-03-09"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withPatientHospitalId(VALID_ID_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" .withTags(VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"NeoHW"},"content":" assertTrue(uniquePatientList.contains(editedAlice));","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" public void add_nullPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.add(null));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void add_duplicatePatient_throwsDuplicatePatientException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" assertThrows(DuplicatePatientException.class, () -\u003e uniquePatientList.add(ALICE));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void setPatient_nullTargetPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.setPatient(null, ALICE));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void setPatient_nullEditedPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":69,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.setPatient(ALICE, null));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void setPatient_targetPatientNotInList_throwsPatientNotFoundException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" assertThrows(PatientNotFoundException.class, () -\u003e uniquePatientList.setPatient(ALICE, ALICE));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void setPatient_editedPatientIsSamePatient_success() {","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.setPatient(ALICE, ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":81,"author":{"gitId":"NeoHW"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-08"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" expectedUniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":83,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" public void setPatient_editedPatientHasSameIdentity_success() {","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":89,"author":{"gitId":"choowengyan"},"content":" Patient editedAlice \u003d new PatientBuilder(ALICE).withPatientHospitalId(VALID_ID_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"choowengyan"},"content":" .withTags(VALID_TAG_DEPRESSION).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.setPatient(ALICE, editedAlice);","lastModifiedDate":"2024-03-08"},{"lineNumber":92,"author":{"gitId":"NeoHW"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-08"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" expectedUniquePatientList.add(editedAlice);","lastModifiedDate":"2024-03-08"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" public void setPatient_editedPatientHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.setPatient(ALICE, BOB);","lastModifiedDate":"2024-03-08"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-08"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" expectedUniquePatientList.add(BOB);","lastModifiedDate":"2024-03-08"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" public void setPatient_editedPatientHasNonUniqueIdentity_throwsDuplicatePatientException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":108,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":109,"author":{"gitId":"choowengyan"},"content":" uniquePatientList.add(AMY);","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"choowengyan"},"content":" assertThrows(DuplicatePatientException.class, () -\u003e uniquePatientList.setPatient(ALICE, AMY));","lastModifiedDate":"2024-03-17"},{"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":"NeoHW"},"content":" public void remove_nullPatient_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":115,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.remove(null));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void remove_patientDoesNotExist_throwsPatientNotFoundException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" assertThrows(PatientNotFoundException.class, () -\u003e uniquePatientList.remove(ALICE));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void remove_existingPatient_removesPatient() {","lastModifiedDate":"2024-03-09"},{"lineNumber":125,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":126,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.remove(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":127,"author":{"gitId":"NeoHW"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-08"},{"lineNumber":128,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" public void setPatients_nullUniquePatientList_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":133,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.setPatients((UniquePatientList) null));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void setPatients_uniquePatientList_replacesOwnListWithProvidedUniquePatientList() {","lastModifiedDate":"2024-03-09"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-08"},{"lineNumber":140,"author":{"gitId":"NeoHW"},"content":" expectedUniquePatientList.add(BOB);","lastModifiedDate":"2024-03-08"},{"lineNumber":141,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.setPatients(expectedUniquePatientList);","lastModifiedDate":"2024-03-08"},{"lineNumber":142,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" public void setPatients_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":147,"author":{"gitId":"NeoHW"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePatientList.setPatients((List\u003cPatient\u003e) null));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" public void setPatients_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-09"},{"lineNumber":152,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.add(ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":153,"author":{"gitId":"NeoHW"},"content":" List\u003cPatient\u003e patientList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-03-08"},{"lineNumber":154,"author":{"gitId":"NeoHW"},"content":" uniquePatientList.setPatients(patientList);","lastModifiedDate":"2024-03-08"},{"lineNumber":155,"author":{"gitId":"NeoHW"},"content":" UniquePatientList expectedUniquePatientList \u003d new UniquePatientList();","lastModifiedDate":"2024-03-08"},{"lineNumber":156,"author":{"gitId":"NeoHW"},"content":" expectedUniquePatientList.add(BOB);","lastModifiedDate":"2024-03-08"},{"lineNumber":157,"author":{"gitId":"NeoHW"},"content":" assertEquals(expectedUniquePatientList, uniquePatientList);","lastModifiedDate":"2024-03-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":"NeoHW"},"content":" public void setPatients_listWithDuplicatePatients_throwsDuplicatePatientException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":162,"author":{"gitId":"NeoHW"},"content":" List\u003cPatient\u003e listWithDuplicatePatients \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-03-08"},{"lineNumber":163,"author":{"gitId":"NeoHW"},"content":" assertThrows(DuplicatePatientException.class, () -\u003e uniquePatientList.setPatients(listWithDuplicatePatients));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" -\u003e uniquePatientList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" assertEquals(uniquePatientList.asUnmodifiableObservableList().toString(), uniquePatientList.toString());","lastModifiedDate":"2024-03-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"choowengyan":9,"NeoHW":80,"-":87}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPatientTest.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":"NeoHW"},"content":"import static seedu.address.storage.JsonAdaptedPatient.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.BENSON;","lastModifiedDate":"2024-03-09"},{"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":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"public class JsonAdaptedPatientTest {","lastModifiedDate":"2024-03-08"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_ID \u003d \"-1\";","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_NAME \u003d \"R@chel Lim\";","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_PREFERRED_NAME \u003d \"R@chel\";","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_FOOD_PREFERENCE \u003d \" \";","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_FAMILY_CONDITION \u003d \" \";","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_HOBBY \u003d \" \";","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" private static final String INVALID_TAG \u003d \"#Diabetes\";","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" private static final String INVALID_EVENT_DATETIME_STR \u003d \"Something\";","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_PATIENT_HOSPITAL_ID \u003d BENSON.getPatientHospitalId().patientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_PREFERRED_NAME \u003d BENSON.getPreferredName().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_FOOD_PREFERENCE \u003d BENSON.getFoodPreference().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_FAMILY_CONDITION \u003d BENSON.getFamilyCondition().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" private static final String VALID_HOBBY \u003d BENSON.getHobby().toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"SherisseTJW"},"content":" private static final String VALID_EVENT_NAME \u003d \"Birthday\";","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"SherisseTJW"},"content":" private static final List\u003cJsonAdaptedEvent\u003e VALID_EVENTS \u003d BENSON.getEvents().stream()","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"SherisseTJW"},"content":" .map(JsonAdaptedEvent::new)","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"SherisseTJW"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-15"},{"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":"NeoHW"},"content":" JsonAdaptedPatient person \u003d new JsonAdaptedPatient(BENSON);","lastModifiedDate":"2024-03-09"},{"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":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" public void toModelType_invalidPatientHospitalId_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" JsonAdaptedPatient person \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" new JsonAdaptedPatient(INVALID_ID, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d PatientHospitalId.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":" public void toModelType_nullPatientHospitalId_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" JsonAdaptedPatient person \u003d new JsonAdaptedPatient(null, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, PatientHospitalId.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"NeoHW"},"content":" JsonAdaptedPatient person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":" new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, INVALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.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_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"choowengyan"},"content":" JsonAdaptedPatient person \u003d new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, null, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"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":"choowengyan"},"content":" public void toModelType_invalidPreferredName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"choowengyan"},"content":" JsonAdaptedPatient person \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"choowengyan"},"content":" new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, INVALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d PreferredName.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"choowengyan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"choowengyan"},"content":" public void toModelType_nullPreferredName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"choowengyan"},"content":" JsonAdaptedPatient person \u003d new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, null,","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, PreferredName.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"choowengyan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"choowengyan"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"choowengyan"},"content":" public void toModelType_invalidFoodPreference_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":" JsonAdaptedPatient person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"choowengyan"},"content":" new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" INVALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d FoodPreference.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"choowengyan"},"content":" public void toModelType_nullFoodPreference_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"choowengyan"},"content":" JsonAdaptedPatient person \u003d new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"SherisseTJW"},"content":" null, VALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, FoodPreference.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"choowengyan"},"content":" public void toModelType_invalidFamilyCondition_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"NeoHW"},"content":" JsonAdaptedPatient person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":123,"author":{"gitId":"choowengyan"},"content":" new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, INVALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d FamilyCondition.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"choowengyan"},"content":" public void toModelType_nullFamilyCondition_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"choowengyan"},"content":" JsonAdaptedPatient person \u003d new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, null, VALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, FamilyCondition.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"choowengyan"},"content":" public void toModelType_invalidHobby_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"NeoHW"},"content":" JsonAdaptedPatient person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":140,"author":{"gitId":"choowengyan"},"content":" new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, INVALID_HOBBY, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d Hobby.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, 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":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"choowengyan"},"content":" public void toModelType_nullHobby_throwsIllegalValueException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"choowengyan"},"content":" JsonAdaptedPatient person \u003d new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, null, VALID_TAGS, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"choowengyan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Hobby.class.getSimpleName());","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":157,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":158,"author":{"gitId":"NeoHW"},"content":" JsonAdaptedPatient person \u003d","lastModifiedDate":"2024-03-09"},{"lineNumber":159,"author":{"gitId":"choowengyan"},"content":" new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"SherisseTJW"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, VALID_HOBBY, invalidTags, VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":164,"author":{"gitId":"SherisseTJW"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":165,"author":{"gitId":"SherisseTJW"},"content":" public void toModelType_invalidDateTime_throwsIllegalValueException() {","lastModifiedDate":"2024-03-15"},{"lineNumber":166,"author":{"gitId":"SherisseTJW"},"content":" List\u003cJsonAdaptedEvent\u003e invalidImportantDates \u003d new ArrayList\u003c\u003e(VALID_EVENTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"SherisseTJW"},"content":" invalidImportantDates.add(new JsonAdaptedEvent(VALID_EVENT_NAME,","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"SherisseTJW"},"content":" INVALID_EVENT_DATETIME_STR));","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"SherisseTJW"},"content":" JsonAdaptedPatient person \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":170,"author":{"gitId":"choowengyan"},"content":" new JsonAdaptedPatient(VALID_PATIENT_HOSPITAL_ID, VALID_NAME, VALID_PREFERRED_NAME,","lastModifiedDate":"2024-03-17"},{"lineNumber":171,"author":{"gitId":"choowengyan"},"content":" VALID_FOOD_PREFERENCE, VALID_FAMILY_CONDITION, VALID_HOBBY, VALID_TAGS, invalidImportantDates);","lastModifiedDate":"2024-03-17"},{"lineNumber":172,"author":{"gitId":"SherisseTJW"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-03-15"},{"lineNumber":173,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"SherisseTJW":27,"choowengyan":70,"NeoHW":9,"-":68}},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.ALICE;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.HOON;","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.IDA;","lastModifiedDate":"2024-03-09"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"NeoHW"},"content":" public void readAddressBook_invalidPatientAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPatientAddressBook.json\"));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public void readAddressBook_invalidAndValidPatientAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPatientAddressBook.json\"));","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" original.addPatient(HOON);","lastModifiedDate":"2024-03-09"},{"lineNumber":76,"author":{"gitId":"NeoHW"},"content":" original.removePatient(ALICE);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" original.addPatient(IDA);","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":11,"-":99}},{"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":"NeoHW"},"content":"import seedu.address.testutil.TypicalPatients;","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPatientAddressBook.json\");","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPatientAddressBook.json\");","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePatientAddressBook.json\");","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPatients.getTypicalAddressBook();","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PATIENT,","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":6,"-":41}},{"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":"NeoHW"},"content":"import static seedu.address.testutil.TypicalPatients.getTypicalAddressBook;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"NeoHW":1,"-":67}},{"path":"src/test/java/seedu/address/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withPatient(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Adds a new {@code Patient} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" public AddressBookBuilder withPatient(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" addressBook.addPatient(patient);","lastModifiedDate":"2024-03-09"},{"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":{"NeoHW":5,"-":29}},{"path":"src/test/java/seedu/address/testutil/EditPatientDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"NeoHW"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-09"},{"lineNumber":2,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":3,"author":{"gitId":"SherisseTJW"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"NeoHW"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-09"},{"lineNumber":5,"author":{"gitId":"NeoHW"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-09"},{"lineNumber":6,"author":{"gitId":"NeoHW"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-09"},{"lineNumber":7,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":8,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-09"},{"lineNumber":14,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-09"},{"lineNumber":15,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-09"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":19,"author":{"gitId":"NeoHW"},"content":"/**","lastModifiedDate":"2024-03-09"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":" * A utility class to help with building EditPatientDescriptor objects.","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"NeoHW"},"content":"public class EditPatientDescriptorBuilder {","lastModifiedDate":"2024-03-09"},{"lineNumber":23,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":24,"author":{"gitId":"SherisseTJW"},"content":" private EditPatientDescriptor descriptor;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" public EditPatientDescriptorBuilder() {","lastModifiedDate":"2024-03-09"},{"lineNumber":27,"author":{"gitId":"SherisseTJW"},"content":" descriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":30,"author":{"gitId":"SherisseTJW"},"content":" public EditPatientDescriptorBuilder(EditPatientDescriptor descriptor) {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"SherisseTJW"},"content":" this.descriptor \u003d new EditPatientDescriptor(descriptor);","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":35,"author":{"gitId":"NeoHW"},"content":" * Returns an {@code EditPatientDescriptor} with fields containing {@code patient}\u0027s details","lastModifiedDate":"2024-03-09"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":37,"author":{"gitId":"NeoHW"},"content":" public EditPatientDescriptorBuilder(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" descriptor \u003d new EditPatientDescriptor();","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" descriptor.setPatientHospitalId(patient.getPatientHospitalId());","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"NeoHW"},"content":" descriptor.setName(patient.getName());","lastModifiedDate":"2024-03-09"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" descriptor.setPreferredName(patient.getPreferredName());","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" descriptor.setFoodPreference(patient.getFoodPreference());","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" descriptor.setFamilyCondition(patient.getFamilyCondition());","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" descriptor.setHobby(patient.getHobby());","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"NeoHW"},"content":" descriptor.setTags(patient.getTags());","lastModifiedDate":"2024-03-09"},{"lineNumber":46,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":47,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" * Sets the {@code PatientHospitalId} of the {@code EditPatientDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" public EditPatientDescriptorBuilder withPatientHospitalId(String id) {","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" descriptor.setPatientHospitalId(new PatientHospitalId(id));","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" * Sets the {@code Name} of the {@code EditPatientDescriptor} that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":58,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":59,"author":{"gitId":"NeoHW"},"content":" public EditPatientDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-09"},{"lineNumber":60,"author":{"gitId":"NeoHW"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-09"},{"lineNumber":61,"author":{"gitId":"NeoHW"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":63,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":64,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":65,"author":{"gitId":"choowengyan"},"content":" * Sets the {@code PreferredName} of the {@code EditPatientDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":" public EditPatientDescriptorBuilder withPreferredName(String preferredName) {","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":" descriptor.setPreferredName(new PreferredName(preferredName));","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"choowengyan"},"content":" * Sets the {@code FoodPreference} of the {@code EditPatientDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":75,"author":{"gitId":"choowengyan"},"content":" public EditPatientDescriptorBuilder withFoodPreference(String food) {","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"choowengyan"},"content":" descriptor.setFoodPreference(new FoodPreference(food));","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":79,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":81,"author":{"gitId":"choowengyan"},"content":" * Sets the {@code FamilyCondition} of the {@code EditPatientDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":83,"author":{"gitId":"choowengyan"},"content":" public EditPatientDescriptorBuilder withFamilyCondition(String familyCondition) {","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"choowengyan"},"content":" descriptor.setFamilyCondition(new FamilyCondition(familyCondition));","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":86,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":87,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":88,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":89,"author":{"gitId":"choowengyan"},"content":" * Sets the {@code Hobby} of the {@code EditPatientDescriptor} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":91,"author":{"gitId":"choowengyan"},"content":" public EditPatientDescriptorBuilder withHobby(String hobby) {","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"choowengyan"},"content":" descriptor.setHobby(new Hobby(hobby));","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":95,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":96,"author":{"gitId":"NeoHW"},"content":" /**","lastModifiedDate":"2024-03-09"},{"lineNumber":97,"author":{"gitId":"NeoHW"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPatientDescriptor}","lastModifiedDate":"2024-03-09"},{"lineNumber":98,"author":{"gitId":"NeoHW"},"content":" * that we are building.","lastModifiedDate":"2024-03-09"},{"lineNumber":99,"author":{"gitId":"NeoHW"},"content":" */","lastModifiedDate":"2024-03-09"},{"lineNumber":100,"author":{"gitId":"NeoHW"},"content":" public EditPatientDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-03-09"},{"lineNumber":101,"author":{"gitId":"NeoHW"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-09"},{"lineNumber":102,"author":{"gitId":"NeoHW"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2024-03-09"},{"lineNumber":103,"author":{"gitId":"NeoHW"},"content":" return this;","lastModifiedDate":"2024-03-09"},{"lineNumber":104,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":105,"author":{"gitId":"NeoHW"},"content":"","lastModifiedDate":"2024-03-09"},{"lineNumber":106,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"SherisseTJW"},"content":" * Parses the name and dateTimeStr into a {@code Set\u003cEvent\u003e} and set it to the","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"SherisseTJW"},"content":" * {@code EditPatientDescriptor} that we are building.","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"SherisseTJW"},"content":" public EditPatientDescriptorBuilder withEvent(String name, String dateTimeStr) {","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"SherisseTJW"},"content":" Set\u003cEvent\u003e events \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"SherisseTJW"},"content":" events.add(new Event(name, dateTimeStr));","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"SherisseTJW"},"content":" descriptor.setEvents(events);","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"SherisseTJW"},"content":" return this;","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"SherisseTJW"},"content":" public EditPatientDescriptor build() {","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"NeoHW"},"content":" return descriptor;","lastModifiedDate":"2024-03-09"},{"lineNumber":120,"author":{"gitId":"NeoHW"},"content":" }","lastModifiedDate":"2024-03-09"},{"lineNumber":121,"author":{"gitId":"NeoHW"},"content":"}","lastModifiedDate":"2024-03-09"}],"authorContributionMap":{"SherisseTJW":21,"choowengyan":35,"NeoHW":65}},{"path":"src/test/java/seedu/address/testutil/PatientBuilder.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":"SherisseTJW"},"content":"import seedu.address.model.patient.Event;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FamilyCondition;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.FoodPreference;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.Hobby;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Name;","lastModifiedDate":"2024-03-08"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PatientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":"import seedu.address.model.patient.PreferredName;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"NeoHW"},"content":" * A utility class to help with building Patient objects.","lastModifiedDate":"2024-03-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"NeoHW"},"content":"public class PatientBuilder {","lastModifiedDate":"2024-03-09"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"choowengyan"},"content":" public static final String DEFAULT_ID \u003d \"12334\";","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"choowengyan"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee Kian Ling\";","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"choowengyan"},"content":" public static final String DEFAULT_PREFERRED_NAME \u003d \"Amy\";","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"choowengyan"},"content":" public static final String DEFAULT_FOOD_PREFERENCE \u003d \"Hor Fun\";","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"choowengyan"},"content":" public static final String DEFAULT_FAMILY_CONDITION \u003d \"Financially unstable\";","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"choowengyan"},"content":" public static final String DEFAULT_HOBBY \u003d \"Singing karaoke\";","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":29,"author":{"gitId":"choowengyan"},"content":" private PatientHospitalId patientHospitalId;","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":31,"author":{"gitId":"choowengyan"},"content":" private PreferredName preferredName;","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" private FoodPreference foodPreference;","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" private FamilyCondition familyCondition;","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" private Hobby hobby;","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"SherisseTJW"},"content":" private Set\u003cEvent\u003e events;","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"NeoHW"},"content":" * Creates a {@code PatientBuilder} with the default details.","lastModifiedDate":"2024-03-09"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" public PatientBuilder() {","lastModifiedDate":"2024-03-09"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" patientHospitalId \u003d new PatientHospitalId(DEFAULT_ID);","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" preferredName \u003d new PreferredName(DEFAULT_PREFERRED_NAME);","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" foodPreference \u003d new FoodPreference(DEFAULT_FOOD_PREFERENCE);","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" familyCondition \u003d new FamilyCondition(DEFAULT_FAMILY_CONDITION);","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" hobby \u003d new Hobby(DEFAULT_HOBBY);","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"SherisseTJW"},"content":" events \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"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":"NeoHW"},"content":" * Initializes the PatientBuilder with the data of {@code patientToCopy}.","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":55,"author":{"gitId":"NeoHW"},"content":" public PatientBuilder(Patient patientToCopy) {","lastModifiedDate":"2024-03-09"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":" patientHospitalId \u003d patientToCopy.getPatientHospitalId();","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"NeoHW"},"content":" name \u003d patientToCopy.getName();","lastModifiedDate":"2024-03-08"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" preferredName \u003d patientToCopy.getPreferredName();","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" foodPreference \u003d patientToCopy.getFoodPreference();","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":" familyCondition \u003d patientToCopy.getFamilyCondition();","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":" hobby \u003d patientToCopy.getHobby();","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"NeoHW"},"content":" tags \u003d new HashSet\u003c\u003e(patientToCopy.getTags());","lastModifiedDate":"2024-03-08"},{"lineNumber":63,"author":{"gitId":"SherisseTJW"},"content":" events \u003d new HashSet\u003c\u003e(patientToCopy.getEvents());","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":" * Sets the {@code PatientHospitalId} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":" public PatientBuilder withPatientHospitalId(String id) {","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":" this.patientHospitalId \u003d new PatientHospitalId(id);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":75,"author":{"gitId":"NeoHW"},"content":" * Sets the {@code Name} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":77,"author":{"gitId":"NeoHW"},"content":" public PatientBuilder withName(String name) {","lastModifiedDate":"2024-03-09"},{"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":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"choowengyan"},"content":" * Sets the {@code PreferredName} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"choowengyan"},"content":" public PatientBuilder withPreferredName(String preferredName) {","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"choowengyan"},"content":" this.preferredName \u003d new PreferredName(preferredName);","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"choowengyan"},"content":" return this;","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"choowengyan"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"choowengyan"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":91,"author":{"gitId":"NeoHW"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Patient} that we are building.","lastModifiedDate":"2024-03-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":93,"author":{"gitId":"NeoHW"},"content":" public PatientBuilder withTags(String ... tags) {","lastModifiedDate":"2024-03-09"},{"lineNumber":94,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","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":"choowengyan"},"content":" * Sets the {@code FoodPreference} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":101,"author":{"gitId":"choowengyan"},"content":" public PatientBuilder withFoodPreference(String foodPreference) {","lastModifiedDate":"2024-03-14"},{"lineNumber":102,"author":{"gitId":"choowengyan"},"content":" this.foodPreference \u003d new FoodPreference(foodPreference);","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" * Sets the {@code FamilyCondition} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":109,"author":{"gitId":"choowengyan"},"content":" public PatientBuilder withFamilyCondition(String familyCondition) {","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"choowengyan"},"content":" this.familyCondition \u003d new FamilyCondition(familyCondition);","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":115,"author":{"gitId":"choowengyan"},"content":" * Sets the {@code Hobby} of the {@code Patient} that we are building.","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":117,"author":{"gitId":"choowengyan"},"content":" public PatientBuilder withHobby(String hobby) {","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"choowengyan"},"content":" this.hobby \u003d new Hobby(hobby);","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":122,"author":{"gitId":"SherisseTJW"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"SherisseTJW"},"content":" * Sets the Event of the {@code Patient} that we are building,","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"SherisseTJW"},"content":" * with the name and date/datetime of the event","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"SherisseTJW"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"SherisseTJW"},"content":" * @param names description of events","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"SherisseTJW"},"content":" * @param events array of string of dates","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"choowengyan"},"content":" * @return return PatientBuilder withImportantDates","lastModifiedDate":"2024-03-17"},{"lineNumber":129,"author":{"gitId":"SherisseTJW"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"SherisseTJW"},"content":" public PatientBuilder withEvents(String[] names, String[] events) {","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"SherisseTJW"},"content":" this.events \u003d SampleDataUtil.getEventSet(names, events);","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"SherisseTJW"},"content":" return this;","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"SherisseTJW"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":134,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":135,"author":{"gitId":"choowengyan"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":136,"author":{"gitId":"choowengyan"},"content":" * Builds {@code Patient} with new Patient.","lastModifiedDate":"2024-03-17"},{"lineNumber":137,"author":{"gitId":"choowengyan"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":138,"author":{"gitId":"NeoHW"},"content":" public Patient build() {","lastModifiedDate":"2024-03-08"},{"lineNumber":139,"author":{"gitId":"choowengyan"},"content":" return new Patient(patientHospitalId, name, preferredName, foodPreference, familyCondition, hobby, tags,","lastModifiedDate":"2024-03-17"},{"lineNumber":140,"author":{"gitId":"SherisseTJW"},"content":" events);","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"SherisseTJW":17,"choowengyan":56,"NeoHW":15,"-":55}},{"path":"src/test/java/seedu/address/testutil/PatientUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FAMILY_CONDITION;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FOOD_PREFERENCE;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HOBBY;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PID;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PREFERRED_NAME;","lastModifiedDate":"2024-03-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 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":"NeoHW"},"content":"import seedu.address.model.patient.EditPatientDescriptor;","lastModifiedDate":"2024-03-11"},{"lineNumber":15,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * A utility class for Patient.","lastModifiedDate":"2024-03-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":21,"author":{"gitId":"NeoHW"},"content":"public class PatientUtil {","lastModifiedDate":"2024-03-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"NeoHW"},"content":" * Returns an add command string for adding the {@code patient}.","lastModifiedDate":"2024-03-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":26,"author":{"gitId":"NeoHW"},"content":" public static String getAddCommand(Patient patient) {","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"NeoHW"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPatientDetails(patient);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Returns the part of command string for the given {@code patient}\u0027s details.","lastModifiedDate":"2024-03-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":33,"author":{"gitId":"NeoHW"},"content":" public static String getPatientDetails(Patient patient) {","lastModifiedDate":"2024-03-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" sb.append(PREFIX_PID + patient.getPatientHospitalId().patientHospitalId + \" \");","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"NeoHW"},"content":" sb.append(PREFIX_NAME + patient.getName().fullName + \" \");","lastModifiedDate":"2024-03-08"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" sb.append(PREFIX_PREFERRED_NAME + patient.getPreferredName().preferredName + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"choowengyan"},"content":" sb.append(PREFIX_FOOD_PREFERENCE + patient.getFoodPreference().foodPreference + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"choowengyan"},"content":" sb.append(PREFIX_FAMILY_CONDITION + patient.getFamilyCondition().familyCondition + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"choowengyan"},"content":" sb.append(PREFIX_HOBBY + patient.getHobby().hobby + \" \");","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"NeoHW"},"content":" patient.getTags().stream().forEach(","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * Returns the part of command string for the given {@code EditPatientDescriptor}\u0027s details.","lastModifiedDate":"2024-03-09"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"NeoHW"},"content":" public static String getEditPatientDescriptorDetails(EditPatientDescriptor descriptor) {","lastModifiedDate":"2024-03-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" descriptor.getPatientHospitalId().ifPresent(patientHospitalId -\u003e sb.append(PREFIX_PID)","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" .append(patientHospitalId.patientHospitalId).append(\" \"));","lastModifiedDate":"2024-03-14"},{"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":"choowengyan"},"content":" descriptor.getPreferredName().ifPresent(preferredName -\u003e sb.append(PREFIX_PREFERRED_NAME)","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"choowengyan"},"content":" .append(preferredName.preferredName).append(\" \"));","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"choowengyan"},"content":" descriptor.getFoodPreference().ifPresent(foodPreference -\u003e sb.append(PREFIX_FOOD_PREFERENCE)","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" .append(foodPreference.foodPreference).append(\" \"));","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" descriptor.getFamilyCondition().ifPresent(familyCondition -\u003e sb.append(PREFIX_FAMILY_CONDITION)","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":" .append(familyCondition.familyCondition).append(\" \"));","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":" descriptor.getHobby().ifPresent(hobby -\u003e sb.append(PREFIX_HOBBY).append(hobby.hobby).append(\" \"));","lastModifiedDate":"2024-03-14"},{"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":{"choowengyan":19,"NeoHW":13,"-":40}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" * Returns the middle index of the patient in the {@code model}\u0027s patient list.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" return Index.fromOneBased(model.getFilteredPatientList().size() / 2);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Returns the last index of the patient in the {@code model}\u0027s patient list.","lastModifiedDate":"2024-03-08"},{"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":"NeoHW"},"content":" return Index.fromOneBased(model.getFilteredPatientList().size());","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" * Returns the patient in the {@code model}\u0027s patient list at {@code index}.","lastModifiedDate":"2024-03-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"NeoHW"},"content":" public static Patient getPatient(Model model, Index index) {","lastModifiedDate":"2024-03-09"},{"lineNumber":53,"author":{"gitId":"NeoHW"},"content":" return model.getFilteredPatientList().get(index.getZeroBased());","lastModifiedDate":"2024-03-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"NeoHW":8,"-":47}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"NeoHW"},"content":" public static final Index INDEX_FIRST_PATIENT \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-09"},{"lineNumber":10,"author":{"gitId":"NeoHW"},"content":" public static final Index INDEX_SECOND_PATIENT \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-09"},{"lineNumber":11,"author":{"gitId":"NeoHW"},"content":" public static final Index INDEX_THIRD_PATIENT \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-03-09"},{"lineNumber":12,"author":{"gitId":"ZhiWei1010"},"content":" public static final Index INDEX_FIRST_EVENT \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"ZhiWei1010"},"content":" public static final Index INDEX_SECOND_EVENT \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"ZhiWei1010"},"content":" public static final Index INDEX_THIRD_EVENT \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"ZhiWei1010":3,"NeoHW":3,"-":9}},{"path":"src/test/java/seedu/address/testutil/TypicalPatients.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":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_DATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_DATETIME;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EVENT_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FAMILY_CONDITION_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FAMILY_CONDITION_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FOOD_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FOOD_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOBBY_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_HOBBY_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ID_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"SherisseTJW"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PREFERRED_NAME_AMY;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PREFERRED_NAME_BOB;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DEPRESSION;","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"choowengyan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_DIABETES;","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"SherisseTJW"},"content":"","lastModifiedDate":"2024-03-15"},{"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":"NeoHW"},"content":"import seedu.address.model.patient.Patient;","lastModifiedDate":"2024-03-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":29,"author":{"gitId":"NeoHW"},"content":" * A utility class containing a list of {@code Patient} objects to be used in tests.","lastModifiedDate":"2024-03-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":31,"author":{"gitId":"NeoHW"},"content":"public class TypicalPatients {","lastModifiedDate":"2024-03-09"},{"lineNumber":32,"author":{"gitId":"choowengyan"},"content":" public static final Patient ALICE \u003d new PatientBuilder().withPatientHospitalId(\"12234\").withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(\"Alice\").withFoodPreference(\"Duck rice\")","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"choowengyan"},"content":" .withFamilyCondition(\"Have 2 daughters working overseas\").withHobby(\"Watching Hong Kong drama\")","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"choowengyan"},"content":" .withTags(\"depression\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"choowengyan"},"content":" public static final Patient BENSON \u003d new PatientBuilder().withPatientHospitalId(\"12235\").withName(\"Benson Meier\")","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(\"Benson\").withFoodPreference(\"Kampung Fried Rice\").withFamilyCondition(\"Wife in ICU\")","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"SherisseTJW"},"content":" .withHobby(\"Listen to Coldplay songs\").withTags(\"diabetes\", \"cholesterol\").withEvents(","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"SherisseTJW"},"content":" new String[] { VALID_EVENT_NAME, VALID_EVENT_NAME },","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"SherisseTJW"},"content":" new String[] { VALID_EVENT_DATE, VALID_EVENT_DATETIME }).build();;","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"choowengyan"},"content":" public static final Patient CARL \u003d new PatientBuilder().withPatientHospitalId(\"12236\").withName(\"Carl Kurz\")","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(\"Ah Carl\").withFoodPreference(\"Sambal fish\").withFamilyCondition(\"Has no children\")","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"choowengyan"},"content":" .withHobby(\"Likes to play mahjong\").build();","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"choowengyan"},"content":" public static final Patient DANIEL \u003d new PatientBuilder().withPatientHospitalId(\"12237\").withName(\"Daniel Meier\")","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(\"Ah Da\").withFoodPreference(\"Steak\").withFamilyCondition(\"Nieces not around Singapore\")","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"choowengyan"},"content":" .withHobby(\"Cycling\").withTags(\"eczema\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"choowengyan"},"content":" public static final Patient ELLE \u003d new PatientBuilder().withPatientHospitalId(\"12238\").withName(\"Elle Meyer\")","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(\"Elle\").withFoodPreference(\"Maggie Goreng\").withFamilyCondition(\"Husband working overseas\")","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"choowengyan"},"content":" .withHobby(\"Dancing\").build();","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"choowengyan"},"content":" public static final Patient FIONA \u003d new PatientBuilder().withPatientHospitalId(\"12239\").withName(\"Fiona Kunz\")","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(\"Ms Fi\").withFoodPreference(\"Fish soup without milk\")","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"choowengyan"},"content":" .withFamilyCondition(\"Daughter fights with her every week\").withHobby(\"dancing\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"choowengyan"},"content":" public static final Patient GEORGE \u003d new PatientBuilder().withPatientHospitalId(\"12240\").withName(\"George Best\")","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(\"George\").withFoodPreference(\"Salmon with lemon\").withFamilyCondition(\"no children\")","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"choowengyan"},"content":" .withHobby(\"reading books\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":58,"author":{"gitId":"choowengyan"},"content":" public static final Patient HOON \u003d new PatientBuilder().withPatientHospitalId(\"12241\").withName(\"Hoon Meier\")","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(\"Ah Hoon\").withFoodPreference(\"Char Kuey Teow\").withFamilyCondition(\"Husband unable to walk\")","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"choowengyan"},"content":" .withHobby(\"Reads novel\").build();","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"choowengyan"},"content":" public static final Patient IDA \u003d new PatientBuilder().withPatientHospitalId(\"12242\").withName(\"Ida Mueller\")","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(\"Puan Ida\").withFoodPreference(\"Nasi Kandang\").withFamilyCondition(\"Children abandoned her\")","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"choowengyan"},"content":" .withHobby(\"Plays congkak\").build();","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":65,"author":{"gitId":"NeoHW"},"content":" // Manually added - Patient\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-03-08"},{"lineNumber":66,"author":{"gitId":"choowengyan"},"content":" public static final Patient AMY \u003d new PatientBuilder().withPatientHospitalId(VALID_ID_AMY).withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(VALID_PREFERRED_NAME_AMY).withFoodPreference(VALID_FOOD_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"choowengyan"},"content":" .withFamilyCondition(VALID_FAMILY_CONDITION_AMY).withHobby(VALID_HOBBY_AMY)","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"choowengyan"},"content":" .withTags(VALID_TAG_DIABETES).build();","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"choowengyan"},"content":" public static final Patient BOB \u003d new PatientBuilder().withPatientHospitalId(VALID_ID_BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"choowengyan"},"content":" .withPreferredName(VALID_PREFERRED_NAME_BOB).withFoodPreference(VALID_FOOD_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"choowengyan"},"content":" .withFamilyCondition(VALID_FAMILY_CONDITION_BOB).withHobby(VALID_HOBBY_BOB)","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"choowengyan"},"content":" .withTags(VALID_TAG_DEPRESSION, VALID_TAG_DIABETES).build();","lastModifiedDate":"2024-03-14"},{"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":"NeoHW"},"content":" private TypicalPatients() {} // prevents instantiation","lastModifiedDate":"2024-03-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"NeoHW"},"content":" * Returns an {@code AddressBook} with all the typical patients.","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" for (Patient patient : getTypicalPatients()) {","lastModifiedDate":"2024-03-09"},{"lineNumber":85,"author":{"gitId":"NeoHW"},"content":" ab.addPatient(patient);","lastModifiedDate":"2024-03-09"},{"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":"NeoHW"},"content":" public static List\u003cPatient\u003e getTypicalPatients() {","lastModifiedDate":"2024-03-09"},{"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":{"SherisseTJW":9,"choowengyan":47,"NeoHW":9,"-":28}}] diff --git a/AY2324S2-CS2103-F09-2_tp_master/commits.json b/AY2324S2-CS2103-F09-2_tp_master/commits.json index e2f2a547..e1a6848f 100644 --- a/AY2324S2-CS2103-F09-2_tp_master/commits.json +++ b/AY2324S2-CS2103-F09-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"guohuang88":[{"date":"2024-03-05","commitResults":[{"hash":"67cb69188c5c4655d8709f6ce3bc0bc089286207","isMergeCommit":false,"messageTitle":"Update AboutUs.md to add profile picture","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]},{"date":"2024-03-06","commitResults":[{"hash":"2210a0fd7846a8923b1777796d49469dfec2ffed","isMergeCommit":true,"messageTitle":"Merge pull request #39 from NeoHW/V1.1-ReadMe","messageBody":"Update README with project details and UI mockup","fileTypesAndContributionMap":{}},{"hash":"309a95f89f3ec28c2b56dbbd2b5c3187ff494248","isMergeCommit":true,"messageTitle":"Merge pull request #38 from NeoHW/V1.1-UserStories","messageBody":"Add Nurse user stories for PatientSync","fileTypesAndContributionMap":{}},{"hash":"3ebbae815f98eec9afbd0bf04edeb7ec9535e6f9","isMergeCommit":false,"messageTitle":"Add use cases in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":153,"deletions":8}}}]},{"date":"2024-03-08","commitResults":[{"hash":"b0f8627c0a934b926ff27a8ea2903ee555685405","isMergeCommit":true,"messageTitle":"Merge pull request #51 from NeoHW/v1.1-Fix-UG","messageBody":"Fix User Guide to be in terms of PatientSync instead of AB-3","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"6d88de5ef15fb883093ee6f2f6d439d70f151215","isMergeCommit":true,"messageTitle":"Merge pull request #57 from SherisseTJW/fix/unable-to-load-addressbook","messageBody":"fix: Null errors on running","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"1c7d87f3abc00843c4ad8690585e98a9b9ddf3c3","isMergeCommit":true,"messageTitle":"Merge pull request #62 from NeoHW/V1.2-plantUML-dependencies","messageBody":"V1.2 Update Docs and dependencies","fileTypesAndContributionMap":{}},{"hash":"cd41d4424da3ab1837e31493535b7434dd563e5d","isMergeCommit":false,"messageTitle":"Update DeveloperGuide to include delete command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":0}}},{"hash":"fd530985b42495646f76c5bf8662d510e18e8ade","isMergeCommit":false,"messageTitle":"Update DeleteCommand class to delete a patient with new delete message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":2}}},{"hash":"cb2c28c547fe61d22caadb4b39351d628dd5ecd6","isMergeCommit":false,"messageTitle":"Fix test cases in DeleteCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-16","commitResults":[{"hash":"a9bf5c3d90416212c027b0d9a35e83b0a7d00906","isMergeCommit":false,"messageTitle":"Add EditImportantDateCommand feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":179,"deletions":1}}},{"hash":"5ab03db361b15e6491b49928a6f352ffec6d2c49","isMergeCommit":false,"messageTitle":"Add test cases for EditImportantDateCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":228,"deletions":0}}},{"hash":"16468a695aad6f5af95742f74a6b8692be3ab0fb","isMergeCommit":false,"messageTitle":"Update Developer Guide and User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":68,"deletions":3}}}]},{"date":"2024-03-18","commitResults":[{"hash":"9067fea0a9dd86876027c54eedabbe7bf65d06e3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-v1.2-edit-important-date","messageBody":"# Conflicts:\n#\tdocs/DeveloperGuide.md\n#\tsrc/main/java/seedu/address/logic/Messages.java\n","fileTypesAndContributionMap":{}},{"hash":"454bfb6228cabd89dd812495644e1202677a2ef6","isMergeCommit":false,"messageTitle":"Refactor EditImportantDateCommand to EditEventCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":47,"deletions":47},"test-code":{"insertions":240,"deletions":228}}},{"hash":"29b58a759dcacc4e542915c7efdf5effe3abb1a5","isMergeCommit":false,"messageTitle":"Update User Guide and Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":35}}},{"hash":"77aea7ab44523cf891944504e9d0cc9f65c2f633","isMergeCommit":false,"messageTitle":"Minor Developer Guide update","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b3e52cd9bb0bd76b6744935d72a9393236930c23","isMergeCommit":false,"messageTitle":"Remove an unused constant value","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"1988c4ee82a4ebd939538994c2c7369ccf4766fc","isMergeCommit":false,"messageTitle":"Add EditEventSequenceDiagram and update DeleteSequenceDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":81,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"add53b037ba1698ca96994853170fb7212558c0a","isMergeCommit":true,"messageTitle":"Merge pull request #90 from ZhiWei1010/v1.2-list-command","messageBody":"Docs: Update developer guide to include ListCommand interaction","fileTypesAndContributionMap":{}},{"hash":"9c37544f2af1873e667359365376643d34c8666a","isMergeCommit":true,"messageTitle":"Merge pull request #93 from choowengyan/docs/add-sequence-diagram","messageBody":"Docs: v1.2 Add Sequence Diagram for AddCommand \u0026 EditCommand","fileTypesAndContributionMap":{}},{"hash":"75e22f557a3cb8e1c5b01023f268c16a7baafb55","isMergeCommit":false,"messageTitle":"Update Developer Guide for DeleteCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"95d206933590e1a7a5c7dbe70cf85f16caef5c53","isMergeCommit":true,"messageTitle":"Merge pull request #107 from ZhiWei1010/v1.2-release-0.1","messageBody":"Update front page of User Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"861179b602bf82f7d9f8585634a170721950c437","isMergeCommit":false,"messageTitle":"Update NameContainsKeywordsPredicate class to search patient using patient name for find command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"c1d9b5ec33d269a3cdd999e0dd839112298b9221","isMergeCommit":false,"messageTitle":"Update UI to remove patient hospital id shown in the patient list","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":5}}},{"hash":"d59b69f71286693110be8c4e08edf4e340665157","isMergeCommit":false,"messageTitle":"Update test case in NameContainsKeywordsPredicateTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"87e3521659afe725a8f6bba51aae396d100a9053","isMergeCommit":false,"messageTitle":"Update User Guide for FindCommand and update numbered list to follow proper coding standard","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":13}}},{"hash":"4baebdac3bb576c7568931174410450ffe6d454a","isMergeCommit":false,"messageTitle":"Update Developer Guide to include FindCommand and add FindSequenceDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":110,"deletions":0}}},{"hash":"c4be93aea84dbb1b249d83d067b345bfdbf0f6f1","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f0c5d2a127ad587fa67fca4c61c588e8ca2e34a1","isMergeCommit":false,"messageTitle":"Update test case in NameContainsKeywordsPredicateTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-23","commitResults":[{"hash":"4905c574d19d8aceac455ce855feac9561c47c6a","isMergeCommit":true,"messageTitle":"Merge pull request #116 from NeoHW/V1.3-TagsEnhancement","messageBody":"V1.3 tags enhancement","fileTypesAndContributionMap":{}},{"hash":"2ebf3934557eb3f628e9bc8e1a322a38029162f6","isMergeCommit":true,"messageTitle":"Merge pull request #117 from SherisseTJW/feat/custom-duplicate-event-message","messageBody":"Add a custom duplicate message when the user adds a duplicate event","fileTypesAndContributionMap":{}},{"hash":"2d7fa402a7e93943854264304d93515159fce753","isMergeCommit":false,"messageTitle":"Update EditEventCommand class to have a customised message for duplicate events","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":1}}},{"hash":"ecee6403fa212a7fb71717da2e79a4890212732e","isMergeCommit":false,"messageTitle":"Update EditEventCommandTest to test for duplicate events","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":0}}},{"hash":"f5a940688684582b7e9a4d572eec73ddf6869ea4","isMergeCommit":false,"messageTitle":"Update Developer Guide for EditEventCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"2b570b0aeafde8c2a71724f7633740e48b56ca73","isMergeCommit":false,"messageTitle":"Remove extra new line in AddEventCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"7efd227f6f7fdaa78d6ea2a0c56514a8b686722e","isMergeCommit":true,"messageTitle":"Merge pull request #120 from SherisseTJW/feat/sort-events","messageBody":"Preserve Ordering for Events by Sorting them","fileTypesAndContributionMap":{}}]}],"SherisseTJW":[{"date":"2024-03-04","commitResults":[{"hash":"6aaaf3fa750fe83176ac00adc3f7c0e0c15d20df","isMergeCommit":true,"messageTitle":"Merge pull request #22 from NeoHW/V1.1-AddProfilePic","messageBody":"V1.1 add profile pic","fileTypesAndContributionMap":{}},{"hash":"8f2224d5f8fdee7802fa4b96d441a0695cec983a","isMergeCommit":true,"messageTitle":"Merge pull request #23 from ZhiWei1010/v1.1-add-profile-picture","messageBody":"Update AboutUs.md for milestone v1.1","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"482117fa53f473a152cfe2ebcdef1b577b0a0592","isMergeCommit":false,"messageTitle":"doc: Update About Us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":5}}},{"hash":"2b8ae16bc2f7c127ca668df2013bf003b541b9ae","isMergeCommit":false,"messageTitle":"minor-doc-fix: Style Errors in build","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"8d97da58f2cf227f5f91b09d66652fecd148e8c5","isMergeCommit":true,"messageTitle":"Merge pull request #40 from guohuang88/branch-UseCases","messageBody":"Add use cases in Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"f734e81d6235797f85cb762e847fa18d5d2e0f2f","isMergeCommit":false,"messageTitle":"fix: Change extension to lower case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"797d8de10ba054b991d3cf3a9b69e18949c29da4","isMergeCommit":true,"messageTitle":"Merge pull request #52 from NeoHW/V1.2-Convert-Person-to-Patient","messageBody":"V1.2 convert person to patient Model","fileTypesAndContributionMap":{}}]},{"date":"2024-03-09","commitResults":[{"hash":"e5335b217aec13f412aab747f5eff2c7c69dde45","isMergeCommit":true,"messageTitle":"Merge pull request #54 from NeoHW/V1.2-Convert-Person-to-Patient-Main-Java","messageBody":"V1.2 convert person to patient main java","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"fb1c3e1fd59fb4ad61ed721e75b304f571bbf89b","isMergeCommit":false,"messageTitle":"fix: Null errors on running","messageBody":"Some *person* for JavaFx were not changed to patient, causing null errors on running AddressBook\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-12","commitResults":[{"hash":"ef47664951e032e4ded97dc97a0ba6e01524d53e","isMergeCommit":false,"messageTitle":"feat: Add ImportantDate Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":143,"deletions":0},"test-code":{"insertions":76,"deletions":0}}},{"hash":"4f7e8f5fbf588a92d9171d0a1407d2513be7f491","isMergeCommit":false,"messageTitle":"feat: Add Event Name attribute to Important Date","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":9},"test-code":{"insertions":22,"deletions":17}}},{"hash":"0079b635cf431dc70cb1508292bd2878a8677950","isMergeCommit":false,"messageTitle":"feat: Add ImportantDate Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":271,"deletions":122}}}]},{"date":"2024-03-13","commitResults":[{"hash":"833fca6bc94ac7aaf0539ad7ef9f45efc05127e5","isMergeCommit":false,"messageTitle":"feat: Add Parsers for AddImportantDateCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":135,"deletions":29},"test-code":{"insertions":53,"deletions":44}}},{"hash":"54a04252f0d715f1c773d541c042106f49a0ce7f","isMergeCommit":false,"messageTitle":"fix: String formatting error for MESSAGE_SUCCESS","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"ac45628e5e982082493d9f757da67efb39bcd359","isMergeCommit":false,"messageTitle":"fix: Fix Errors in message shown to user","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"d72117ce54491a3a27b601dc6a799102bca3c4ed","isMergeCommit":false,"messageTitle":"wip: Fix failing tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":0},"test-code":{"insertions":10,"deletions":0}}},{"hash":"666d780577c319dbf368ea28f00a34afabaaa360","isMergeCommit":true,"messageTitle":"Merge pull request #58 from NeoHW/V1.2-addTagsBackend","messageBody":"V1.2 add tags backend","fileTypesAndContributionMap":{}},{"hash":"97a409797e0709d8f957e4d0476c0b9bc16bb2b5","isMergeCommit":false,"messageTitle":"fix: Failing tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":3}}},{"hash":"93a8a253901fcfa55240ebbff16bdf761c6d710d","isMergeCommit":false,"messageTitle":"test: Add tests for AddImportantDateCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":104,"deletions":0}}},{"hash":"4566db5a5a1d768e056f89a3280d418d2da9bfb6","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into feat/add-important-dates-for-patients","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d668430d73fe9b6411aab763778394641d104d2a","isMergeCommit":false,"messageTitle":"feat: Add tests for AddImportantDate Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0},"test-code":{"insertions":64,"deletions":4}}},{"hash":"85c83c3cbb2e8b10e296301ec7daab632a57e279","isMergeCommit":false,"messageTitle":"doc: Update Dev and User Documentation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":0}}},{"hash":"7469b1eccfdb589863e74229505f33b4a516c6af","isMergeCommit":false,"messageTitle":"test: Add more tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":0}}},{"hash":"aea25f1c831ca6b777203979674bb3826695a1b4","isMergeCommit":false,"messageTitle":"fix: Quick fixes per PR Review","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":1,"deletions":1},"test-code":{"insertions":14,"deletions":14}}},{"hash":"e6d595c8fd6f47739b57641881621896328da188","isMergeCommit":false,"messageTitle":"refactor: arePrefixesPresent method to ParserUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":20}}}]},{"date":"2024-03-14","commitResults":[{"hash":"48c0efb6f2648861a16aecb32b04571eb60e821a","isMergeCommit":true,"messageTitle":"Merge pull request #63 from guohuang88/branch-v1.2-delete-command","messageBody":"V1.2 Update Delete Command","fileTypesAndContributionMap":{}},{"hash":"d43cb0d7d52932a35a3c2392491d0868484a884b","isMergeCommit":false,"messageTitle":"feat: Add basic list UI for Important Dates","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}}]},{"date":"2024-03-15","commitResults":[{"hash":"5ed36f68fc9c67e8a6166be669831eac57fd2664","isMergeCommit":false,"messageTitle":"feat: Move ImportantDate List to right side","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":3}}},{"hash":"764d2fe9096721b0cb346192275fd2a522c99fe1","isMergeCommit":false,"messageTitle":"fix: Save Important Dates to addressbook.json","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":86,"deletions":10},"test-code":{"insertions":23,"deletions":13}}},{"hash":"c00121cc7c58a6b8905d3955a1e315e038a10826","isMergeCommit":false,"messageTitle":"fix: UI Display of Important Dates","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":8}}},{"hash":"a5dc3abc6590d51673ccbb8d771ad4ef1ce74f4c","isMergeCommit":false,"messageTitle":"fix: Style Warnings","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":5},"test-code":{"insertions":27,"deletions":12}}},{"hash":"cb954b9565d5c6a11896ac460415bfa71fbc7640","isMergeCommit":false,"messageTitle":"feat-test: Add tests for Save to addressbook.json","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":13}}},{"hash":"bda95b252b702db8972bdfe488fa5eed333dc75f","isMergeCommit":false,"messageTitle":"fix: Build errors from checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":2}}},{"hash":"fdecc9f9d78d8ddf3d1226d90f5cf667317aceda","isMergeCommit":false,"messageTitle":"refactor: Move tags and important dates display to sep. method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":0}}},{"hash":"fc940ee88092c79e28bbeda6eb29d19f979cc8bb","isMergeCommit":false,"messageTitle":"fix: Lacking code coverage due to UI testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":12}}},{"hash":"9d42e19e894d8ec85060fe1d01f918659fed1d7e","isMergeCommit":false,"messageTitle":"fix: Remove unneeded funcs in JsonAdaptedImportantDate","messageBody":"Trying to increase CodeCoverage percentage to account for UI tests\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":8}}}]},{"date":"2024-03-18","commitResults":[{"hash":"c7db4dd25eaeeb030389e19d07c0ea246f4e172e","isMergeCommit":false,"messageTitle":"fix: Message Success message for AddImportantDateCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"08bcbc23d825ff3221afcffcdc0496a9d94a881b","isMergeCommit":false,"messageTitle":"fix: Validation for date time args","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":16}}},{"hash":"a7e32364c4f35f48089df23de2ba349997039110","isMergeCommit":false,"messageTitle":"feat: Add more tests for ImportantDate Validation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4},"test-code":{"insertions":3,"deletions":2}}},{"hash":"bcff735c45d8e5000d7f6c66ac3a65dc9f113ab7","isMergeCommit":false,"messageTitle":"test-feat: Add validation tests for ImportantDate","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":1}}},{"hash":"eeca15334bd6016b7c11cec4d1e2315bc7ed27f9","isMergeCommit":false,"messageTitle":"minor: Add Event to Sample Data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":8}}},{"hash":"d640ea7e69b3cd60b60123953f1dd6c8cfaf43c3","isMergeCommit":false,"messageTitle":"refactor: Rename all instances of ImportantDate to Event","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":118,"deletions":119},"other":{"insertions":165,"deletions":165},"docs":{"insertions":7,"deletions":7},"test-code":{"insertions":251,"deletions":251}}},{"hash":"4bce68bc3d29ea9c7a03a49c5f4cfc73659b04c7","isMergeCommit":false,"messageTitle":"style: Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"d3a9290607c6b7ac778ac4bf35a0db2186c723bd","isMergeCommit":true,"messageTitle":"Merge pull request #66 from choowengyan/feat/edit-patient-info","messageBody":"v1.2 Add Patient \u0026 Edit Patient Command ","fileTypesAndContributionMap":{}},{"hash":"ee2522b24cf21b0004be57b7ba3e22247e229e23","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feat/refactor-important-dates-to-events","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8f1ec998708ac140154187670d2e8412c9203d17","isMergeCommit":true,"messageTitle":"Merge pull request #72 from guohuang88/branch-v1.2-edit-important-date","messageBody":"v1.2 Edit Important Date","fileTypesAndContributionMap":{}},{"hash":"a27dd2da06bf877ef18824089da0c983f7155751","isMergeCommit":false,"messageTitle":"fix: Indexing error with Delete Event Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"b95e32a59f0bf62365729f5fde5d865060020e0a","isMergeCommit":false,"messageTitle":"fix-test: Fix error in execute delete event command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"c0bcc9b444995bfca1b6f84358586b5b505b635a","isMergeCommit":true,"messageTitle":"Merge pull request #80 from NeoHW/V1.2-DeleteTags","messageBody":"V1.2 delete tags","fileTypesAndContributionMap":{}},{"hash":"3484d5988ebdd948731e91e0bb9c717019a0ecf0","isMergeCommit":false,"messageTitle":"doc: Add puml diagram and update DG for AddEvent","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":110,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"4ca3876c5062c81940e45d8236ce9c072c9d76b2","isMergeCommit":false,"messageTitle":"doc: Embed PlantUML Diagram for AddEventCommand in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":1}}},{"hash":"d444d0c9e4ca01530264ac2550f66c284e90c2d1","isMergeCommit":true,"messageTitle":"Merge pull request #94 from guohuang88/branch-v1.2-updateDG","messageBody":"Docs: v1.2 Update Developer Guide for DeleteCommand","fileTypesAndContributionMap":{}},{"hash":"4dcf337e842590d057c4a6ba9d22805709c3efb0","isMergeCommit":false,"messageTitle":"doc: Update Links for README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-21","commitResults":[{"hash":"cf6345872cf1ffb04196415ee8fb73d02180418e","isMergeCommit":true,"messageTitle":"Merge pull request #102 from ZhiWei1010/v1.2-release","messageBody":"Update build.gradle and User Guide for release","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"5a9fbd3f9ae49bc356d895f897320ce20c8da620","isMergeCommit":true,"messageTitle":"Merge pull request #114 from guohuang88/branch-v1.3-PatientHospitalIdIssues","messageBody":"v1.3 Patient Hospital Id issues","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"9d782ce76c7d22de9c97182d04ae5c857f45a6f4","isMergeCommit":false,"messageTitle":"feat: Add custom duplicate message for add events","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1},"test-code":{"insertions":33,"deletions":0}}},{"hash":"24fe4f73876a00c66dc403e474b04e3039cbf22d","isMergeCommit":false,"messageTitle":"minor: Rename ImportantDates to Events in comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"007374ee2d5427087c1462c6be5017b39fdf4928","isMergeCommit":false,"messageTitle":"feat: Add sorting of events to add, edit and delete commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":1}}},{"hash":"147a29f6d51e6884089b2f16652f5cea403b78bd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feat/sort-events","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"38bfed32a5595ab2eb5428bdf36ee5debdbfbc5d","isMergeCommit":false,"messageTitle":"minor: Convert ImportantDate to Event in comments and DG","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"docs":{"insertions":21,"deletions":21},"test-code":{"insertions":1,"deletions":7}}},{"hash":"bd1a523898cf600f4e562ba6b41408789b74b8d8","isMergeCommit":false,"messageTitle":"doc: Update DG for sorted events in list command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"9814c9cdbd2e9df5193e6e7d01cbe8edcd76fd81","isMergeCommit":false,"messageTitle":"test: Add test for compareTo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":27,"deletions":0}}},{"hash":"c3cfb289ec09ad17687eac59c54f0e4ceb2975da","isMergeCommit":false,"messageTitle":"feat: Update Event compareTo to account for null start / end times","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":5},"test-code":{"insertions":14,"deletions":11}}},{"hash":"16e915540aff07abc5e7d141064fda324481e61c","isMergeCommit":false,"messageTitle":"test: Add test for null time event compared to datetime event","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":0}}},{"hash":"56814faa5e8c5f9e4632092ec674254ac22ef150","isMergeCommit":false,"messageTitle":"fix-test: Increase Code Coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":8}}}]}],"ZhiWei1010":[{"date":"2024-03-04","commitResults":[{"hash":"a82460a19c98af3bf8d133548113d352c4fa7484","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"Add profile picture.\n\nUpdate github link to redirect to personal github page.\n\nUpdate portfolio link to redirect to team portfolio page.\n\nUpdate role and responsibility for Tan Zhi Wei .\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]},{"date":"2024-03-06","commitResults":[{"hash":"6b44c9a59d9a65c8cec1f010d9a69d83e9528584","isMergeCommit":true,"messageTitle":"Merge pull request #32 from NeoHW/V1.1-DG-UserProfile-and-ValueProposition","messageBody":"Adapt target user profile and value proposition to fit PatientSync","fileTypesAndContributionMap":{}},{"hash":"95fb1f028ea0bd024712a4282e0a72561288eea7","isMergeCommit":true,"messageTitle":"Merge pull request #37 from NeoHW/V1.1-DG-NFR","messageBody":"Update non-functional requirements to match Patientsync","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"589362eb58caf70adacd2f718bc96193757bb199","isMergeCommit":false,"messageTitle":"Logic: Add new DeleteImportantDateCommand","messageBody":"Add a new DeleteImportantDateCommand class to handle the deletion of\nimportant dates by patient id and important date id.\n\nTeach app to accept deleteID as a new command word and return a\nnew DeleteImportantDateCommand if format is correct, else throw an\nexception.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":148,"deletions":0}}},{"hash":"fccf694e7c6b80374dab214e294df70623d3f027","isMergeCommit":false,"messageTitle":"Logic: Teach model to delete all ImportantDates of Patient","messageBody":"Update model to delete all important dates of patient instead of by\nevent index.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":18}}},{"hash":"65ffd1542a3a2d5185b585423033caa7e6ede2b9","isMergeCommit":false,"messageTitle":"Update check style to match guidelines","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":17}}}]},{"date":"2024-03-15","commitResults":[{"hash":"bd3f52a74b0351e1b8266b87c442935d52b852fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103-F09-2/tp into v1.2-delete-important-dates","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9553b74151045e88feef95d3dbb5582e6e5aea23","isMergeCommit":false,"messageTitle":"Logic: Update DeleteImportantDateCommand to delete by event ID","messageBody":"Update COMMAND_WORD for DeleteImportantDateCommand to be \u0027deletee\u0027 for\nconsistency with \u0027adde\u0027.\n\nUpdate MESSAGE_USUAGE to stay consistent with new format.\n\nRemove extra empty line from\nAddressBookParser#parseCommand(String userInput).\n","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":16}}},{"hash":"946414d95f3af7f91f6427f8e3891109fdfc45fd","isMergeCommit":true,"messageTitle":"Merge pull request #67 from SherisseTJW/fix/list-command-should-show-important-dates","messageBody":"Fix bug where Important Dates were not saved to the AddressBook.json, and cannot be shown in `list` command","fileTypesAndContributionMap":{}},{"hash":"7b6a49d88d2a0b0a4355643f490d6940366a98eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2-delete-important-dates","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3b505c13deb7b99268a9d9f423cacf61bc33d448","isMergeCommit":false,"messageTitle":"Logic: Update equals() method and toString() method to work correctly","messageBody":"Add a check for targetEventIndex in DeleteImportantDateCommand#Equals().\n\nAdd a new field of targetEventIndex for\nDeleteImportantDateCommand#toString().\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"371f5cb3cfff35dc0bc35da64ceac78839652127","isMergeCommit":false,"messageTitle":"Logic: Update constructor in DeleteImportantDateCommand","messageBody":"Add requiredAllNonNull check for both parameters of constructor.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"35b71f0988f42fa280d06e5d28a1f85c99a8b513","isMergeCommit":false,"messageTitle":"Test: Add tests for DeleteImportantCommand","messageBody":"Create new DeleteImportantCommandTest class to test\nDeleteImportantCommand.\n\nAdd relevant tests to ensure that DeleteImportantCommand works as\nexpected.\n","fileTypesAndContributionMap":{"test-code":{"insertions":114,"deletions":0}}},{"hash":"813c86296545cd79028f99a3db74966f2cecff87","isMergeCommit":false,"messageTitle":"Test: Add more tests for DeleteImportantDateCommand","messageBody":"Add Test for Invalid Event Id but valid Patient Id.\n\nAdd new test case in equals() method\n","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":1}}},{"hash":"d77daf5fb29a11f0a956902db6b569b4260799d8","isMergeCommit":false,"messageTitle":"Test: Add new DeleteImportantDateCommandParserTest class","messageBody":"Test to ensure DeleteImportantDateCommandParser works as expected.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":61,"deletions":3}}},{"hash":"a21dcedda8cc2731e2806654b3c7697641fcc65f","isMergeCommit":false,"messageTitle":"Documentation: Update User Guide and Developer Guide","messageBody":"Add new section for Delete Important Date command in User Guide,\nteaching users how to use the command, includes some examples as well.\n\nAdd new section for Deleting Important Date command in Developer Guide.\n","fileTypesAndContributionMap":{"docs":{"insertions":61,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"1614b2e5dc4f27b532378f5272948b7c5de79dc7","isMergeCommit":true,"messageTitle":"Merge pull request #88 from guohuang88/branch-v1.2-EditEventCommandSequenceDiagram","messageBody":"v1.2 Add EditEventSequenceDiagram and update DeleteSequenceDiagram","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"b3f4492f509057f0406541189acf69b1817eac43","isMergeCommit":true,"messageTitle":"Merge pull request #89 from SherisseTJW/doc/embed-add-event-uml-developer-guide","messageBody":"Embed PlantUML Diagram for AddEventCommand in DG","fileTypesAndContributionMap":{}},{"hash":"52c853d2ba7393f3baceace6b65567a3dcd476b6","isMergeCommit":false,"messageTitle":"Docs:Update ListCommand in Developer Guide","messageBody":"Add in ListCommand interaction in Developer guide.\n\nAdd UML sequence diagram in ListCommand.\n","fileTypesAndContributionMap":{"docs":{"insertions":73,"deletions":0}}},{"hash":"18508e500b6a2e64adaffcc56a0a5888ceca0a39","isMergeCommit":false,"messageTitle":"Docs: Update Developer Guide on DeleteEventCommand","messageBody":"Add Sequence Diagram for DeleteEventCommand.\n\nAdd syntax to choose event to delete in DeleteEventCommand as a new\ndesign consideration.\n\nEmbed sequence diagram for EditEventCommand in Developer guide.\n","fileTypesAndContributionMap":{"docs":{"insertions":98,"deletions":0}}},{"hash":"7a494e226ef8e50c014df5ddba1dfa5a3cc5f7dc","isMergeCommit":true,"messageTitle":"Merge pull request #97 from SherisseTJW/doc/update-guides-and-readme","messageBody":"Fix the Project Links in README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"c4ebbcdad5cf73e2396fc927741e37e9f177c816","isMergeCommit":false,"messageTitle":"Update build.gradle file for release","messageBody":"Update archiveFileName to PatientSync.jar.\n\nUpdate storage file name for PatientSync to be patientsync.json.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":1,"deletions":1}}},{"hash":"b15567ce3ca31516a2f01d2d02b3fc485ba608b6","isMergeCommit":false,"messageTitle":"Update User Guide for Add Command and Find Command","messageBody":"Update typo error of \"/id\" to \"id/\" in Add command examples.\n\nUpdate find command usage to find patient with Hospital ID instead of\nname.\n","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":15}}},{"hash":"513524584cbabcbd24ae491508b75ec0aca4397a","isMergeCommit":false,"messageTitle":"Update Main Window UI to display title as PatientSync","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f60aca1af954f23a745c594e0d8f49f8b36154f0","isMergeCommit":false,"messageTitle":"Update front page of User Guide","messageBody":"Update front page of User Guide to correct application name.\n\nUpdate Ui Picture.\n\nUpdate Help Message Picture.\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}},{"hash":"649b564e3fbf91a6d0690cb9491de304be62883d","isMergeCommit":false,"messageTitle":"Update User Guide to rename AddressBook to PatientSync","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]}],"choowengyan":[{"date":"2024-03-07","commitResults":[{"hash":"8ef0f765ec7e08d2f6917669a386c1b87a1f5715","isMergeCommit":false,"messageTitle":"Update name, links, role and responsibilities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":4}}},{"hash":"abd4ed57d146a0e529b4d8aa8c8821e3ef079b8e","isMergeCommit":false,"messageTitle":"Update profile picture","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-08","commitResults":[{"hash":"a47f97a1a0c5cc451c35bdd50ac0ca9cfe425f5d","isMergeCommit":true,"messageTitle":"Merge pull request #48 from SherisseTJW/doc/fix-doc","messageBody":"fix: Change extension to lower case","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"7b652d262afdf85420292a1b92be58e32788fcd4","isMergeCommit":false,"messageTitle":"Add patient\u0027s FamilyCondition class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":70},"other":{"insertions":0,"deletions":0}}},{"hash":"ce60cb7c3a2fdccdb19902c6138146f5a5b7dacb","isMergeCommit":false,"messageTitle":"Add FoodPreference.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":18}}},{"hash":"fefd51f1ff5337e4299218637b0db71cf57d6297","isMergeCommit":false,"messageTitle":"Add PatientHospitalId.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":1}}},{"hash":"2e6aaebd3896f7bb72394a6f8583322a425582c3","isMergeCommit":false,"messageTitle":"Add PreferredName.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":1}}},{"hash":"bf8226bd1fc93c2207e8251175c46447c4d05534","isMergeCommit":false,"messageTitle":"Add Hobby.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":38}}},{"hash":"f42a58b5e246b180f1b3806a036c5bf71cb6f3be","isMergeCommit":false,"messageTitle":"Update patient\u0027s field, udpate classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":20}}},{"hash":"ffb1e62302fd0f31af853a43d8f1af9e39552102","isMergeCommit":false,"messageTitle":"Add \u0027Add Command\u0027 prefix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"465fa10b960e67656a9b19db23f6357cc96c75ce","isMergeCommit":false,"messageTitle":"Update parsing methods for Add Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":27}}},{"hash":"44963f8f1ff106e176e7860e4d0b763a0b2b7383","isMergeCommit":false,"messageTitle":"Update AddCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":16}}},{"hash":"7462c34d885ac994aee9eb61beea63d6792ade31","isMergeCommit":false,"messageTitle":"Update fields for AddCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":13}}},{"hash":"c37112b66262e748855b2b9ec4b8ca89c49e03b1","isMergeCommit":false,"messageTitle":"Update sample data for patients","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":21}}},{"hash":"24c17681741cdc9b62b039ca2d2b2028db359e4a","isMergeCommit":false,"messageTitle":"Update format method for display","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":6}}},{"hash":"282b85689360b01afb15a8f69dd01f83e2612f48","isMergeCommit":false,"messageTitle":"Update JsonProperty and fields for Patient details","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":65,"deletions":31}}},{"hash":"43a05feadb7d754dd21eb1eea31e836db501be27","isMergeCommit":false,"messageTitle":"Update test cases for JsonAdaptedPatient","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":82,"deletions":33}}},{"hash":"f8cf92bf6b8b936d59d1594590611910e431e778","isMergeCommit":false,"messageTitle":"Update UI display of patient card","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":6}}}]},{"date":"2024-03-13","commitResults":[{"hash":"a3581fb8ce22ed662800ad92c5aad80de4207855","isMergeCommit":false,"messageTitle":"Update imports \u0026 declarations for CommandTestUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":32,"deletions":26}}},{"hash":"db4b194527a6c8c6c4d22da3e1a45989291bcbab","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-14","commitResults":[{"hash":"1479555c21be29d1d5590312e62b9d3cd3e0ee17","isMergeCommit":false,"messageTitle":"Add prefix for patient hospital ID","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"b059b756d2526fb1f96f444d6d4b549053062b79","isMergeCommit":false,"messageTitle":"Add PatientHospitalId","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"fb2b0de997712ff65ca6494325a3303f52720049","isMergeCommit":false,"messageTitle":"Update patient fields and data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":14}}},{"hash":"b29bfa98d22e20b73dbf4d953001499f8538b5b8","isMergeCommit":false,"messageTitle":"Update patient test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":382,"deletions":211}}},{"hash":"2be87ea694b729efbeb19ea76178e45bdbcd0985","isMergeCommit":false,"messageTitle":"Update add patient command test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":7}}},{"hash":"b2c991eadeb538477ffc31f1076bd0cbabdce13a","isMergeCommit":false,"messageTitle":"Update imports fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":12}}},{"hash":"aae7531bcc73830da5fa2de8c10308c9bfaa0657","isMergeCommit":false,"messageTitle":"Update Edit Patient with fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":96,"deletions":44},"other":{"insertions":0,"deletions":0},"test-code":{"insertions":151,"deletions":99}}},{"hash":"38fa248eda27e44e557c2da5da843725aa01909e","isMergeCommit":false,"messageTitle":"Update patient lists","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":11}}},{"hash":"446728e9f1e97e43ff253ed4221b7eed072b459a","isMergeCommit":false,"messageTitle":"Add patient\u0027s field TC files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6},"test-code":{"insertions":210,"deletions":114}}},{"hash":"081ecd839764000f99921c777275278d750b3d68","isMergeCommit":false,"messageTitle":"Add patient hosptial ID fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":24,"deletions":21}}},{"hash":"3023623a1d31091cfb4a9c1aa1c5764449b3a1a9","isMergeCommit":false,"messageTitle":"Update duplicate check","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":6}}},{"hash":"773903d916813c93211d22aaeded452f14a5db4a","isMergeCommit":false,"messageTitle":"Solve checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":3}}}]},{"date":"2024-03-15","commitResults":[{"hash":"0482978402586cf9f6fa3b8b23b4e2c99137571f","isMergeCommit":false,"messageTitle":"fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":15},"test-code":{"insertions":36,"deletions":40}}},{"hash":"5a42beed453bcd9db7bc73fd7a50f03f6ad1f80e","isMergeCommit":false,"messageTitle":"Update Add \u0026 edit User Guide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":10}}},{"hash":"0604170f5e008fb0e5e4b161a9783c9a7bbb6eae","isMergeCommit":false,"messageTitle":"fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":9},"test-code":{"insertions":2,"deletions":2}}},{"hash":"fa7b076374b4d8cc4d3f7421967b9acb2881c3e0","isMergeCommit":false,"messageTitle":"Add patient fields for PatientListCard.fxml","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3}}},{"hash":"ca5c30148ebbe5e4e184e41236dd649f1a0b7caa","isMergeCommit":false,"messageTitle":"Add labels for fields in PatientListCard UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":5}}},{"hash":"bc6252b7100eaa07f7a2e4ba3aec61b1742d5dce","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7},"test-code":{"insertions":0,"deletions":163}}},{"hash":"c1653f2a2c37386f3da06c9380005db9bc961df3","isMergeCommit":false,"messageTitle":"Update Add Command UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"fe23a25af32c73be5517ce668d2ba799f16855ab","isMergeCommit":true,"messageTitle":"solve conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3d6a13cbad384892940e5d782bc6a8025f019cd2","isMergeCommit":false,"messageTitle":"Fix test cases for AddTags \u0026 DeleteCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":34},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":32,"deletions":29}}},{"hash":"42ec05d8d8600b1aeb4f7d2805d8efc4cfe2da69","isMergeCommit":false,"messageTitle":"Update DG \u0026 UG for Add, Edit Command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":129}}},{"hash":"00d8f422de094cd2930bf7fe6a830c9bfa3cc004","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feat/edit-patient-info","messageBody":"# Conflicts:\n#\tdocs/DeveloperGuide.md\n#\tdocs/UserGuide.md\n","fileTypesAndContributionMap":{}},{"hash":"213117036c01cdfef17f76201bc76a43b9b4c045","isMergeCommit":false,"messageTitle":"Update Patient fields and solve conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3}}},{"hash":"ef0a1fdab8245069d626fc27d027ba53bcf79f25","isMergeCommit":false,"messageTitle":"Update Add \u0026 Edit Command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":89,"deletions":2}}},{"hash":"54222faa327a8dd99917ea4b0a3f079768cdb7c8","isMergeCommit":false,"messageTitle":"Fix test cases for duplicated prefixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":12,"deletions":22}}},{"hash":"e8f681f99a237697e49be1aeaa0e8e85627cabfd","isMergeCommit":false,"messageTitle":"Update delete patient success message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"811393675558dd3a5c926d35db3d55dcdd7e08d2","isMergeCommit":true,"messageTitle":"Merge pull request #74 from NeoHW/V1.2-AddTags-SequenceDiagram","messageBody":"V1.2 add tags sequence diagram","fileTypesAndContributionMap":{}},{"hash":"19adae54f036928249c5f020e3f9236b29008af4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feat/edit-patient-info","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ed7ec85cb87f0b99aee9db98c5b02f067ec16c14","isMergeCommit":false,"messageTitle":"Rename variables for foodPreference \u0026 prefix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":22},"test-code":{"insertions":17,"deletions":17}}},{"hash":"eda020a92d7b72eb119b84b2f3ef7200ea278adb","isMergeCommit":true,"messageTitle":"Merge pull request #76 from SherisseTJW/fix/important-dates-validation","messageBody":"Fix errors in important dates validation and UI MESSAGE_SUCCESS display","fileTypesAndContributionMap":{}},{"hash":"8e43d70878111d1a6e6b83b0fa3b7de8e06d5df2","isMergeCommit":false,"messageTitle":"Update prefix variables for foodPreference \u0026 familyCondition","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":32},"test-code":{"insertions":26,"deletions":24}}},{"hash":"b672e3c3fe17eea24784c94ddb6c308b5a849fec","isMergeCommit":true,"messageTitle":"Merge pull request #78 from SherisseTJW/feat/refactor-important-dates-to-events","messageBody":"Rename ImportantDate to Event","fileTypesAndContributionMap":{}},{"hash":"d69902c33b72e2b748349dcba7d9e9bbd2016776","isMergeCommit":true,"messageTitle":"Merge pull request #82 from SherisseTJW/fix/delete-event-command-indexing","messageBody":"Fix error in delete event command indexing","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"dcb0babfd767b88f4a5843c9b38c2cd9ca437042","isMergeCommit":true,"messageTitle":"Merge pull request #91 from ZhiWei1010/v1.2-delete-event-docs","messageBody":"Docs: Update Developer Guide on DeleteEventCommand","fileTypesAndContributionMap":{}},{"hash":"4272b50286f56b01a5b1d309521929000aa6644d","isMergeCommit":false,"messageTitle":"Add sequence diagram for AddCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":85,"deletions":0}}},{"hash":"517ca9fb8b877ea6363f4310c884b22f055469bc","isMergeCommit":false,"messageTitle":"Add sequence diagram for EditCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":76,"deletions":7}}},{"hash":"4465fc537e9b307176a81d9322b6ec416e01109b","isMergeCommit":false,"messageTitle":"Update sequence diagram for AddCommand \u0026 DeleteCommand in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":0}}},{"hash":"63bac4c2cba0c99ae8d06bf736a6131607b17cbf","isMergeCommit":true,"messageTitle":"Merge pull request #96 from NeoHW/V1.2-RemoveDeleteTagTimeSequenceDiagram","messageBody":"Comment out DeleteTagsTimeSequenceDiagram in the DG","fileTypesAndContributionMap":{}},{"hash":"c96163a4508bf5e9304ac9eb75e52fa87fdb9eb0","isMergeCommit":true,"messageTitle":"Merge pull request #99 from NeoHW/V1.2-DeleteTagSequenceDiagram","messageBody":"Create DeleteTagsSequenceDiagram","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"NeoHW":[{"date":"2024-03-04","commitResults":[{"hash":"f5d917cdba85f6ffece8081e08c2f775decdf8e7","isMergeCommit":false,"messageTitle":"Update AboutUs.md for milestone 1.1","messageBody":"- Updated profile photo, role, and responsibilities for Neo Haowei\n\nThis commit updates the AboutUs.md page for milestone 1.1.\nNeo Haowei\u0027s profile photo, GitHub link, and portfolio link\nhave been added.\n\nFixes #16\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":15}}}]},{"date":"2024-03-05","commitResults":[{"hash":"a65df35e86510160985bb9c3de8dce3110b2c1fd","isMergeCommit":true,"messageTitle":"Merge pull request #24 from guohuang88/branch-AboutUs","messageBody":"Update AboutUs.md to add profile picture","fileTypesAndContributionMap":{}},{"hash":"5ddc688b9f6f5ea9a1ec4282d54c0fcae2d3cfc1","isMergeCommit":false,"messageTitle":"feat: Adapt MarkBind site for project","messageBody":"- Added GitHub Actions write permissions for repo\n- Updated site configs to match project fork:\n\t- Updated baseUrl in .github/workflows/docs.yml\n\t- Updated product name in docs/_markbind/layouts/default.md\n\t- Updated titlePrefix in docs/site.json\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-06","commitResults":[{"hash":"2e708a81e0b936532dc595f3dbe1aa318ab98d30","isMergeCommit":false,"messageTitle":"Update index.md for PatientSync","messageBody":"The index.md file was previously tailored for the addressbook3 project.\nThis commit updates the content to reflect new PatientSync project,\nincluding the project name, description, and relevant links.\n\nThe changes include:\n* Updating the project name to PatientSync\n* Updating the project description\n\nThis update is necessary to provide accurate and relevant information\nabout the PatientSync project on the main page of the documentation.\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"0cf51d0f1f89bddbe1499a73f833a20d467e6ddb","isMergeCommit":true,"messageTitle":"Merge pull request #27 from NeoHW/V1.1-UpdateProjectWebsite","messageBody":"V1.1 update project website","fileTypesAndContributionMap":{}},{"hash":"eda06224df402de86a3f0904da58212475e29211","isMergeCommit":false,"messageTitle":"Add acknowledgements to home readme","messageBody":"Give acknowledgements that this project is based on the\nAddressBook-Level3 project created by the SE-EDU intiative\n","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"d02733d664171f860738bb3e9ebc4a9736f450eb","isMergeCommit":false,"messageTitle":"Beautify and Add Descriptions for Project Links","messageBody":"Improve the presentation of project links by using a table format.\nAlso provide descriptions for each link to give users more context.\nThis enhances readability and provides users with quick insights\ninto the purpose of each link.\n\nThese changes aim to make navigating the project resources\neasier for users and developers alike.\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":2}}},{"hash":"984452c8305e842ee7e774fbd53b2c55ac12aba9","isMergeCommit":true,"messageTitle":"Merge pull request #29 from NeoHW/V1.1-Acknowledgement","messageBody":"V1.1 acknowledgement + Project Links table in Home Page","fileTypesAndContributionMap":{}},{"hash":"b88e1ec8fa11980ba8a00b6e93bd39807072e8fe","isMergeCommit":false,"messageTitle":"Adapt target user profile and value proposition to fit PatientSync","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":7}}},{"hash":"d9db09659f2cd43dbf00a82f3006f9092bd33f25","isMergeCommit":true,"messageTitle":"Merge pull request #33 from SherisseTJW/doc/update-dev-docs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c7d64c91a4ecdc88a78f006d93a99691fb7f46a0","isMergeCommit":false,"messageTitle":"Update non-functional requirements to match Patientsync","messageBody":"Also added new NFRs\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}},{"hash":"e5caacd65bbbf9346c8478e994f55411842ccd46","isMergeCommit":false,"messageTitle":"Add Nurse user stories for PatientSync","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":9}}},{"hash":"40d40baf6bf3012822a7c022ff455284f1d1a85a","isMergeCommit":false,"messageTitle":"Update README with project details and UI mockup","messageBody":"- Updated the README to reflect the project\u0027s target users\nand key challenges\n- Added a UI mockup image\n- Acknowledged the original source of the code\n","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":10}}}]},{"date":"2024-03-07","commitResults":[{"hash":"751b259d39951f011b181a96bb2854ffd3f45226","isMergeCommit":true,"messageTitle":"Merge pull request #42 from choowengyan/v1.1/add-profile-pic","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"daf544ff5be71776e96dc9eb2ef095680a6ee5f5","isMergeCommit":false,"messageTitle":"Fix User Guide to be in terms of PatientSync instead of AB-3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":3}}},{"hash":"3991e89b220de56bb4746d62515b0301ff4f673b","isMergeCommit":false,"messageTitle":"Fix User Guide to be in terms of PatientSync instead of AB-3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":3}}},{"hash":"81e2cddca1d1d22e5233a74c2ef247db87064a66","isMergeCommit":false,"messageTitle":"Refactor exceptions of Patient model from Person model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":56,"deletions":56},"other":{"insertions":28,"deletions":28},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":46,"deletions":46}}},{"hash":"647635c45b10c3e29604641fdd5e1463e0f3556e","isMergeCommit":false,"messageTitle":"JavaDocs comments changes from person to patients","messageBody":"Applies to\n- Name\n- Person\n- Address\n- Email\n- Phone\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"5ed0b2c3a32f6df63b9ec879f3ad3a4408e6efae","isMergeCommit":false,"messageTitle":"Refactor main Patient class from original Person class.","messageBody":"Inclusive of\n- DG, UG\n- Command\n- Parser\n- Exception\n- Test utils \u0026 data\n- Tests\n","fileTypesAndContributionMap":{"functional-code":{"insertions":206,"deletions":206},"other":{"insertions":42,"deletions":42},"docs":{"insertions":59,"deletions":59},"test-code":{"insertions":169,"deletions":169}}},{"hash":"46277c498e0bae37a23913d4775a8283be6cfc4e","isMergeCommit":false,"messageTitle":"Refactor persons to patients in methods and attributes.","messageBody":"Changes in:\n- AddressBook\n- UniquePatientList\n- UniquePatientListTest\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"other":{"insertions":12,"deletions":12},"test-code":{"insertions":52,"deletions":52}}},{"hash":"2d875615dadc9ae28b37e2ae7fe32ee590a2dc4d","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":6}}},{"hash":"14abc8c0e62952317ed345aedd69d74f340bcdd6","isMergeCommit":false,"messageTitle":"Fix failing TC in AddressBookTest","messageBody":"Error was in toString method of AddressBook.java, where hardcoding of\n\"person\" lead to the failure\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-09","commitResults":[{"hash":"caacd59f97714fb89ce08dbe1aae8bfd81e0a3bb","isMergeCommit":false,"messageTitle":"Refactoring of Person to Patient test changes","messageBody":"263 of 267 TC passing\n","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":49},"other":{"insertions":44,"deletions":44},"docs":{"insertions":1,"deletions":1},"test-code":{"insertions":160,"deletions":160}}},{"hash":"131855f758194bd25302de24c0a82d4a9d0bd0e5","isMergeCommit":false,"messageTitle":"Fix last TC, changes to Patient tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":93,"deletions":94},"other":{"insertions":0,"deletions":0},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":290,"deletions":294}}},{"hash":"428e0915e5ec22562338774e7418a195327dc53c","isMergeCommit":false,"messageTitle":"Complete refactor of Person to Patient in main java files","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6},"test-code":{"insertions":25,"deletions":18}}}]},{"date":"2024-03-10","commitResults":[{"hash":"67ae5367d1c996357a225f34e767e5d164796b18","isMergeCommit":false,"messageTitle":"Logic: Teach the app to accept \u0027addtag\u0027 arguments but does nothing","messageBody":"Add MESSAGE_USAGE for wrong usage of addtag.\n\nModify AddTagCommand to take in an Index and String for tag, then\nconvert the tagString to a Tag and use it to create AddTagCommand.\n\nwe then print those two parameters as the error message\n","fileTypesAndContributionMap":{"functional-code":{"insertions":137,"deletions":0}}}]},{"date":"2024-03-11","commitResults":[{"hash":"f1f8b73c9d2a75480299043edee4206eb4726202","isMergeCommit":false,"messageTitle":"Add functionality: allows multiple tags to be detected","messageBody":"This change would allow multiple tags to be added at once as compared\nto adding one by one using multiple runs of the command\n","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":24}}},{"hash":"53cf1a177bc2ce896a1cceacf81aad3db10f72b1","isMergeCommit":false,"messageTitle":"Observation: Tags can only be a single word","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"acdad9cf9dd659f7e8b9e86246542a0de863eb4d","isMergeCommit":false,"messageTitle":"Complete functionality: AddTag","messageBody":"Enhancements:\n- Able to add multiple tags cumulatively\n- Repeated tags in command will be added as a single tag.\n- If the patient already has the tag, it will not be added.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":189,"deletions":125},"test-code":{"insertions":32,"deletions":27}}},{"hash":"8ccacbb49999cc18a76be6bc74a076851b2b35eb","isMergeCommit":false,"messageTitle":"Part of previous commit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":18}}},{"hash":"a1380abae86f093fe8dc205f0f8d0307593921ce","isMergeCommit":false,"messageTitle":"Refactor AddTag to AddTags","messageBody":"Improve naming style and command as it supports addition\nof multiple tags\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":15,"deletions":20}}},{"hash":"0be9d19224f7276a7c83e04bbcd9aff7370517af","isMergeCommit":false,"messageTitle":"Fix checkstyle errors for CI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"dca6610bedcecca6f0f0d6785bb25c799d4c52b3","isMergeCommit":false,"messageTitle":"create AddTagsCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":33},"test-code":{"insertions":65,"deletions":0}}},{"hash":"78896f653b49060de09bf2c5cc2bf55cdae7e104","isMergeCommit":false,"messageTitle":"Add more checks in AddTagsCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"24bb1f59e20cf9190aff5e61e6598079917b9e43","isMergeCommit":false,"messageTitle":"Complete test cases for AddTagsCommand and AddTagsCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":7},"test-code":{"insertions":161,"deletions":0}}},{"hash":"ef6ab71eed9ffff4cfc44eb3370d3ef8c1d126b7","isMergeCommit":false,"messageTitle":"Update user guide with `+` parameter","messageBody":"Info: Items with +​ after them can be used multiple times,\nbut requires at least one usage.\n\nAlso update AddTagsCommand to make use of + parameter\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":4,"deletions":1}}}]},{"date":"2024-03-12","commitResults":[{"hash":"65489a1cf4ab4a816d95935cf051c17e44484a18","isMergeCommit":false,"messageTitle":"Update User Guide with addtags section","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":4}}},{"hash":"3ce583eeb1bfac57aeace9271d40f8167cf1fee4","isMergeCommit":false,"messageTitle":"Update NFRs to include keywords at the start of each requirement","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":11}}},{"hash":"c1e96f220da381077ae4a47ae946f439289a93d2","isMergeCommit":false,"messageTitle":"Minor fix to grammatical error on use case line","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d89d62c1fd41b322dddb362f16343427a034fe4d","isMergeCommit":false,"messageTitle":"Update Value Proposition in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"2c62981ac8c8b0f20382650ca53a7a22311ec83c","isMergeCommit":false,"messageTitle":"Create 1.1 Product Overview","messageBody":"Product Overview gives a brief introduction, the context and ideation\nbehind PatientSync, and how it helps nurses.\n\nMove Acknowledgements to section 1.3\n","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":6}}},{"hash":"92743dc08d516a482297516c757d0c8c44bf0be8","isMergeCommit":false,"messageTitle":"Create 1.3 Acknowledgements section","messageBody":"Give acknowledgements to AB3 project template created by SE-EDU\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1972d0e6c5400bcfb661d5f7b2d47f564dd38ecb","isMergeCommit":false,"messageTitle":"Create ordered numbering system for headings in Section 2: Design","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"1ed50ced9ce36a6737c91d7ee508bb494a6db20f","isMergeCommit":false,"messageTitle":"Create numbered Sections 3 \u0026 4","messageBody":"- Section 3: Implementation\n- Section 4: Planed Enhancements\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":2}}},{"hash":"bb02aaab14680124c17a6730cb1585da01e44301","isMergeCommit":false,"messageTitle":"Create numbered heading section 5: Guides for different sections","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"309985c832cd7f7323bbe10283951ed1b9ed9fd7","isMergeCommit":false,"messageTitle":"Create numbered heading section 6: Appendix","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"69cb8ea8ae42edac43a7073f91b2f35b7cdd6ab7","isMergeCommit":false,"messageTitle":"Create numbered heading section 7: Appendix for manual testing","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"37c79152754998229b67bbfbbb5746fc46b32b65","isMergeCommit":false,"messageTitle":"Create layout for Section 3 Implementation section for DG","messageBody":"A Standardised format and layout to be used for implementation details\nof features.\n","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":0}}},{"hash":"b619664dea0cdbfca88fe8a65f1779a550f23b2e","isMergeCommit":false,"messageTitle":"Update heading colours to black from orange","messageBody":"This improves readability and ensure consistency with the overall design\nscheme of the application.\n\nBlack headings provide better contrast against the background;\nThis adjustment enhances the user experience and aligns the headings\nwith the desired aesthetic of the application.\n","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"00cad5e51c9d3c93e1ddf862015b7c34d90f084c","isMergeCommit":false,"messageTitle":"DG update: Introduction, Specifications and EUS for Adding Tags","messageBody":"* Fixed markdown style to have space after headings\n* Introduced Introduction section\n* Introduced Specification section\n* Introduced Example Usage Scenario section\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":30,"deletions":3}}},{"hash":"51517d2bb17e42f1c32a2825302b321912998842","isMergeCommit":false,"messageTitle":"Add Design Considerations section for Add Tags","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":1}}},{"hash":"f9be2d3b79c1cdf1e5e6bec1513b0dd90b7d7461","isMergeCommit":false,"messageTitle":"Bug Consideration: Add comments in AddressBookParserTest","messageBody":"Certain commands works even when random alphanumeric characters are\nadded behind the command.\n\n* clear\n* list\n* help\n* exit\n\nIn these commands, `clear 123` works as if it is just `clear`\nTo consider if this is intended or a bug\n","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"2de696d0958c986506692e3a005b4215a4fc92f3","isMergeCommit":false,"messageTitle":"Fix documentation checkstyle errors detected on Github Actions","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":24},"test-code":{"insertions":0,"deletions":2}}},{"hash":"9a6066ee8293e992c426c921157d5485dbd10457","isMergeCommit":false,"messageTitle":"Add test in AddressBookParserTest: parseCommand_addTags()","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":0}}}]},{"date":"2024-03-13","commitResults":[{"hash":"1160fdc537375f085a41dec85fbc00b60e7e961b","isMergeCommit":false,"messageTitle":"Remove white spaces and add in missing words in UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"65d51d6a0b4e4c49ea5b91994f12e296905eee10","isMergeCommit":false,"messageTitle":"Change AddTagsCommand COMMAND_WORD to \"addt\" from \"addtags\"","messageBody":"Rationale:\n* standardise command naming conventions\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f3751d59f535df3589ec8f14e1efc7d1d902bb50","isMergeCommit":false,"messageTitle":"Change \"addtags\" to \"addt\" in DG and UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-03-14","commitResults":[{"hash":"779fa80594da6abbe23a7855c185da627ebfae9b","isMergeCommit":true,"messageTitle":"Merge pull request #60 from SherisseTJW/feat/add-important-dates-for-patients","messageBody":"Feat/add important dates for patients","fileTypesAndContributionMap":{}},{"hash":"43bf6ad5337cb5883727cdb15371115f1886ff2d","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1e9f6c468b882f52b9bd2e3da4759341904cb923","isMergeCommit":false,"messageTitle":"changes to addTags after merging in changes from AddImportantDates","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"64b8c7011d8a4707bbfd7bc7c7429dce9c7eeab4","isMergeCommit":false,"messageTitle":"Update User Guide formatting and summary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":4}}},{"hash":"46038f33fb59067f2df79bdf1b0a4321d087a569","isMergeCommit":false,"messageTitle":"Update CI Status and Codecov in index.md","messageBody":"It would now use CS2103-F09-2 status instead of AB3\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"e9de7a2f9593e792f5cc58bc28845d1424fcf293","isMergeCommit":false,"messageTitle":"Update README.md to use CS2103-F09-2 CI status instead of AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"bf4942029a228fdfc2b9d0df33583c596bad65b0","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"a6ef0941b2d03713ddb5331f1f16ff0a216dd410","isMergeCommit":false,"messageTitle":"Add Separator between 3.2 and 3.3 in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"4919765a8b27e242170130f00d8f875e508e8205","isMergeCommit":false,"messageTitle":"Reduced redundant code in AddTagsCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":3,"deletions":3}}},{"hash":"25df2e4c641fd4c7c9b07724e869e721275b892a","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3}}}]},{"date":"2024-03-15","commitResults":[{"hash":"7b3dfb30573f52ccf4cf702eb43f438186cce0bf","isMergeCommit":true,"messageTitle":"Merge pull request #70 from choowengyan/docs/user-guide","messageBody":"Update Add Command UserGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"6ddbad781eecc302344b152d4e24152b7560886f","isMergeCommit":true,"messageTitle":"Merge pull request #65 from ZhiWei1010/v1.2-delete-important-dates","messageBody":"V1.2 delete important dates: Logic \u0026 Test","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"a230dbf5a51d360194b92c16b0102fdc1c69f33d","isMergeCommit":false,"messageTitle":"Create Add Tags Sequence Diagram in puml","messageBody":"Add the created diagram into the developer guide\n","fileTypesAndContributionMap":{"docs":{"insertions":82,"deletions":1}}},{"hash":"eb5bec4664cfc499c482ec55d2f41293dede7e28","isMergeCommit":false,"messageTitle":"Fix checkstyle to pass CICD","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"22936bedd018943d4aaf5c5d3a9b141f647c76bb","isMergeCommit":false,"messageTitle":"Create backend logic for Delete Tag Command","messageBody":"Added following files:\n* DeleteTagsCommand\n* DeleteTagsCommandParser\n\nThis change allows user to specify multiple tags to be deleted from\na person specified by index in the last person listing.\n\nOutput message for users would be collated for each tags, depending if\nit was successfully deleted or there was no such tag\n","fileTypesAndContributionMap":{"functional-code":{"insertions":202,"deletions":12},"docs":{"insertions":0,"deletions":0}}},{"hash":"8fa21c7ed712dc729dc7fcc9cd41cb3c82d892fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103-F09-2/tp into V1.2-DeleteTags","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/parser/AddressBookParser.java\n","fileTypesAndContributionMap":{}},{"hash":"4e2fa1e820e168de60e43f39c8d57fbc2e1c8a82","isMergeCommit":false,"messageTitle":"Update and add JavaDocs to DeleteTagsCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":1}}},{"hash":"7ab1f79045203bce5938ee249ba0b5a81f6a6a70","isMergeCommit":false,"messageTitle":"JavaDoc changes to deleteTagsFromPatient method in DeleteTagsCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5}}},{"hash":"37d23570b940982caacb40d4331afcbfb0992d00","isMergeCommit":false,"messageTitle":"Add JavaDocs and fix checkstyle for DeleteTagsCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":7}}},{"hash":"d23b6dd6725d70a33e1a1b79b011864dd844b587","isMergeCommit":false,"messageTitle":"Create DeleteTagCommandTest class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":140,"deletions":0}}},{"hash":"9a99bc7ff443082f5cc595c879923258044bc2d0","isMergeCommit":false,"messageTitle":"Combine methods into one for DeleteTagsCommand","messageBody":"Additionally, 100% test coverage for DeleteTagsCommand\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":18}}},{"hash":"c00cedd14476ed855e5b9af23a96ff8e981c3c12","isMergeCommit":false,"messageTitle":"Null checks for DeleteTagsCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":0}}},{"hash":"c7a14a9674c4c716dcb58557d0c541a2aa007088","isMergeCommit":false,"messageTitle":"Create DeleteTagsCommandParserTest class","messageBody":"100% code coverage for DeleteTagsCommandParser\n","fileTypesAndContributionMap":{"test-code":{"insertions":88,"deletions":0}}},{"hash":"38237646c30d58ec9943732ae30eea12c9d4aeeb","isMergeCommit":false,"messageTitle":"Create line break formatting for each command in UG","messageBody":"Command summary update for Delete Tags\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2},"docs":{"insertions":27,"deletions":1}}},{"hash":"57030afa9186834caeae9355d14b38a035d85e8a","isMergeCommit":false,"messageTitle":"UserGuide update for Deleting Tags `deletet`","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":7}}},{"hash":"7e76dac1c101a5b36ea05e1ffe75bb3486e834e7","isMergeCommit":false,"messageTitle":"Change heading colours in main.css","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":170,"deletions":0}}},{"hash":"16f04952f461d5318818570ae06120d7aa4a3a1b","isMergeCommit":false,"messageTitle":"DG update for 3.3 Deleting Tags from a Patient","messageBody":"todo: DeleteTagsSequenceDiagram\n","fileTypesAndContributionMap":{"docs":{"insertions":74,"deletions":6}}},{"hash":"17ce98d43942531f611bbfdc62f5b97513431152","isMergeCommit":false,"messageTitle":"To add in a time sequence diagram for Delete Tags in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"c33f8504a8791da8f4c4fab2d4e823504e49b122","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into V1.2-DeleteTags","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1de2d53c447b08e597407261c2f46e629545860b","isMergeCommit":true,"messageTitle":"Merge pull request #86 from SherisseTJW/feat/add-event-sequence-diagram-DG","messageBody":"Add puml diagram and update DG for AddEvent","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"e44ef67ebb2aa3089c20f520d307c99630c88719","isMergeCommit":false,"messageTitle":"Comment out DeleteTagsTimeSequenceDiagram in the DG","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1},"docs":{"insertions":3,"deletions":0}}},{"hash":"97155e9ce87733ae0ea7de689ea3e3e8f3e500bd","isMergeCommit":false,"messageTitle":"Create DeleteTagsSequenceDiagram","messageBody":"* Add it to DG\n* edit AddTagsSequenceDiagram\n","fileTypesAndContributionMap":{"docs":{"insertions":96,"deletions":0}}}]},{"date":"2024-03-22","commitResults":[{"hash":"00c58fd74fda755a8c60c48d7a40080ea7a42f90","isMergeCommit":false,"messageTitle":"Visual output for adding of tags * successful \u0026 duplicate tags output * Update UG and DG for AddTagsCommand * Delete unthrown CommandException for AddTags and DeleteTags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":13},"docs":{"insertions":11,"deletions":11}}},{"hash":"43c6b8b6eb2de1b42f9f09dd895e32835307661e","isMergeCommit":false,"messageTitle":"Change parsing of tags","messageBody":"* Tag validation regex: start with alphanumeric, zero or more occurrence\nof alphanumeric or spaces afterwards, cannot contain other\nnon-alphanumeric characters\n* tags can now be more than one word\n* tags will be converted to lower case\n* extra spaces between words will be treated as one space\n* addt 1 t/fall risk t/fall risk t/fall RIsk will be \"fall risk\"\n","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":4}}},{"hash":"f633a1b6094d17e095d996ab9485011b7a8bef40","isMergeCommit":false,"messageTitle":"Fix tag related classes and documentation * update examples and error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":11},"docs":{"insertions":16,"deletions":14}}},{"hash":"7df47974845298d959a010449734442c5d26125c","isMergeCommit":false,"messageTitle":"Fix test cases for AddTags classes and ParserUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":14}}},{"hash":"756dc4aa7730d62e405dafc2167143b20b32fbbe","isMergeCommit":false,"messageTitle":"Checkstyle fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":6,"deletions":3}}},{"hash":"d89ebb61df8fb7b366827b4fc68c8a784a5677da","isMergeCommit":false,"messageTitle":"Change inner workings of log file to patientsync instead of ab3","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"d30ad08d3c192cc392470ebc4762c46fae481165","isMergeCommit":false,"messageTitle":"Add logging for AddTagsCommandParser and DeleteTagsCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":2}}},{"hash":"83342f7f88ee96701f2600ab78ad191c42099430","isMergeCommit":false,"messageTitle":"Add logging for classes related to Add Tags and Delete Tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":8}}},{"hash":"9174cb2e648fa5d860f058a818d3ddf313b105dd","isMergeCommit":false,"messageTitle":"Add documentation outline for AddTags and DeleteTags","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":16}}},{"hash":"85965bbbc07816bf8c9c3f84cf5ddd35ce294d5c","isMergeCommit":false,"messageTitle":"Create Add Tags Activity Diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":0}}},{"hash":"46c6e1b96d101f023cf584da91f59e1e38b57724","isMergeCommit":false,"messageTitle":"Create Delete Tags Activity Diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":0}}},{"hash":"45ba8d584b6ed631198e7fde1e8cbbc0348312cf","isMergeCommit":false,"messageTitle":"Change to Activity Diagram for Addtags and DeleteTags","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"8eef1e2b282fdda7f8e7f89023402f2a61399779","isMergeCommit":false,"messageTitle":"Add DeleteTagsActivityDiagram to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}}]},{"date":"2024-03-23","commitResults":[{"hash":"c8f7c8bd91e8c062f1ce06a5b150aea3c0513f2e","isMergeCommit":false,"messageTitle":"Add func: Tag names must be less than 50 chars","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":4}}},{"hash":"bef3af80183e1ab75724c6d8805c1f3b070a54b8","isMergeCommit":false,"messageTitle":"Clean up unused imports and extra constants","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"cbbdd4e793f547091165babc89787b01bec576f5","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":15}}},{"hash":"980b94ea53582ab60c9754ba239aa2e6eb080c3d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103-F09-2/tp into V1.3-TagsEnhancement","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"55546b72b31ef083b6ac370d503fe99335a330dc","isMergeCommit":false,"messageTitle":"Enable assertions in the team repo","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0}}},{"hash":"ed86b37a6ac9961948da0c8455dbcff8578e3b10","isMergeCommit":false,"messageTitle":"Update UG for tags","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"05e76155e43187ac72b61d7ee38a204b35ba8c49","isMergeCommit":false,"messageTitle":"Fix JavaDoc to adhere to coding standards","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"9dcbb5166d6caa20422e121f2c552ef7a756db03","isMergeCommit":true,"messageTitle":"Merge pull request #119 from guohuang88/branch-v1.3-CustomMessageForDuplicateEvent","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"guohuang88":{"docs":437,"functional-code":200,"test-code":281},"SherisseTJW":{"docs":169,"functional-code":703,"test-code":471},"ZhiWei1010":{"docs":235,"functional-code":134,"test-code":144,"other":1},"choowengyan":{"docs":268,"functional-code":631,"test-code":882},"NeoHW":{"docs":639,"functional-code":788,"test-code":979,"other":174}},"authorContributionVariance":{"guohuang88":24162.848,"SherisseTJW":76240.49,"ZhiWei1010":5686.6206,"choowengyan":100589.85,"NeoHW":149824.45},"authorDisplayNameMap":{"guohuang88":"CS2103-F09-2 LI G..UANG","SherisseTJW":"CS2103-F09-2 SHER.. WEN","ZhiWei1010":"CS2103-F09-2 TAN .. WEI","choowengyan":"CS2103-F09-2 CHOO.. YAN","NeoHW":"CS2103-F09-2 NEO ..OWEI"}} +{"authorDailyContributionsMap":{"guohuang88":[{"date":"2024-03-05","commitResults":[{"hash":"67cb69188c5c4655d8709f6ce3bc0bc089286207","isMergeCommit":false,"messageTitle":"Update AboutUs.md to add profile picture","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]},{"date":"2024-03-06","commitResults":[{"hash":"2210a0fd7846a8923b1777796d49469dfec2ffed","isMergeCommit":true,"messageTitle":"Merge pull request #39 from NeoHW/V1.1-ReadMe","messageBody":"Update README with project details and UI mockup","fileTypesAndContributionMap":{}},{"hash":"309a95f89f3ec28c2b56dbbd2b5c3187ff494248","isMergeCommit":true,"messageTitle":"Merge pull request #38 from NeoHW/V1.1-UserStories","messageBody":"Add Nurse user stories for PatientSync","fileTypesAndContributionMap":{}},{"hash":"3ebbae815f98eec9afbd0bf04edeb7ec9535e6f9","isMergeCommit":false,"messageTitle":"Add use cases in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":153,"deletions":8}}}]},{"date":"2024-03-08","commitResults":[{"hash":"b0f8627c0a934b926ff27a8ea2903ee555685405","isMergeCommit":true,"messageTitle":"Merge pull request #51 from NeoHW/v1.1-Fix-UG","messageBody":"Fix User Guide to be in terms of PatientSync instead of AB-3","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"6d88de5ef15fb883093ee6f2f6d439d70f151215","isMergeCommit":true,"messageTitle":"Merge pull request #57 from SherisseTJW/fix/unable-to-load-addressbook","messageBody":"fix: Null errors on running","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"1c7d87f3abc00843c4ad8690585e98a9b9ddf3c3","isMergeCommit":true,"messageTitle":"Merge pull request #62 from NeoHW/V1.2-plantUML-dependencies","messageBody":"V1.2 Update Docs and dependencies","fileTypesAndContributionMap":{}},{"hash":"cd41d4424da3ab1837e31493535b7434dd563e5d","isMergeCommit":false,"messageTitle":"Update DeveloperGuide to include delete command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":0}}},{"hash":"fd530985b42495646f76c5bf8662d510e18e8ade","isMergeCommit":false,"messageTitle":"Update DeleteCommand class to delete a patient with new delete message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":2}}},{"hash":"cb2c28c547fe61d22caadb4b39351d628dd5ecd6","isMergeCommit":false,"messageTitle":"Fix test cases in DeleteCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-16","commitResults":[{"hash":"a9bf5c3d90416212c027b0d9a35e83b0a7d00906","isMergeCommit":false,"messageTitle":"Add EditImportantDateCommand feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":179,"deletions":1}}},{"hash":"5ab03db361b15e6491b49928a6f352ffec6d2c49","isMergeCommit":false,"messageTitle":"Add test cases for EditImportantDateCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":228,"deletions":0}}},{"hash":"16468a695aad6f5af95742f74a6b8692be3ab0fb","isMergeCommit":false,"messageTitle":"Update Developer Guide and User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":68,"deletions":3}}}]},{"date":"2024-03-18","commitResults":[{"hash":"9067fea0a9dd86876027c54eedabbe7bf65d06e3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-v1.2-edit-important-date","messageBody":"# Conflicts:\n#\tdocs/DeveloperGuide.md\n#\tsrc/main/java/seedu/address/logic/Messages.java\n","fileTypesAndContributionMap":{}},{"hash":"454bfb6228cabd89dd812495644e1202677a2ef6","isMergeCommit":false,"messageTitle":"Refactor EditImportantDateCommand to EditEventCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":47,"deletions":47},"test-code":{"insertions":240,"deletions":228}}},{"hash":"29b58a759dcacc4e542915c7efdf5effe3abb1a5","isMergeCommit":false,"messageTitle":"Update User Guide and Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":35}}},{"hash":"77aea7ab44523cf891944504e9d0cc9f65c2f633","isMergeCommit":false,"messageTitle":"Minor Developer Guide update","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b3e52cd9bb0bd76b6744935d72a9393236930c23","isMergeCommit":false,"messageTitle":"Remove an unused constant value","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"1988c4ee82a4ebd939538994c2c7369ccf4766fc","isMergeCommit":false,"messageTitle":"Add EditEventSequenceDiagram and update DeleteSequenceDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":81,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"add53b037ba1698ca96994853170fb7212558c0a","isMergeCommit":true,"messageTitle":"Merge pull request #90 from ZhiWei1010/v1.2-list-command","messageBody":"Docs: Update developer guide to include ListCommand interaction","fileTypesAndContributionMap":{}},{"hash":"9c37544f2af1873e667359365376643d34c8666a","isMergeCommit":true,"messageTitle":"Merge pull request #93 from choowengyan/docs/add-sequence-diagram","messageBody":"Docs: v1.2 Add Sequence Diagram for AddCommand \u0026 EditCommand","fileTypesAndContributionMap":{}},{"hash":"75e22f557a3cb8e1c5b01023f268c16a7baafb55","isMergeCommit":false,"messageTitle":"Update Developer Guide for DeleteCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"95d206933590e1a7a5c7dbe70cf85f16caef5c53","isMergeCommit":true,"messageTitle":"Merge pull request #107 from ZhiWei1010/v1.2-release-0.1","messageBody":"Update front page of User Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"861179b602bf82f7d9f8585634a170721950c437","isMergeCommit":false,"messageTitle":"Update NameContainsKeywordsPredicate class to search patient using patient name for find command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"c1d9b5ec33d269a3cdd999e0dd839112298b9221","isMergeCommit":false,"messageTitle":"Update UI to remove patient hospital id shown in the patient list","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":5}}},{"hash":"d59b69f71286693110be8c4e08edf4e340665157","isMergeCommit":false,"messageTitle":"Update test case in NameContainsKeywordsPredicateTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"87e3521659afe725a8f6bba51aae396d100a9053","isMergeCommit":false,"messageTitle":"Update User Guide for FindCommand and update numbered list to follow proper coding standard","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":13}}},{"hash":"4baebdac3bb576c7568931174410450ffe6d454a","isMergeCommit":false,"messageTitle":"Update Developer Guide to include FindCommand and add FindSequenceDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":110,"deletions":0}}},{"hash":"c4be93aea84dbb1b249d83d067b345bfdbf0f6f1","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f0c5d2a127ad587fa67fca4c61c588e8ca2e34a1","isMergeCommit":false,"messageTitle":"Update test case in NameContainsKeywordsPredicateTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-23","commitResults":[{"hash":"4905c574d19d8aceac455ce855feac9561c47c6a","isMergeCommit":true,"messageTitle":"Merge pull request #116 from NeoHW/V1.3-TagsEnhancement","messageBody":"V1.3 tags enhancement","fileTypesAndContributionMap":{}},{"hash":"2ebf3934557eb3f628e9bc8e1a322a38029162f6","isMergeCommit":true,"messageTitle":"Merge pull request #117 from SherisseTJW/feat/custom-duplicate-event-message","messageBody":"Add a custom duplicate message when the user adds a duplicate event","fileTypesAndContributionMap":{}},{"hash":"2d7fa402a7e93943854264304d93515159fce753","isMergeCommit":false,"messageTitle":"Update EditEventCommand class to have a customised message for duplicate events","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":1}}},{"hash":"ecee6403fa212a7fb71717da2e79a4890212732e","isMergeCommit":false,"messageTitle":"Update EditEventCommandTest to test for duplicate events","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":0}}},{"hash":"f5a940688684582b7e9a4d572eec73ddf6869ea4","isMergeCommit":false,"messageTitle":"Update Developer Guide for EditEventCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"2b570b0aeafde8c2a71724f7633740e48b56ca73","isMergeCommit":false,"messageTitle":"Remove extra new line in AddEventCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"7efd227f6f7fdaa78d6ea2a0c56514a8b686722e","isMergeCommit":true,"messageTitle":"Merge pull request #120 from SherisseTJW/feat/sort-events","messageBody":"Preserve Ordering for Events by Sorting them","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"5c2c027d49b99fccf6d463ba3a45a4edb604420c","isMergeCommit":false,"messageTitle":"Add FindTagsCommand feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":157,"deletions":0}}},{"hash":"61bb373a0c27c343b408fe77facf6695564cf42b","isMergeCommit":false,"messageTitle":"Add test cases after implementing FindTagsCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":237,"deletions":6}}},{"hash":"786607392a4411a11ebaee059f8831f72f60d702","isMergeCommit":false,"messageTitle":"Update User Guide and Developer Guide to include FindTagsCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":132,"deletions":3}}},{"hash":"20b8f7c0632bf0afe15d4f8716b97e17c22f79e7","isMergeCommit":false,"messageTitle":"Update FindTagsCommandTest to shorten length of a line","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}}]}],"SherisseTJW":[{"date":"2024-03-04","commitResults":[{"hash":"6aaaf3fa750fe83176ac00adc3f7c0e0c15d20df","isMergeCommit":true,"messageTitle":"Merge pull request #22 from NeoHW/V1.1-AddProfilePic","messageBody":"V1.1 add profile pic","fileTypesAndContributionMap":{}},{"hash":"8f2224d5f8fdee7802fa4b96d441a0695cec983a","isMergeCommit":true,"messageTitle":"Merge pull request #23 from ZhiWei1010/v1.1-add-profile-picture","messageBody":"Update AboutUs.md for milestone v1.1","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"482117fa53f473a152cfe2ebcdef1b577b0a0592","isMergeCommit":false,"messageTitle":"doc: Update About Us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":5}}},{"hash":"2b8ae16bc2f7c127ca668df2013bf003b541b9ae","isMergeCommit":false,"messageTitle":"minor-doc-fix: Style Errors in build","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"8d97da58f2cf227f5f91b09d66652fecd148e8c5","isMergeCommit":true,"messageTitle":"Merge pull request #40 from guohuang88/branch-UseCases","messageBody":"Add use cases in Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"f734e81d6235797f85cb762e847fa18d5d2e0f2f","isMergeCommit":false,"messageTitle":"fix: Change extension to lower case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"797d8de10ba054b991d3cf3a9b69e18949c29da4","isMergeCommit":true,"messageTitle":"Merge pull request #52 from NeoHW/V1.2-Convert-Person-to-Patient","messageBody":"V1.2 convert person to patient Model","fileTypesAndContributionMap":{}}]},{"date":"2024-03-09","commitResults":[{"hash":"e5335b217aec13f412aab747f5eff2c7c69dde45","isMergeCommit":true,"messageTitle":"Merge pull request #54 from NeoHW/V1.2-Convert-Person-to-Patient-Main-Java","messageBody":"V1.2 convert person to patient main java","fileTypesAndContributionMap":{}}]},{"date":"2024-03-10","commitResults":[{"hash":"fb1c3e1fd59fb4ad61ed721e75b304f571bbf89b","isMergeCommit":false,"messageTitle":"fix: Null errors on running","messageBody":"Some *person* for JavaFx were not changed to patient, causing null errors on running AddressBook\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-12","commitResults":[{"hash":"ef47664951e032e4ded97dc97a0ba6e01524d53e","isMergeCommit":false,"messageTitle":"feat: Add ImportantDate Model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":143,"deletions":0},"test-code":{"insertions":76,"deletions":0}}},{"hash":"4f7e8f5fbf588a92d9171d0a1407d2513be7f491","isMergeCommit":false,"messageTitle":"feat: Add Event Name attribute to Important Date","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":9},"test-code":{"insertions":22,"deletions":17}}},{"hash":"0079b635cf431dc70cb1508292bd2878a8677950","isMergeCommit":false,"messageTitle":"feat: Add ImportantDate Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":271,"deletions":122}}}]},{"date":"2024-03-13","commitResults":[{"hash":"833fca6bc94ac7aaf0539ad7ef9f45efc05127e5","isMergeCommit":false,"messageTitle":"feat: Add Parsers for AddImportantDateCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":135,"deletions":29},"test-code":{"insertions":53,"deletions":44}}},{"hash":"54a04252f0d715f1c773d541c042106f49a0ce7f","isMergeCommit":false,"messageTitle":"fix: String formatting error for MESSAGE_SUCCESS","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"ac45628e5e982082493d9f757da67efb39bcd359","isMergeCommit":false,"messageTitle":"fix: Fix Errors in message shown to user","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"d72117ce54491a3a27b601dc6a799102bca3c4ed","isMergeCommit":false,"messageTitle":"wip: Fix failing tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":0},"test-code":{"insertions":10,"deletions":0}}},{"hash":"666d780577c319dbf368ea28f00a34afabaaa360","isMergeCommit":true,"messageTitle":"Merge pull request #58 from NeoHW/V1.2-addTagsBackend","messageBody":"V1.2 add tags backend","fileTypesAndContributionMap":{}},{"hash":"97a409797e0709d8f957e4d0476c0b9bc16bb2b5","isMergeCommit":false,"messageTitle":"fix: Failing tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":3}}},{"hash":"93a8a253901fcfa55240ebbff16bdf761c6d710d","isMergeCommit":false,"messageTitle":"test: Add tests for AddImportantDateCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":104,"deletions":0}}},{"hash":"4566db5a5a1d768e056f89a3280d418d2da9bfb6","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into feat/add-important-dates-for-patients","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d668430d73fe9b6411aab763778394641d104d2a","isMergeCommit":false,"messageTitle":"feat: Add tests for AddImportantDate Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0},"test-code":{"insertions":64,"deletions":4}}},{"hash":"85c83c3cbb2e8b10e296301ec7daab632a57e279","isMergeCommit":false,"messageTitle":"doc: Update Dev and User Documentation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":0}}},{"hash":"7469b1eccfdb589863e74229505f33b4a516c6af","isMergeCommit":false,"messageTitle":"test: Add more tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":40,"deletions":0}}},{"hash":"aea25f1c831ca6b777203979674bb3826695a1b4","isMergeCommit":false,"messageTitle":"fix: Quick fixes per PR Review","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":1,"deletions":1},"test-code":{"insertions":14,"deletions":14}}},{"hash":"e6d595c8fd6f47739b57641881621896328da188","isMergeCommit":false,"messageTitle":"refactor: arePrefixesPresent method to ParserUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":20}}}]},{"date":"2024-03-14","commitResults":[{"hash":"48c0efb6f2648861a16aecb32b04571eb60e821a","isMergeCommit":true,"messageTitle":"Merge pull request #63 from guohuang88/branch-v1.2-delete-command","messageBody":"V1.2 Update Delete Command","fileTypesAndContributionMap":{}},{"hash":"d43cb0d7d52932a35a3c2392491d0868484a884b","isMergeCommit":false,"messageTitle":"feat: Add basic list UI for Important Dates","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}}]},{"date":"2024-03-15","commitResults":[{"hash":"5ed36f68fc9c67e8a6166be669831eac57fd2664","isMergeCommit":false,"messageTitle":"feat: Move ImportantDate List to right side","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":3}}},{"hash":"764d2fe9096721b0cb346192275fd2a522c99fe1","isMergeCommit":false,"messageTitle":"fix: Save Important Dates to addressbook.json","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":86,"deletions":10},"test-code":{"insertions":23,"deletions":13}}},{"hash":"c00121cc7c58a6b8905d3955a1e315e038a10826","isMergeCommit":false,"messageTitle":"fix: UI Display of Important Dates","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":8}}},{"hash":"a5dc3abc6590d51673ccbb8d771ad4ef1ce74f4c","isMergeCommit":false,"messageTitle":"fix: Style Warnings","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":5},"test-code":{"insertions":27,"deletions":12}}},{"hash":"cb954b9565d5c6a11896ac460415bfa71fbc7640","isMergeCommit":false,"messageTitle":"feat-test: Add tests for Save to addressbook.json","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":13}}},{"hash":"bda95b252b702db8972bdfe488fa5eed333dc75f","isMergeCommit":false,"messageTitle":"fix: Build errors from checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":2}}},{"hash":"fdecc9f9d78d8ddf3d1226d90f5cf667317aceda","isMergeCommit":false,"messageTitle":"refactor: Move tags and important dates display to sep. method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":0}}},{"hash":"fc940ee88092c79e28bbeda6eb29d19f979cc8bb","isMergeCommit":false,"messageTitle":"fix: Lacking code coverage due to UI testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":12}}},{"hash":"9d42e19e894d8ec85060fe1d01f918659fed1d7e","isMergeCommit":false,"messageTitle":"fix: Remove unneeded funcs in JsonAdaptedImportantDate","messageBody":"Trying to increase CodeCoverage percentage to account for UI tests\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":8}}}]},{"date":"2024-03-18","commitResults":[{"hash":"c7db4dd25eaeeb030389e19d07c0ea246f4e172e","isMergeCommit":false,"messageTitle":"fix: Message Success message for AddImportantDateCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":1,"deletions":1}}},{"hash":"08bcbc23d825ff3221afcffcdc0496a9d94a881b","isMergeCommit":false,"messageTitle":"fix: Validation for date time args","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":16}}},{"hash":"a7e32364c4f35f48089df23de2ba349997039110","isMergeCommit":false,"messageTitle":"feat: Add more tests for ImportantDate Validation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":4},"test-code":{"insertions":3,"deletions":2}}},{"hash":"bcff735c45d8e5000d7f6c66ac3a65dc9f113ab7","isMergeCommit":false,"messageTitle":"test-feat: Add validation tests for ImportantDate","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":1}}},{"hash":"eeca15334bd6016b7c11cec4d1e2315bc7ed27f9","isMergeCommit":false,"messageTitle":"minor: Add Event to Sample Data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":8}}},{"hash":"d640ea7e69b3cd60b60123953f1dd6c8cfaf43c3","isMergeCommit":false,"messageTitle":"refactor: Rename all instances of ImportantDate to Event","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":118,"deletions":119},"other":{"insertions":165,"deletions":165},"docs":{"insertions":7,"deletions":7},"test-code":{"insertions":251,"deletions":251}}},{"hash":"4bce68bc3d29ea9c7a03a49c5f4cfc73659b04c7","isMergeCommit":false,"messageTitle":"style: Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"d3a9290607c6b7ac778ac4bf35a0db2186c723bd","isMergeCommit":true,"messageTitle":"Merge pull request #66 from choowengyan/feat/edit-patient-info","messageBody":"v1.2 Add Patient \u0026 Edit Patient Command ","fileTypesAndContributionMap":{}},{"hash":"ee2522b24cf21b0004be57b7ba3e22247e229e23","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feat/refactor-important-dates-to-events","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8f1ec998708ac140154187670d2e8412c9203d17","isMergeCommit":true,"messageTitle":"Merge pull request #72 from guohuang88/branch-v1.2-edit-important-date","messageBody":"v1.2 Edit Important Date","fileTypesAndContributionMap":{}},{"hash":"a27dd2da06bf877ef18824089da0c983f7155751","isMergeCommit":false,"messageTitle":"fix: Indexing error with Delete Event Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"b95e32a59f0bf62365729f5fde5d865060020e0a","isMergeCommit":false,"messageTitle":"fix-test: Fix error in execute delete event command test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"c0bcc9b444995bfca1b6f84358586b5b505b635a","isMergeCommit":true,"messageTitle":"Merge pull request #80 from NeoHW/V1.2-DeleteTags","messageBody":"V1.2 delete tags","fileTypesAndContributionMap":{}},{"hash":"3484d5988ebdd948731e91e0bb9c717019a0ecf0","isMergeCommit":false,"messageTitle":"doc: Add puml diagram and update DG for AddEvent","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":110,"deletions":1}}}]},{"date":"2024-03-19","commitResults":[{"hash":"4ca3876c5062c81940e45d8236ce9c072c9d76b2","isMergeCommit":false,"messageTitle":"doc: Embed PlantUML Diagram for AddEventCommand in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":1}}},{"hash":"d444d0c9e4ca01530264ac2550f66c284e90c2d1","isMergeCommit":true,"messageTitle":"Merge pull request #94 from guohuang88/branch-v1.2-updateDG","messageBody":"Docs: v1.2 Update Developer Guide for DeleteCommand","fileTypesAndContributionMap":{}},{"hash":"4dcf337e842590d057c4a6ba9d22805709c3efb0","isMergeCommit":false,"messageTitle":"doc: Update Links for README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-21","commitResults":[{"hash":"cf6345872cf1ffb04196415ee8fb73d02180418e","isMergeCommit":true,"messageTitle":"Merge pull request #102 from ZhiWei1010/v1.2-release","messageBody":"Update build.gradle and User Guide for release","fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"5a9fbd3f9ae49bc356d895f897320ce20c8da620","isMergeCommit":true,"messageTitle":"Merge pull request #114 from guohuang88/branch-v1.3-PatientHospitalIdIssues","messageBody":"v1.3 Patient Hospital Id issues","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"9d782ce76c7d22de9c97182d04ae5c857f45a6f4","isMergeCommit":false,"messageTitle":"feat: Add custom duplicate message for add events","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":1},"test-code":{"insertions":33,"deletions":0}}},{"hash":"24fe4f73876a00c66dc403e474b04e3039cbf22d","isMergeCommit":false,"messageTitle":"minor: Rename ImportantDates to Events in comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"007374ee2d5427087c1462c6be5017b39fdf4928","isMergeCommit":false,"messageTitle":"feat: Add sorting of events to add, edit and delete commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":1}}},{"hash":"147a29f6d51e6884089b2f16652f5cea403b78bd","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feat/sort-events","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"38bfed32a5595ab2eb5428bdf36ee5debdbfbc5d","isMergeCommit":false,"messageTitle":"minor: Convert ImportantDate to Event in comments and DG","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"docs":{"insertions":21,"deletions":21},"test-code":{"insertions":1,"deletions":7}}},{"hash":"bd1a523898cf600f4e562ba6b41408789b74b8d8","isMergeCommit":false,"messageTitle":"doc: Update DG for sorted events in list command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"9814c9cdbd2e9df5193e6e7d01cbe8edcd76fd81","isMergeCommit":false,"messageTitle":"test: Add test for compareTo","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":27,"deletions":0}}},{"hash":"c3cfb289ec09ad17687eac59c54f0e4ceb2975da","isMergeCommit":false,"messageTitle":"feat: Update Event compareTo to account for null start / end times","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":5},"test-code":{"insertions":14,"deletions":11}}},{"hash":"16e915540aff07abc5e7d141064fda324481e61c","isMergeCommit":false,"messageTitle":"test: Add test for null time event compared to datetime event","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":0}}},{"hash":"56814faa5e8c5f9e4632092ec674254ac22ef150","isMergeCommit":false,"messageTitle":"fix-test: Increase Code Coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":8}}}]},{"date":"2024-03-25","commitResults":[{"hash":"82468d42f6b055c33283fc823c91db50dd8b5a31","isMergeCommit":true,"messageTitle":"Merge pull request #121 from guohuang88/branch-v1.3-FindTags","messageBody":"v1.3 Find Patient using Tags","fileTypesAndContributionMap":{}}]}],"ZhiWei1010":[{"date":"2024-03-04","commitResults":[{"hash":"a82460a19c98af3bf8d133548113d352c4fa7484","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"Add profile picture.\n\nUpdate github link to redirect to personal github page.\n\nUpdate portfolio link to redirect to team portfolio page.\n\nUpdate role and responsibility for Tan Zhi Wei .\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}}]},{"date":"2024-03-06","commitResults":[{"hash":"6b44c9a59d9a65c8cec1f010d9a69d83e9528584","isMergeCommit":true,"messageTitle":"Merge pull request #32 from NeoHW/V1.1-DG-UserProfile-and-ValueProposition","messageBody":"Adapt target user profile and value proposition to fit PatientSync","fileTypesAndContributionMap":{}},{"hash":"95fb1f028ea0bd024712a4282e0a72561288eea7","isMergeCommit":true,"messageTitle":"Merge pull request #37 from NeoHW/V1.1-DG-NFR","messageBody":"Update non-functional requirements to match Patientsync","fileTypesAndContributionMap":{}}]},{"date":"2024-03-14","commitResults":[{"hash":"589362eb58caf70adacd2f718bc96193757bb199","isMergeCommit":false,"messageTitle":"Logic: Add new DeleteImportantDateCommand","messageBody":"Add a new DeleteImportantDateCommand class to handle the deletion of\nimportant dates by patient id and important date id.\n\nTeach app to accept deleteID as a new command word and return a\nnew DeleteImportantDateCommand if format is correct, else throw an\nexception.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":148,"deletions":0}}},{"hash":"fccf694e7c6b80374dab214e294df70623d3f027","isMergeCommit":false,"messageTitle":"Logic: Teach model to delete all ImportantDates of Patient","messageBody":"Update model to delete all important dates of patient instead of by\nevent index.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":18}}},{"hash":"65ffd1542a3a2d5185b585423033caa7e6ede2b9","isMergeCommit":false,"messageTitle":"Update check style to match guidelines","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":17}}}]},{"date":"2024-03-15","commitResults":[{"hash":"bd3f52a74b0351e1b8266b87c442935d52b852fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103-F09-2/tp into v1.2-delete-important-dates","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9553b74151045e88feef95d3dbb5582e6e5aea23","isMergeCommit":false,"messageTitle":"Logic: Update DeleteImportantDateCommand to delete by event ID","messageBody":"Update COMMAND_WORD for DeleteImportantDateCommand to be \u0027deletee\u0027 for\nconsistency with \u0027adde\u0027.\n\nUpdate MESSAGE_USUAGE to stay consistent with new format.\n\nRemove extra empty line from\nAddressBookParser#parseCommand(String userInput).\n","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":16}}},{"hash":"946414d95f3af7f91f6427f8e3891109fdfc45fd","isMergeCommit":true,"messageTitle":"Merge pull request #67 from SherisseTJW/fix/list-command-should-show-important-dates","messageBody":"Fix bug where Important Dates were not saved to the AddressBook.json, and cannot be shown in `list` command","fileTypesAndContributionMap":{}},{"hash":"7b6a49d88d2a0b0a4355643f490d6940366a98eb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into v1.2-delete-important-dates","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3b505c13deb7b99268a9d9f423cacf61bc33d448","isMergeCommit":false,"messageTitle":"Logic: Update equals() method and toString() method to work correctly","messageBody":"Add a check for targetEventIndex in DeleteImportantDateCommand#Equals().\n\nAdd a new field of targetEventIndex for\nDeleteImportantDateCommand#toString().\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"371f5cb3cfff35dc0bc35da64ceac78839652127","isMergeCommit":false,"messageTitle":"Logic: Update constructor in DeleteImportantDateCommand","messageBody":"Add requiredAllNonNull check for both parameters of constructor.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"35b71f0988f42fa280d06e5d28a1f85c99a8b513","isMergeCommit":false,"messageTitle":"Test: Add tests for DeleteImportantCommand","messageBody":"Create new DeleteImportantCommandTest class to test\nDeleteImportantCommand.\n\nAdd relevant tests to ensure that DeleteImportantCommand works as\nexpected.\n","fileTypesAndContributionMap":{"test-code":{"insertions":114,"deletions":0}}},{"hash":"813c86296545cd79028f99a3db74966f2cecff87","isMergeCommit":false,"messageTitle":"Test: Add more tests for DeleteImportantDateCommand","messageBody":"Add Test for Invalid Event Id but valid Patient Id.\n\nAdd new test case in equals() method\n","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":1}}},{"hash":"d77daf5fb29a11f0a956902db6b569b4260799d8","isMergeCommit":false,"messageTitle":"Test: Add new DeleteImportantDateCommandParserTest class","messageBody":"Test to ensure DeleteImportantDateCommandParser works as expected.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":61,"deletions":3}}},{"hash":"a21dcedda8cc2731e2806654b3c7697641fcc65f","isMergeCommit":false,"messageTitle":"Documentation: Update User Guide and Developer Guide","messageBody":"Add new section for Delete Important Date command in User Guide,\nteaching users how to use the command, includes some examples as well.\n\nAdd new section for Deleting Important Date command in Developer Guide.\n","fileTypesAndContributionMap":{"docs":{"insertions":61,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"1614b2e5dc4f27b532378f5272948b7c5de79dc7","isMergeCommit":true,"messageTitle":"Merge pull request #88 from guohuang88/branch-v1.2-EditEventCommandSequenceDiagram","messageBody":"v1.2 Add EditEventSequenceDiagram and update DeleteSequenceDiagram","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"b3f4492f509057f0406541189acf69b1817eac43","isMergeCommit":true,"messageTitle":"Merge pull request #89 from SherisseTJW/doc/embed-add-event-uml-developer-guide","messageBody":"Embed PlantUML Diagram for AddEventCommand in DG","fileTypesAndContributionMap":{}},{"hash":"52c853d2ba7393f3baceace6b65567a3dcd476b6","isMergeCommit":false,"messageTitle":"Docs:Update ListCommand in Developer Guide","messageBody":"Add in ListCommand interaction in Developer guide.\n\nAdd UML sequence diagram in ListCommand.\n","fileTypesAndContributionMap":{"docs":{"insertions":73,"deletions":0}}},{"hash":"18508e500b6a2e64adaffcc56a0a5888ceca0a39","isMergeCommit":false,"messageTitle":"Docs: Update Developer Guide on DeleteEventCommand","messageBody":"Add Sequence Diagram for DeleteEventCommand.\n\nAdd syntax to choose event to delete in DeleteEventCommand as a new\ndesign consideration.\n\nEmbed sequence diagram for EditEventCommand in Developer guide.\n","fileTypesAndContributionMap":{"docs":{"insertions":98,"deletions":0}}},{"hash":"7a494e226ef8e50c014df5ddba1dfa5a3cc5f7dc","isMergeCommit":true,"messageTitle":"Merge pull request #97 from SherisseTJW/doc/update-guides-and-readme","messageBody":"Fix the Project Links in README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"c4ebbcdad5cf73e2396fc927741e37e9f177c816","isMergeCommit":false,"messageTitle":"Update build.gradle file for release","messageBody":"Update archiveFileName to PatientSync.jar.\n\nUpdate storage file name for PatientSync to be patientsync.json.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":1,"deletions":1}}},{"hash":"b15567ce3ca31516a2f01d2d02b3fc485ba608b6","isMergeCommit":false,"messageTitle":"Update User Guide for Add Command and Find Command","messageBody":"Update typo error of \"/id\" to \"id/\" in Add command examples.\n\nUpdate find command usage to find patient with Hospital ID instead of\nname.\n","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":15}}},{"hash":"513524584cbabcbd24ae491508b75ec0aca4397a","isMergeCommit":false,"messageTitle":"Update Main Window UI to display title as PatientSync","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f60aca1af954f23a745c594e0d8f49f8b36154f0","isMergeCommit":false,"messageTitle":"Update front page of User Guide","messageBody":"Update front page of User Guide to correct application name.\n\nUpdate Ui Picture.\n\nUpdate Help Message Picture.\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}},{"hash":"649b564e3fbf91a6d0690cb9491de304be62883d","isMergeCommit":false,"messageTitle":"Update User Guide to rename AddressBook to PatientSync","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]}],"choowengyan":[{"date":"2024-03-07","commitResults":[{"hash":"8ef0f765ec7e08d2f6917669a386c1b87a1f5715","isMergeCommit":false,"messageTitle":"Update name, links, role and responsibilities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":4}}},{"hash":"abd4ed57d146a0e529b4d8aa8c8821e3ef079b8e","isMergeCommit":false,"messageTitle":"Update profile picture","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-08","commitResults":[{"hash":"a47f97a1a0c5cc451c35bdd50ac0ca9cfe425f5d","isMergeCommit":true,"messageTitle":"Merge pull request #48 from SherisseTJW/doc/fix-doc","messageBody":"fix: Change extension to lower case","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"7b652d262afdf85420292a1b92be58e32788fcd4","isMergeCommit":false,"messageTitle":"Add patient\u0027s FamilyCondition class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":70},"other":{"insertions":0,"deletions":0}}},{"hash":"ce60cb7c3a2fdccdb19902c6138146f5a5b7dacb","isMergeCommit":false,"messageTitle":"Add FoodPreference.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":18}}},{"hash":"fefd51f1ff5337e4299218637b0db71cf57d6297","isMergeCommit":false,"messageTitle":"Add PatientHospitalId.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":1}}},{"hash":"2e6aaebd3896f7bb72394a6f8583322a425582c3","isMergeCommit":false,"messageTitle":"Add PreferredName.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":1}}},{"hash":"bf8226bd1fc93c2207e8251175c46447c4d05534","isMergeCommit":false,"messageTitle":"Add Hobby.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":38}}},{"hash":"f42a58b5e246b180f1b3806a036c5bf71cb6f3be","isMergeCommit":false,"messageTitle":"Update patient\u0027s field, udpate classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":20}}},{"hash":"ffb1e62302fd0f31af853a43d8f1af9e39552102","isMergeCommit":false,"messageTitle":"Add \u0027Add Command\u0027 prefix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"465fa10b960e67656a9b19db23f6357cc96c75ce","isMergeCommit":false,"messageTitle":"Update parsing methods for Add Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":27}}},{"hash":"44963f8f1ff106e176e7860e4d0b763a0b2b7383","isMergeCommit":false,"messageTitle":"Update AddCommand.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":16}}},{"hash":"7462c34d885ac994aee9eb61beea63d6792ade31","isMergeCommit":false,"messageTitle":"Update fields for AddCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":13}}},{"hash":"c37112b66262e748855b2b9ec4b8ca89c49e03b1","isMergeCommit":false,"messageTitle":"Update sample data for patients","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":21}}},{"hash":"24c17681741cdc9b62b039ca2d2b2028db359e4a","isMergeCommit":false,"messageTitle":"Update format method for display","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":6}}},{"hash":"282b85689360b01afb15a8f69dd01f83e2612f48","isMergeCommit":false,"messageTitle":"Update JsonProperty and fields for Patient details","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":65,"deletions":31}}},{"hash":"43a05feadb7d754dd21eb1eea31e836db501be27","isMergeCommit":false,"messageTitle":"Update test cases for JsonAdaptedPatient","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":82,"deletions":33}}},{"hash":"f8cf92bf6b8b936d59d1594590611910e431e778","isMergeCommit":false,"messageTitle":"Update UI display of patient card","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":6}}}]},{"date":"2024-03-13","commitResults":[{"hash":"a3581fb8ce22ed662800ad92c5aad80de4207855","isMergeCommit":false,"messageTitle":"Update imports \u0026 declarations for CommandTestUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":32,"deletions":26}}},{"hash":"db4b194527a6c8c6c4d22da3e1a45989291bcbab","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-03-14","commitResults":[{"hash":"1479555c21be29d1d5590312e62b9d3cd3e0ee17","isMergeCommit":false,"messageTitle":"Add prefix for patient hospital ID","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"b059b756d2526fb1f96f444d6d4b549053062b79","isMergeCommit":false,"messageTitle":"Add PatientHospitalId","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"fb2b0de997712ff65ca6494325a3303f52720049","isMergeCommit":false,"messageTitle":"Update patient fields and data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":14}}},{"hash":"b29bfa98d22e20b73dbf4d953001499f8538b5b8","isMergeCommit":false,"messageTitle":"Update patient test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":382,"deletions":211}}},{"hash":"2be87ea694b729efbeb19ea76178e45bdbcd0985","isMergeCommit":false,"messageTitle":"Update add patient command test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":7}}},{"hash":"b2c991eadeb538477ffc31f1076bd0cbabdce13a","isMergeCommit":false,"messageTitle":"Update imports fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":12}}},{"hash":"aae7531bcc73830da5fa2de8c10308c9bfaa0657","isMergeCommit":false,"messageTitle":"Update Edit Patient with fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":96,"deletions":44},"other":{"insertions":0,"deletions":0},"test-code":{"insertions":151,"deletions":99}}},{"hash":"38fa248eda27e44e557c2da5da843725aa01909e","isMergeCommit":false,"messageTitle":"Update patient lists","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":11}}},{"hash":"446728e9f1e97e43ff253ed4221b7eed072b459a","isMergeCommit":false,"messageTitle":"Add patient\u0027s field TC files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6},"test-code":{"insertions":210,"deletions":114}}},{"hash":"081ecd839764000f99921c777275278d750b3d68","isMergeCommit":false,"messageTitle":"Add patient hosptial ID fields","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":24,"deletions":21}}},{"hash":"3023623a1d31091cfb4a9c1aa1c5764449b3a1a9","isMergeCommit":false,"messageTitle":"Update duplicate check","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":6}}},{"hash":"773903d916813c93211d22aaeded452f14a5db4a","isMergeCommit":false,"messageTitle":"Solve checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":3}}}]},{"date":"2024-03-15","commitResults":[{"hash":"0482978402586cf9f6fa3b8b23b4e2c99137571f","isMergeCommit":false,"messageTitle":"fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":15},"test-code":{"insertions":36,"deletions":40}}},{"hash":"5a42beed453bcd9db7bc73fd7a50f03f6ad1f80e","isMergeCommit":false,"messageTitle":"Update Add \u0026 edit User Guide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":10}}},{"hash":"0604170f5e008fb0e5e4b161a9783c9a7bbb6eae","isMergeCommit":false,"messageTitle":"fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":9},"test-code":{"insertions":2,"deletions":2}}},{"hash":"fa7b076374b4d8cc4d3f7421967b9acb2881c3e0","isMergeCommit":false,"messageTitle":"Add patient fields for PatientListCard.fxml","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3}}},{"hash":"ca5c30148ebbe5e4e184e41236dd649f1a0b7caa","isMergeCommit":false,"messageTitle":"Add labels for fields in PatientListCard UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":5}}},{"hash":"bc6252b7100eaa07f7a2e4ba3aec61b1742d5dce","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7},"test-code":{"insertions":0,"deletions":163}}},{"hash":"c1653f2a2c37386f3da06c9380005db9bc961df3","isMergeCommit":false,"messageTitle":"Update Add Command UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-17","commitResults":[{"hash":"fe23a25af32c73be5517ce668d2ba799f16855ab","isMergeCommit":true,"messageTitle":"solve conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3d6a13cbad384892940e5d782bc6a8025f019cd2","isMergeCommit":false,"messageTitle":"Fix test cases for AddTags \u0026 DeleteCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":34},"other":{"insertions":1,"deletions":1},"test-code":{"insertions":32,"deletions":29}}},{"hash":"42ec05d8d8600b1aeb4f7d2805d8efc4cfe2da69","isMergeCommit":false,"messageTitle":"Update DG \u0026 UG for Add, Edit Command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":129}}},{"hash":"00d8f422de094cd2930bf7fe6a830c9bfa3cc004","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feat/edit-patient-info","messageBody":"# Conflicts:\n#\tdocs/DeveloperGuide.md\n#\tdocs/UserGuide.md\n","fileTypesAndContributionMap":{}},{"hash":"213117036c01cdfef17f76201bc76a43b9b4c045","isMergeCommit":false,"messageTitle":"Update Patient fields and solve conflicts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3}}},{"hash":"ef0a1fdab8245069d626fc27d027ba53bcf79f25","isMergeCommit":false,"messageTitle":"Update Add \u0026 Edit Command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":89,"deletions":2}}},{"hash":"54222faa327a8dd99917ea4b0a3f079768cdb7c8","isMergeCommit":false,"messageTitle":"Fix test cases for duplicated prefixes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":12,"deletions":22}}},{"hash":"e8f681f99a237697e49be1aeaa0e8e85627cabfd","isMergeCommit":false,"messageTitle":"Update delete patient success message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"811393675558dd3a5c926d35db3d55dcdd7e08d2","isMergeCommit":true,"messageTitle":"Merge pull request #74 from NeoHW/V1.2-AddTags-SequenceDiagram","messageBody":"V1.2 add tags sequence diagram","fileTypesAndContributionMap":{}},{"hash":"19adae54f036928249c5f020e3f9236b29008af4","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into feat/edit-patient-info","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ed7ec85cb87f0b99aee9db98c5b02f067ec16c14","isMergeCommit":false,"messageTitle":"Rename variables for foodPreference \u0026 prefix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":22},"test-code":{"insertions":17,"deletions":17}}},{"hash":"eda020a92d7b72eb119b84b2f3ef7200ea278adb","isMergeCommit":true,"messageTitle":"Merge pull request #76 from SherisseTJW/fix/important-dates-validation","messageBody":"Fix errors in important dates validation and UI MESSAGE_SUCCESS display","fileTypesAndContributionMap":{}},{"hash":"8e43d70878111d1a6e6b83b0fa3b7de8e06d5df2","isMergeCommit":false,"messageTitle":"Update prefix variables for foodPreference \u0026 familyCondition","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":32},"test-code":{"insertions":26,"deletions":24}}},{"hash":"b672e3c3fe17eea24784c94ddb6c308b5a849fec","isMergeCommit":true,"messageTitle":"Merge pull request #78 from SherisseTJW/feat/refactor-important-dates-to-events","messageBody":"Rename ImportantDate to Event","fileTypesAndContributionMap":{}},{"hash":"d69902c33b72e2b748349dcba7d9e9bbd2016776","isMergeCommit":true,"messageTitle":"Merge pull request #82 from SherisseTJW/fix/delete-event-command-indexing","messageBody":"Fix error in delete event command indexing","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"dcb0babfd767b88f4a5843c9b38c2cd9ca437042","isMergeCommit":true,"messageTitle":"Merge pull request #91 from ZhiWei1010/v1.2-delete-event-docs","messageBody":"Docs: Update Developer Guide on DeleteEventCommand","fileTypesAndContributionMap":{}},{"hash":"4272b50286f56b01a5b1d309521929000aa6644d","isMergeCommit":false,"messageTitle":"Add sequence diagram for AddCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":85,"deletions":0}}},{"hash":"517ca9fb8b877ea6363f4310c884b22f055469bc","isMergeCommit":false,"messageTitle":"Add sequence diagram for EditCommand","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":76,"deletions":7}}},{"hash":"4465fc537e9b307176a81d9322b6ec416e01109b","isMergeCommit":false,"messageTitle":"Update sequence diagram for AddCommand \u0026 DeleteCommand in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":0}}},{"hash":"63bac4c2cba0c99ae8d06bf736a6131607b17cbf","isMergeCommit":true,"messageTitle":"Merge pull request #96 from NeoHW/V1.2-RemoveDeleteTagTimeSequenceDiagram","messageBody":"Comment out DeleteTagsTimeSequenceDiagram in the DG","fileTypesAndContributionMap":{}},{"hash":"c96163a4508bf5e9304ac9eb75e52fa87fdb9eb0","isMergeCommit":true,"messageTitle":"Merge pull request #99 from NeoHW/V1.2-DeleteTagSequenceDiagram","messageBody":"Create DeleteTagsSequenceDiagram","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"NeoHW":[{"date":"2024-03-04","commitResults":[{"hash":"f5d917cdba85f6ffece8081e08c2f775decdf8e7","isMergeCommit":false,"messageTitle":"Update AboutUs.md for milestone 1.1","messageBody":"- Updated profile photo, role, and responsibilities for Neo Haowei\n\nThis commit updates the AboutUs.md page for milestone 1.1.\nNeo Haowei\u0027s profile photo, GitHub link, and portfolio link\nhave been added.\n\nFixes #16\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":15}}}]},{"date":"2024-03-05","commitResults":[{"hash":"a65df35e86510160985bb9c3de8dce3110b2c1fd","isMergeCommit":true,"messageTitle":"Merge pull request #24 from guohuang88/branch-AboutUs","messageBody":"Update AboutUs.md to add profile picture","fileTypesAndContributionMap":{}},{"hash":"5ddc688b9f6f5ea9a1ec4282d54c0fcae2d3cfc1","isMergeCommit":false,"messageTitle":"feat: Adapt MarkBind site for project","messageBody":"- Added GitHub Actions write permissions for repo\n- Updated site configs to match project fork:\n\t- Updated baseUrl in .github/workflows/docs.yml\n\t- Updated product name in docs/_markbind/layouts/default.md\n\t- Updated titlePrefix in docs/site.json\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-06","commitResults":[{"hash":"2e708a81e0b936532dc595f3dbe1aa318ab98d30","isMergeCommit":false,"messageTitle":"Update index.md for PatientSync","messageBody":"The index.md file was previously tailored for the addressbook3 project.\nThis commit updates the content to reflect new PatientSync project,\nincluding the project name, description, and relevant links.\n\nThe changes include:\n* Updating the project name to PatientSync\n* Updating the project description\n\nThis update is necessary to provide accurate and relevant information\nabout the PatientSync project on the main page of the documentation.\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"0cf51d0f1f89bddbe1499a73f833a20d467e6ddb","isMergeCommit":true,"messageTitle":"Merge pull request #27 from NeoHW/V1.1-UpdateProjectWebsite","messageBody":"V1.1 update project website","fileTypesAndContributionMap":{}},{"hash":"eda06224df402de86a3f0904da58212475e29211","isMergeCommit":false,"messageTitle":"Add acknowledgements to home readme","messageBody":"Give acknowledgements that this project is based on the\nAddressBook-Level3 project created by the SE-EDU intiative\n","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":1}}},{"hash":"d02733d664171f860738bb3e9ebc4a9736f450eb","isMergeCommit":false,"messageTitle":"Beautify and Add Descriptions for Project Links","messageBody":"Improve the presentation of project links by using a table format.\nAlso provide descriptions for each link to give users more context.\nThis enhances readability and provides users with quick insights\ninto the purpose of each link.\n\nThese changes aim to make navigating the project resources\neasier for users and developers alike.\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":2}}},{"hash":"984452c8305e842ee7e774fbd53b2c55ac12aba9","isMergeCommit":true,"messageTitle":"Merge pull request #29 from NeoHW/V1.1-Acknowledgement","messageBody":"V1.1 acknowledgement + Project Links table in Home Page","fileTypesAndContributionMap":{}},{"hash":"b88e1ec8fa11980ba8a00b6e93bd39807072e8fe","isMergeCommit":false,"messageTitle":"Adapt target user profile and value proposition to fit PatientSync","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":7}}},{"hash":"d9db09659f2cd43dbf00a82f3006f9092bd33f25","isMergeCommit":true,"messageTitle":"Merge pull request #33 from SherisseTJW/doc/update-dev-docs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c7d64c91a4ecdc88a78f006d93a99691fb7f46a0","isMergeCommit":false,"messageTitle":"Update non-functional requirements to match Patientsync","messageBody":"Also added new NFRs\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}},{"hash":"e5caacd65bbbf9346c8478e994f55411842ccd46","isMergeCommit":false,"messageTitle":"Add Nurse user stories for PatientSync","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":9}}},{"hash":"40d40baf6bf3012822a7c022ff455284f1d1a85a","isMergeCommit":false,"messageTitle":"Update README with project details and UI mockup","messageBody":"- Updated the README to reflect the project\u0027s target users\nand key challenges\n- Added a UI mockup image\n- Acknowledged the original source of the code\n","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":10}}}]},{"date":"2024-03-07","commitResults":[{"hash":"751b259d39951f011b181a96bb2854ffd3f45226","isMergeCommit":true,"messageTitle":"Merge pull request #42 from choowengyan/v1.1/add-profile-pic","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"daf544ff5be71776e96dc9eb2ef095680a6ee5f5","isMergeCommit":false,"messageTitle":"Fix User Guide to be in terms of PatientSync instead of AB-3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":3}}},{"hash":"3991e89b220de56bb4746d62515b0301ff4f673b","isMergeCommit":false,"messageTitle":"Fix User Guide to be in terms of PatientSync instead of AB-3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":3}}},{"hash":"81e2cddca1d1d22e5233a74c2ef247db87064a66","isMergeCommit":false,"messageTitle":"Refactor exceptions of Patient model from Person model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":56,"deletions":56},"other":{"insertions":28,"deletions":28},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":46,"deletions":46}}},{"hash":"647635c45b10c3e29604641fdd5e1463e0f3556e","isMergeCommit":false,"messageTitle":"JavaDocs comments changes from person to patients","messageBody":"Applies to\n- Name\n- Person\n- Address\n- Email\n- Phone\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"5ed0b2c3a32f6df63b9ec879f3ad3a4408e6efae","isMergeCommit":false,"messageTitle":"Refactor main Patient class from original Person class.","messageBody":"Inclusive of\n- DG, UG\n- Command\n- Parser\n- Exception\n- Test utils \u0026 data\n- Tests\n","fileTypesAndContributionMap":{"functional-code":{"insertions":206,"deletions":206},"other":{"insertions":42,"deletions":42},"docs":{"insertions":59,"deletions":59},"test-code":{"insertions":169,"deletions":169}}},{"hash":"46277c498e0bae37a23913d4775a8283be6cfc4e","isMergeCommit":false,"messageTitle":"Refactor persons to patients in methods and attributes.","messageBody":"Changes in:\n- AddressBook\n- UniquePatientList\n- UniquePatientListTest\n","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"other":{"insertions":12,"deletions":12},"test-code":{"insertions":52,"deletions":52}}},{"hash":"2d875615dadc9ae28b37e2ae7fe32ee590a2dc4d","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":6}}},{"hash":"14abc8c0e62952317ed345aedd69d74f340bcdd6","isMergeCommit":false,"messageTitle":"Fix failing TC in AddressBookTest","messageBody":"Error was in toString method of AddressBook.java, where hardcoding of\n\"person\" lead to the failure\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-09","commitResults":[{"hash":"caacd59f97714fb89ce08dbe1aae8bfd81e0a3bb","isMergeCommit":false,"messageTitle":"Refactoring of Person to Patient test changes","messageBody":"263 of 267 TC passing\n","fileTypesAndContributionMap":{"functional-code":{"insertions":49,"deletions":49},"other":{"insertions":44,"deletions":44},"docs":{"insertions":1,"deletions":1},"test-code":{"insertions":160,"deletions":160}}},{"hash":"131855f758194bd25302de24c0a82d4a9d0bd0e5","isMergeCommit":false,"messageTitle":"Fix last TC, changes to Patient tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":93,"deletions":94},"other":{"insertions":0,"deletions":0},"docs":{"insertions":2,"deletions":2},"test-code":{"insertions":290,"deletions":294}}},{"hash":"428e0915e5ec22562338774e7418a195327dc53c","isMergeCommit":false,"messageTitle":"Complete refactor of Person to Patient in main java files","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6},"test-code":{"insertions":25,"deletions":18}}}]},{"date":"2024-03-10","commitResults":[{"hash":"67ae5367d1c996357a225f34e767e5d164796b18","isMergeCommit":false,"messageTitle":"Logic: Teach the app to accept \u0027addtag\u0027 arguments but does nothing","messageBody":"Add MESSAGE_USAGE for wrong usage of addtag.\n\nModify AddTagCommand to take in an Index and String for tag, then\nconvert the tagString to a Tag and use it to create AddTagCommand.\n\nwe then print those two parameters as the error message\n","fileTypesAndContributionMap":{"functional-code":{"insertions":137,"deletions":0}}}]},{"date":"2024-03-11","commitResults":[{"hash":"f1f8b73c9d2a75480299043edee4206eb4726202","isMergeCommit":false,"messageTitle":"Add functionality: allows multiple tags to be detected","messageBody":"This change would allow multiple tags to be added at once as compared\nto adding one by one using multiple runs of the command\n","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":24}}},{"hash":"53cf1a177bc2ce896a1cceacf81aad3db10f72b1","isMergeCommit":false,"messageTitle":"Observation: Tags can only be a single word","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"acdad9cf9dd659f7e8b9e86246542a0de863eb4d","isMergeCommit":false,"messageTitle":"Complete functionality: AddTag","messageBody":"Enhancements:\n- Able to add multiple tags cumulatively\n- Repeated tags in command will be added as a single tag.\n- If the patient already has the tag, it will not be added.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":189,"deletions":125},"test-code":{"insertions":32,"deletions":27}}},{"hash":"8ccacbb49999cc18a76be6bc74a076851b2b35eb","isMergeCommit":false,"messageTitle":"Part of previous commit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":18}}},{"hash":"a1380abae86f093fe8dc205f0f8d0307593921ce","isMergeCommit":false,"messageTitle":"Refactor AddTag to AddTags","messageBody":"Improve naming style and command as it supports addition\nof multiple tags\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":15,"deletions":20}}},{"hash":"0be9d19224f7276a7c83e04bbcd9aff7370517af","isMergeCommit":false,"messageTitle":"Fix checkstyle errors for CI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"dca6610bedcecca6f0f0d6785bb25c799d4c52b3","isMergeCommit":false,"messageTitle":"create AddTagsCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":33},"test-code":{"insertions":65,"deletions":0}}},{"hash":"78896f653b49060de09bf2c5cc2bf55cdae7e104","isMergeCommit":false,"messageTitle":"Add more checks in AddTagsCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"24bb1f59e20cf9190aff5e61e6598079917b9e43","isMergeCommit":false,"messageTitle":"Complete test cases for AddTagsCommand and AddTagsCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":7},"test-code":{"insertions":161,"deletions":0}}},{"hash":"ef6ab71eed9ffff4cfc44eb3370d3ef8c1d126b7","isMergeCommit":false,"messageTitle":"Update user guide with `+` parameter","messageBody":"Info: Items with +​ after them can be used multiple times,\nbut requires at least one usage.\n\nAlso update AddTagsCommand to make use of + parameter\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":4,"deletions":1}}}]},{"date":"2024-03-12","commitResults":[{"hash":"65489a1cf4ab4a816d95935cf051c17e44484a18","isMergeCommit":false,"messageTitle":"Update User Guide with addtags section","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":4}}},{"hash":"3ce583eeb1bfac57aeace9271d40f8167cf1fee4","isMergeCommit":false,"messageTitle":"Update NFRs to include keywords at the start of each requirement","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":11}}},{"hash":"c1e96f220da381077ae4a47ae946f439289a93d2","isMergeCommit":false,"messageTitle":"Minor fix to grammatical error on use case line","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d89d62c1fd41b322dddb362f16343427a034fe4d","isMergeCommit":false,"messageTitle":"Update Value Proposition in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"2c62981ac8c8b0f20382650ca53a7a22311ec83c","isMergeCommit":false,"messageTitle":"Create 1.1 Product Overview","messageBody":"Product Overview gives a brief introduction, the context and ideation\nbehind PatientSync, and how it helps nurses.\n\nMove Acknowledgements to section 1.3\n","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":6}}},{"hash":"92743dc08d516a482297516c757d0c8c44bf0be8","isMergeCommit":false,"messageTitle":"Create 1.3 Acknowledgements section","messageBody":"Give acknowledgements to AB3 project template created by SE-EDU\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1972d0e6c5400bcfb661d5f7b2d47f564dd38ecb","isMergeCommit":false,"messageTitle":"Create ordered numbering system for headings in Section 2: Design","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"1ed50ced9ce36a6737c91d7ee508bb494a6db20f","isMergeCommit":false,"messageTitle":"Create numbered Sections 3 \u0026 4","messageBody":"- Section 3: Implementation\n- Section 4: Planed Enhancements\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":2}}},{"hash":"bb02aaab14680124c17a6730cb1585da01e44301","isMergeCommit":false,"messageTitle":"Create numbered heading section 5: Guides for different sections","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"309985c832cd7f7323bbe10283951ed1b9ed9fd7","isMergeCommit":false,"messageTitle":"Create numbered heading section 6: Appendix","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"69cb8ea8ae42edac43a7073f91b2f35b7cdd6ab7","isMergeCommit":false,"messageTitle":"Create numbered heading section 7: Appendix for manual testing","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"37c79152754998229b67bbfbbb5746fc46b32b65","isMergeCommit":false,"messageTitle":"Create layout for Section 3 Implementation section for DG","messageBody":"A Standardised format and layout to be used for implementation details\nof features.\n","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":0}}},{"hash":"b619664dea0cdbfca88fe8a65f1779a550f23b2e","isMergeCommit":false,"messageTitle":"Update heading colours to black from orange","messageBody":"This improves readability and ensure consistency with the overall design\nscheme of the application.\n\nBlack headings provide better contrast against the background;\nThis adjustment enhances the user experience and aligns the headings\nwith the desired aesthetic of the application.\n","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"00cad5e51c9d3c93e1ddf862015b7c34d90f084c","isMergeCommit":false,"messageTitle":"DG update: Introduction, Specifications and EUS for Adding Tags","messageBody":"* Fixed markdown style to have space after headings\n* Introduced Introduction section\n* Introduced Specification section\n* Introduced Example Usage Scenario section\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"docs":{"insertions":30,"deletions":3}}},{"hash":"51517d2bb17e42f1c32a2825302b321912998842","isMergeCommit":false,"messageTitle":"Add Design Considerations section for Add Tags","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":1}}},{"hash":"f9be2d3b79c1cdf1e5e6bec1513b0dd90b7d7461","isMergeCommit":false,"messageTitle":"Bug Consideration: Add comments in AddressBookParserTest","messageBody":"Certain commands works even when random alphanumeric characters are\nadded behind the command.\n\n* clear\n* list\n* help\n* exit\n\nIn these commands, `clear 123` works as if it is just `clear`\nTo consider if this is intended or a bug\n","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"2de696d0958c986506692e3a005b4215a4fc92f3","isMergeCommit":false,"messageTitle":"Fix documentation checkstyle errors detected on Github Actions","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":24},"test-code":{"insertions":0,"deletions":2}}},{"hash":"9a6066ee8293e992c426c921157d5485dbd10457","isMergeCommit":false,"messageTitle":"Add test in AddressBookParserTest: parseCommand_addTags()","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":15,"deletions":0}}}]},{"date":"2024-03-13","commitResults":[{"hash":"1160fdc537375f085a41dec85fbc00b60e7e961b","isMergeCommit":false,"messageTitle":"Remove white spaces and add in missing words in UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"65d51d6a0b4e4c49ea5b91994f12e296905eee10","isMergeCommit":false,"messageTitle":"Change AddTagsCommand COMMAND_WORD to \"addt\" from \"addtags\"","messageBody":"Rationale:\n* standardise command naming conventions\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"f3751d59f535df3589ec8f14e1efc7d1d902bb50","isMergeCommit":false,"messageTitle":"Change \"addtags\" to \"addt\" in DG and UG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-03-14","commitResults":[{"hash":"779fa80594da6abbe23a7855c185da627ebfae9b","isMergeCommit":true,"messageTitle":"Merge pull request #60 from SherisseTJW/feat/add-important-dates-for-patients","messageBody":"Feat/add important dates for patients","fileTypesAndContributionMap":{}},{"hash":"43bf6ad5337cb5883727cdb15371115f1886ff2d","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1e9f6c468b882f52b9bd2e3da4759341904cb923","isMergeCommit":false,"messageTitle":"changes to addTags after merging in changes from AddImportantDates","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":1}}},{"hash":"64b8c7011d8a4707bbfd7bc7c7429dce9c7eeab4","isMergeCommit":false,"messageTitle":"Update User Guide formatting and summary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":4}}},{"hash":"46038f33fb59067f2df79bdf1b0a4321d087a569","isMergeCommit":false,"messageTitle":"Update CI Status and Codecov in index.md","messageBody":"It would now use CS2103-F09-2 status instead of AB3\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"e9de7a2f9593e792f5cc58bc28845d1424fcf293","isMergeCommit":false,"messageTitle":"Update README.md to use CS2103-F09-2 CI status instead of AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"bf4942029a228fdfc2b9d0df33583c596bad65b0","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"a6ef0941b2d03713ddb5331f1f16ff0a216dd410","isMergeCommit":false,"messageTitle":"Add Separator between 3.2 and 3.3 in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"4919765a8b27e242170130f00d8f875e508e8205","isMergeCommit":false,"messageTitle":"Reduced redundant code in AddTagsCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":3,"deletions":3}}},{"hash":"25df2e4c641fd4c7c9b07724e869e721275b892a","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":3}}}]},{"date":"2024-03-15","commitResults":[{"hash":"7b3dfb30573f52ccf4cf702eb43f438186cce0bf","isMergeCommit":true,"messageTitle":"Merge pull request #70 from choowengyan/docs/user-guide","messageBody":"Update Add Command UserGuide.md","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"6ddbad781eecc302344b152d4e24152b7560886f","isMergeCommit":true,"messageTitle":"Merge pull request #65 from ZhiWei1010/v1.2-delete-important-dates","messageBody":"V1.2 delete important dates: Logic \u0026 Test","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"a230dbf5a51d360194b92c16b0102fdc1c69f33d","isMergeCommit":false,"messageTitle":"Create Add Tags Sequence Diagram in puml","messageBody":"Add the created diagram into the developer guide\n","fileTypesAndContributionMap":{"docs":{"insertions":82,"deletions":1}}},{"hash":"eb5bec4664cfc499c482ec55d2f41293dede7e28","isMergeCommit":false,"messageTitle":"Fix checkstyle to pass CICD","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"22936bedd018943d4aaf5c5d3a9b141f647c76bb","isMergeCommit":false,"messageTitle":"Create backend logic for Delete Tag Command","messageBody":"Added following files:\n* DeleteTagsCommand\n* DeleteTagsCommandParser\n\nThis change allows user to specify multiple tags to be deleted from\na person specified by index in the last person listing.\n\nOutput message for users would be collated for each tags, depending if\nit was successfully deleted or there was no such tag\n","fileTypesAndContributionMap":{"functional-code":{"insertions":202,"deletions":12},"docs":{"insertions":0,"deletions":0}}},{"hash":"8fa21c7ed712dc729dc7fcc9cd41cb3c82d892fb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103-F09-2/tp into V1.2-DeleteTags","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/parser/AddressBookParser.java\n","fileTypesAndContributionMap":{}},{"hash":"4e2fa1e820e168de60e43f39c8d57fbc2e1c8a82","isMergeCommit":false,"messageTitle":"Update and add JavaDocs to DeleteTagsCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":1}}},{"hash":"7ab1f79045203bce5938ee249ba0b5a81f6a6a70","isMergeCommit":false,"messageTitle":"JavaDoc changes to deleteTagsFromPatient method in DeleteTagsCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":5}}},{"hash":"37d23570b940982caacb40d4331afcbfb0992d00","isMergeCommit":false,"messageTitle":"Add JavaDocs and fix checkstyle for DeleteTagsCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":7}}},{"hash":"d23b6dd6725d70a33e1a1b79b011864dd844b587","isMergeCommit":false,"messageTitle":"Create DeleteTagCommandTest class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":140,"deletions":0}}},{"hash":"9a99bc7ff443082f5cc595c879923258044bc2d0","isMergeCommit":false,"messageTitle":"Combine methods into one for DeleteTagsCommand","messageBody":"Additionally, 100% test coverage for DeleteTagsCommand\n","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":18}}},{"hash":"c00cedd14476ed855e5b9af23a96ff8e981c3c12","isMergeCommit":false,"messageTitle":"Null checks for DeleteTagsCommandTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":0}}},{"hash":"c7a14a9674c4c716dcb58557d0c541a2aa007088","isMergeCommit":false,"messageTitle":"Create DeleteTagsCommandParserTest class","messageBody":"100% code coverage for DeleteTagsCommandParser\n","fileTypesAndContributionMap":{"test-code":{"insertions":88,"deletions":0}}},{"hash":"38237646c30d58ec9943732ae30eea12c9d4aeeb","isMergeCommit":false,"messageTitle":"Create line break formatting for each command in UG","messageBody":"Command summary update for Delete Tags\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2},"docs":{"insertions":27,"deletions":1}}},{"hash":"57030afa9186834caeae9355d14b38a035d85e8a","isMergeCommit":false,"messageTitle":"UserGuide update for Deleting Tags `deletet`","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":7}}},{"hash":"7e76dac1c101a5b36ea05e1ffe75bb3486e834e7","isMergeCommit":false,"messageTitle":"Change heading colours in main.css","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":170,"deletions":0}}},{"hash":"16f04952f461d5318818570ae06120d7aa4a3a1b","isMergeCommit":false,"messageTitle":"DG update for 3.3 Deleting Tags from a Patient","messageBody":"todo: DeleteTagsSequenceDiagram\n","fileTypesAndContributionMap":{"docs":{"insertions":74,"deletions":6}}},{"hash":"17ce98d43942531f611bbfdc62f5b97513431152","isMergeCommit":false,"messageTitle":"To add in a time sequence diagram for Delete Tags in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"c33f8504a8791da8f4c4fab2d4e823504e49b122","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into V1.2-DeleteTags","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1de2d53c447b08e597407261c2f46e629545860b","isMergeCommit":true,"messageTitle":"Merge pull request #86 from SherisseTJW/feat/add-event-sequence-diagram-DG","messageBody":"Add puml diagram and update DG for AddEvent","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"e44ef67ebb2aa3089c20f520d307c99630c88719","isMergeCommit":false,"messageTitle":"Comment out DeleteTagsTimeSequenceDiagram in the DG","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1},"docs":{"insertions":3,"deletions":0}}},{"hash":"97155e9ce87733ae0ea7de689ea3e3e8f3e500bd","isMergeCommit":false,"messageTitle":"Create DeleteTagsSequenceDiagram","messageBody":"* Add it to DG\n* edit AddTagsSequenceDiagram\n","fileTypesAndContributionMap":{"docs":{"insertions":96,"deletions":0}}}]},{"date":"2024-03-22","commitResults":[{"hash":"00c58fd74fda755a8c60c48d7a40080ea7a42f90","isMergeCommit":false,"messageTitle":"Visual output for adding of tags * successful \u0026 duplicate tags output * Update UG and DG for AddTagsCommand * Delete unthrown CommandException for AddTags and DeleteTags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":13},"docs":{"insertions":11,"deletions":11}}},{"hash":"43c6b8b6eb2de1b42f9f09dd895e32835307661e","isMergeCommit":false,"messageTitle":"Change parsing of tags","messageBody":"* Tag validation regex: start with alphanumeric, zero or more occurrence\nof alphanumeric or spaces afterwards, cannot contain other\nnon-alphanumeric characters\n* tags can now be more than one word\n* tags will be converted to lower case\n* extra spaces between words will be treated as one space\n* addt 1 t/fall risk t/fall risk t/fall RIsk will be \"fall risk\"\n","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":4}}},{"hash":"f633a1b6094d17e095d996ab9485011b7a8bef40","isMergeCommit":false,"messageTitle":"Fix tag related classes and documentation * update examples and error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":11},"docs":{"insertions":16,"deletions":14}}},{"hash":"7df47974845298d959a010449734442c5d26125c","isMergeCommit":false,"messageTitle":"Fix test cases for AddTags classes and ParserUtil","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":14}}},{"hash":"756dc4aa7730d62e405dafc2167143b20b32fbbe","isMergeCommit":false,"messageTitle":"Checkstyle fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2},"test-code":{"insertions":6,"deletions":3}}},{"hash":"d89ebb61df8fb7b366827b4fc68c8a784a5677da","isMergeCommit":false,"messageTitle":"Change inner workings of log file to patientsync instead of ab3","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"d30ad08d3c192cc392470ebc4762c46fae481165","isMergeCommit":false,"messageTitle":"Add logging for AddTagsCommandParser and DeleteTagsCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":2}}},{"hash":"83342f7f88ee96701f2600ab78ad191c42099430","isMergeCommit":false,"messageTitle":"Add logging for classes related to Add Tags and Delete Tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":8}}},{"hash":"9174cb2e648fa5d860f058a818d3ddf313b105dd","isMergeCommit":false,"messageTitle":"Add documentation outline for AddTags and DeleteTags","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":16}}},{"hash":"85965bbbc07816bf8c9c3f84cf5ddd35ce294d5c","isMergeCommit":false,"messageTitle":"Create Add Tags Activity Diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":0}}},{"hash":"46c6e1b96d101f023cf584da91f59e1e38b57724","isMergeCommit":false,"messageTitle":"Create Delete Tags Activity Diagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":0}}},{"hash":"45ba8d584b6ed631198e7fde1e8cbbc0348312cf","isMergeCommit":false,"messageTitle":"Change to Activity Diagram for Addtags and DeleteTags","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"8eef1e2b282fdda7f8e7f89023402f2a61399779","isMergeCommit":false,"messageTitle":"Add DeleteTagsActivityDiagram to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":0}}}]},{"date":"2024-03-23","commitResults":[{"hash":"c8f7c8bd91e8c062f1ce06a5b150aea3c0513f2e","isMergeCommit":false,"messageTitle":"Add func: Tag names must be less than 50 chars","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":4}}},{"hash":"bef3af80183e1ab75724c6d8805c1f3b070a54b8","isMergeCommit":false,"messageTitle":"Clean up unused imports and extra constants","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"cbbdd4e793f547091165babc89787b01bec576f5","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":15}}},{"hash":"980b94ea53582ab60c9754ba239aa2e6eb080c3d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2324S2-CS2103-F09-2/tp into V1.3-TagsEnhancement","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"55546b72b31ef083b6ac370d503fe99335a330dc","isMergeCommit":false,"messageTitle":"Enable assertions in the team repo","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0}}},{"hash":"ed86b37a6ac9961948da0c8455dbcff8578e3b10","isMergeCommit":false,"messageTitle":"Update UG for tags","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"05e76155e43187ac72b61d7ee38a204b35ba8c49","isMergeCommit":false,"messageTitle":"Fix JavaDoc to adhere to coding standards","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"9dcbb5166d6caa20422e121f2c552ef7a756db03","isMergeCommit":true,"messageTitle":"Merge pull request #119 from guohuang88/branch-v1.3-CustomMessageForDuplicateEvent","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"guohuang88":{"docs":579,"functional-code":357,"test-code":515},"SherisseTJW":{"docs":169,"functional-code":703,"test-code":471},"ZhiWei1010":{"docs":235,"functional-code":134,"test-code":144,"other":1},"choowengyan":{"docs":268,"functional-code":631,"test-code":880},"NeoHW":{"docs":640,"functional-code":788,"test-code":979,"other":174}},"authorContributionVariance":{"guohuang88":29988.307,"SherisseTJW":72122.71,"ZhiWei1010":5371.839,"choowengyan":95167.99,"NeoHW":142547.6},"authorDisplayNameMap":{"guohuang88":"CS2103-F09-2 LI G..UANG","SherisseTJW":"CS2103-F09-2 SHER.. WEN","ZhiWei1010":"CS2103-F09-2 TAN .. WEI","choowengyan":"CS2103-F09-2 CHOO.. YAN","NeoHW":"CS2103-F09-2 NEO ..OWEI"}} diff --git a/AY2324S2-CS2103T-F13-3_tp_master/authorship.json b/AY2324S2-CS2103T-F13-3_tp_master/authorship.json index 261817c0..930fb5d1 100644 --- a/AY2324S2-CS2103T-F13-3_tp_master/authorship.json +++ b/AY2324S2-CS2103T-F13-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"[![Java CI Status](https://github.com/AY2324S2-CS2103T-F13-3/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-F13-3/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-05"},{"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":"ivan24004"},"content":"* This is the software engineering project done by group F13 for [CS2103T](https://nus-cs2103-ay2324s2.github.io/website/admin/index.html)","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"* The project simulates an ongoing software project for a desktop application (called _MatchMate_) used for managing classmate contacts, their skills, and forming teams.","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"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-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"* It is built off the AddressBook-Level3 project, simulating the brownfield process of working with an existing codebase.","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"* For the detailed documentation of this project, see the **[MatchMate Product Website](https://nus-cs2103-ay2324s2.github.io/tp/)**.","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"-":4,"ivan24004":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":"benson1029"},"content":"run {","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"benson1029"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":65,"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":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" archiveFileName \u003d \u0027addressbook.jar\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"benson1029":4,"-":72}},{"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":"Ryan-Reno"},"content":" \u003c!-- Checks that all block-skills are ordered correctly. --\u003e","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" \u003c!-- Checks that Javadoc block skills appear only at the beginning of the line. --\u003e","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" \u003c!-- Checks that for block skills, indentation of continuation lines is at least 4 spaces. --\u003e","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":3,"-":431}},{"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":"ivan24004"},"content":"### Yeung Man Tsung (Benson)","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"\u003cimg src\u003d\"images/benson1029.png\" width\u003d\"200px\" alt\u003d\"benson1029 profile picture\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"[[github](https://github.com/benson1029)]","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"* Role: Team Lead","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"* Responsibilities: Scheduling and tracking, Deliverables and deadlines","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":"### Maximilliano Utomo Quok","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":"\u003cimg src\u003d\"images/tzaph.png\" width\u003d\"200px\" alt\u003d\"tzaph profile picture\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":"[[github](https://github.com/tzaph)]","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":"* Role: Developer","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":"* Responsiblities: Code Quality, Integration","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":"### Narita Yuhi","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":"\u003cimg src\u003d\"images/yuhinarita.png\" width\u003d\"200px\" alt\u003d\"yuhinarita profile picture\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":"[[github](https://github.com/yuhinarita)]","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":"* Role: Team Lead","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":"### Ryan Reno Lim","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":"\u003cimg src\u003d\"images/ryan-reno.png\" width\u003d\"200px\" alt\u003d\"ryan-reno profile picture\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":"[[github](https://github.com/Ryan-Reno)]","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-03-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":"### Tan Frederick Ivan Tiong","lastModifiedDate":"2024-03-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":"\u003cimg src\u003d\"images/ivan24004.png\" width\u003d\"200px\" alt\u003d\"ivan24004 profile picture\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":"[[github](https://github.com/ivan24004)]","lastModifiedDate":"2024-03-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":"* Responsibilities: Testing, Integration","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"-":34,"ivan24004":23}},{"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":"benson1029"},"content":"# MatchMate 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":"-"},"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":"Ryan-Reno"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a courseMate).\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"Step 2. The user executes `delete 5` command to delete the 5th courseMate 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":"2024-03-12"},{"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":"Ryan-Reno"},"content":"Step 3. The user executes `add n/David …​` to add a new courseMate. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"Step 4. The user now decides that adding the courseMate 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":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the courseMate being deleted).","lastModifiedDate":"2024-03-12"},{"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":"benson1029"},"content":"John in a NUS computer science student taking various courses with a group project component. He wishes to create groups among his friends / acquaintances and find balanced groups with diverse skillsets out of his own contact list.","lastModifiedDate":"2024-03-01"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"benson1029"},"content":"**Value proposition**:","lastModifiedDate":"2024-03-01"},{"lineNumber":280,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":281,"author":{"gitId":"benson1029"},"content":"To allow students to find balanced groups with diverse skillsets out of their own contact list.","lastModifiedDate":"2024-03-01"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"benson1029"},"content":"|----------|------------------------------------------------|------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-01"},{"lineNumber":290,"author":{"gitId":"benson1029"},"content":"| `* * *` | student | easily add new coursemates with their information | |","lastModifiedDate":"2024-03-01"},{"lineNumber":291,"author":{"gitId":"benson1029"},"content":"| `* * *` | careless user | edit information in the coursemate list | fix typos or inaccurate information about my friends mistakenly inputted into the app |","lastModifiedDate":"2024-03-01"},{"lineNumber":292,"author":{"gitId":"benson1029"},"content":"| `* * *` | careless user | delete an entry from the coursemate list | remove information mistakenly added to the app |","lastModifiedDate":"2024-03-01"},{"lineNumber":293,"author":{"gitId":"benson1029"},"content":"| `* * *` | student | add or remove skills of a coursemate | remember the strengths of each coursemate and consider them during team formation |","lastModifiedDate":"2024-03-01"},{"lineNumber":294,"author":{"gitId":"benson1029"},"content":"| `* * *` | lazy user | search through my list using specific keywords | avoid scrolling through the entire list |","lastModifiedDate":"2024-03-01"},{"lineNumber":295,"author":{"gitId":"benson1029"},"content":"| `* * *` | student finding group project partners | search for coursemates out of my contact list with a specific skillset | find a partner who is interested in or good at that particular course or subject |","lastModifiedDate":"2024-03-01"},{"lineNumber":296,"author":{"gitId":"benson1029"},"content":"| `* * *` | student forming group project teams | create a group project within the app and add coursemates to the group | remember who is already in the team |","lastModifiedDate":"2024-03-01"},{"lineNumber":297,"author":{"gitId":"benson1029"},"content":"| `* * *` | student forming group project teams | remove coursemates from a group | maintain information correctness after some coursemates are mistakenly added to the group |","lastModifiedDate":"2024-03-01"},{"lineNumber":298,"author":{"gitId":"benson1029"},"content":"| `* *` | user who may not have the best eyesight | change the font size of texts in the app | I can adjust to a size most suited to me |","lastModifiedDate":"2024-03-01"},{"lineNumber":299,"author":{"gitId":"benson1029"},"content":"| `* *` | clueless student new to using the app | know what skills I should look out for in my friends | |","lastModifiedDate":"2024-03-01"},{"lineNumber":300,"author":{"gitId":"benson1029"},"content":"| `* *` | lazy user | autocomplete some commands with possible inputs | complete my tasks faster |","lastModifiedDate":"2024-03-01"},{"lineNumber":301,"author":{"gitId":"benson1029"},"content":"| `* *` | busy user | use the \"up\" arrow key for the app to display the previous command | save time typing a series of similar commands with common substrings |","lastModifiedDate":"2024-03-01"},{"lineNumber":302,"author":{"gitId":"benson1029"},"content":"| `* *` | new user | easily find a list of commands and how they are used | start using the app without difficulties |","lastModifiedDate":"2024-03-01"},{"lineNumber":303,"author":{"gitId":"benson1029"},"content":"| `* *` | student finding group project partners among acquaintances | maintain the contact details of my friends (telegram handles) in the app | easily contact potential groupmates who I don\u0027t frequently contact |","lastModifiedDate":"2024-03-01"},{"lineNumber":304,"author":{"gitId":"benson1029"},"content":"| `* *` | student finding group project partners | input the courses each of my friends are planning to take or confirmed to take | limit my search to friends taking that specific course only |","lastModifiedDate":"2024-03-01"},{"lineNumber":305,"author":{"gitId":"benson1029"},"content":"| `* *` | student finding group project partners | mark coursemates as either friends or acquaintances | prioritise creating groups with some friends over acquaintances |","lastModifiedDate":"2024-03-01"},{"lineNumber":306,"author":{"gitId":"benson1029"},"content":"| `* *` | student forming a group | set some skills as extremely important | prioritise those skills while searching for team members |","lastModifiedDate":"2024-03-01"},{"lineNumber":307,"author":{"gitId":"benson1029"},"content":"| `* *` | student creating a group | search for possible combinations that match the required types of roles and skills | form project groups that require different kinds of roles or skills per member |","lastModifiedDate":"2024-03-01"},{"lineNumber":308,"author":{"gitId":"benson1029"},"content":"| `* *` | student forming a group | save a certain filter or search setting with a label | reuse my past search setting when I take courses of similar nature |","lastModifiedDate":"2024-03-01"},{"lineNumber":309,"author":{"gitId":"benson1029"},"content":"| `* *` | student forming a group | save the set of friends I already contacted with and their respective outcomes | know who else to consider and contact |","lastModifiedDate":"2024-03-01"},{"lineNumber":310,"author":{"gitId":"benson1029"},"content":"| `* *` | user who primarily used other formats to organize contacts | import data from a file | save the hassle of manually adding to the contact list |","lastModifiedDate":"2024-03-01"},{"lineNumber":311,"author":{"gitId":"benson1029"},"content":"| `*` | student bidding for tutorials of courses with group projects | maintain each potential partners\u0027 availability for different tutorial slots | decide on a common tutorial slot to bid for |","lastModifiedDate":"2024-03-01"},{"lineNumber":312,"author":{"gitId":"benson1029"},"content":"| `*` | student with past group project experiences | rate and review my group members after completing a project together | remember their skills, work ethics and collaboration styles during the next team formation |","lastModifiedDate":"2024-03-01"},{"lineNumber":313,"author":{"gitId":"benson1029"},"content":"| `*` | user with colour vision deficiency | customize the app\u0027s colour palette | better suit my visual needs and ensure that important elements and information are easily distinguishable |","lastModifiedDate":"2024-03-01"},{"lineNumber":314,"author":{"gitId":"benson1029"},"content":"| `*` | busy user | create alias commands | run long repetitive commands using a shorter self-made command |","lastModifiedDate":"2024-03-01"},{"lineNumber":315,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"tzaph"},"content":"(For all use cases below, the **System** is `MatchMate` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-04"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"tzaph"},"content":"**Use case: Add a new contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"tzaph"},"content":"1. User requests to add a new contact along with the data.","lastModifiedDate":"2024-03-04"},{"lineNumber":327,"author":{"gitId":"tzaph"},"content":"2. MatchMate adds the contact to the list.","lastModifiedDate":"2024-03-04"},{"lineNumber":328,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs invalid or incomplete data. ","lastModifiedDate":"2024-03-04"},{"lineNumber":335,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating the data is invalid or incomplete.","lastModifiedDate":"2024-03-04"},{"lineNumber":336,"author":{"gitId":"tzaph"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":337,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":339,"author":{"gitId":"tzaph"},"content":"**Use case: Delete a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":341,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":343,"author":{"gitId":"tzaph"},"content":"1. User requests to delete a contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":344,"author":{"gitId":"tzaph"},"content":"2. MatchMate deletes the contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":346,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":348,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":350,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs a contact that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":351,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating that the contact cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":352,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":353,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":354,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":355,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":356,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":357,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":358,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":359,"author":{"gitId":"tzaph"},"content":"**Use case: List all contacts**","lastModifiedDate":"2024-03-04"},{"lineNumber":360,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":361,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":362,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":363,"author":{"gitId":"tzaph"},"content":"1. User requests to list all contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":364,"author":{"gitId":"tzaph"},"content":"2. MatchMate shows all contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":365,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":366,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":367,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":368,"author":{"gitId":"tzaph"},"content":"**Use case: Edit a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":369,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":370,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":371,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":372,"author":{"gitId":"tzaph"},"content":"1. User requests to edit a contact along with the new data.","lastModifiedDate":"2024-03-04"},{"lineNumber":373,"author":{"gitId":"tzaph"},"content":"2. MatchMate adds the contact to the list.","lastModifiedDate":"2024-03-04"},{"lineNumber":374,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":375,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":376,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":377,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":378,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":379,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":380,"author":{"gitId":"tzaph"},"content":"* 1a. User requests to edit a contact that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":381,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating that the contact cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":382,"author":{"gitId":"tzaph"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":383,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":384,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs invalid or incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":385,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate shows a message indicating the data is invalid or incomplete.","lastModifiedDate":"2024-03-04"},{"lineNumber":386,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":387,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":388,"author":{"gitId":"tzaph"},"content":"* 1c. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":389,"author":{"gitId":"tzaph"},"content":" * 1c1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":390,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":391,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":392,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":393,"author":{"gitId":"tzaph"},"content":"**Use case: Add skills to a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":394,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":395,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":396,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":397,"author":{"gitId":"tzaph"},"content":"1. User requests to add skills to a contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":398,"author":{"gitId":"tzaph"},"content":"2. MatchMate appends the skills to the contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":399,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts.","lastModifiedDate":"2024-03-04"},{"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":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":404,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":405,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":406,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":407,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs a contact that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":411,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate shows a message indicating that the contact cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":412,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":413,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"tzaph"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":415,"author":{"gitId":"tzaph"},"content":"* 1c. User inputs a skill that does not exist yet.","lastModifiedDate":"2024-03-04"},{"lineNumber":416,"author":{"gitId":"tzaph"},"content":" * 1c1. MatchMate shows a warning message indicating that the skill is a new entry.","lastModifiedDate":"2024-03-04"},{"lineNumber":417,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":418,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":419,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":420,"author":{"gitId":"tzaph"},"content":"* 1d. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":421,"author":{"gitId":"tzaph"},"content":" * 1d1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":422,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":423,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":424,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":425,"author":{"gitId":"tzaph"},"content":"**Use case: Delete skills from a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":426,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":427,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":428,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":429,"author":{"gitId":"tzaph"},"content":"1. User requests to delete existing skills from a contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":430,"author":{"gitId":"tzaph"},"content":"2. MatchMate removes the specified skills from the contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":431,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":432,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":433,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":434,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":435,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":436,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":437,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":438,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":439,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":440,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":441,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":442,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs a contact that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":443,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate shows a message indicating that the contact cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":445,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":447,"author":{"gitId":"tzaph"},"content":"* 1c. User inputs a skill the contact does not have.","lastModifiedDate":"2024-03-04"},{"lineNumber":448,"author":{"gitId":"tzaph"},"content":" * 1c1. MatchMate shows a message indicating that the skill cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":449,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":450,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":451,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":452,"author":{"gitId":"tzaph"},"content":"* 1d. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":453,"author":{"gitId":"tzaph"},"content":" * 1d1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":454,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":455,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":456,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":457,"author":{"gitId":"tzaph"},"content":"**Use case: Filter contacts based on keyword**","lastModifiedDate":"2024-03-04"},{"lineNumber":458,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":459,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":460,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":461,"author":{"gitId":"tzaph"},"content":"1. User requests to find contacts with the specified keyword.","lastModifiedDate":"2024-03-04"},{"lineNumber":462,"author":{"gitId":"tzaph"},"content":"2. MatchMate shows a list of the filtered contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":463,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":464,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":465,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":466,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":467,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":468,"author":{"gitId":"tzaph"},"content":"* 1a. No contacts fulfill the filter search.","lastModifiedDate":"2024-03-04"},{"lineNumber":469,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating no contacts can be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":470,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":471,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":472,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":473,"author":{"gitId":"tzaph"},"content":"**Use case: Create a group**","lastModifiedDate":"2024-03-04"},{"lineNumber":474,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":475,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":476,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":477,"author":{"gitId":"tzaph"},"content":"1. User requests to create a group with a specified name.","lastModifiedDate":"2024-03-04"},{"lineNumber":478,"author":{"gitId":"tzaph"},"content":"2. MatchMate acknowledges the creation of the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":479,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":480,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":481,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":482,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":483,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":484,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs a group name that already exists.","lastModifiedDate":"2024-03-04"},{"lineNumber":485,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating the group already exists.","lastModifiedDate":"2024-03-04"},{"lineNumber":486,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":487,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":488,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":489,"author":{"gitId":"tzaph"},"content":"**Use case: Delete a group**","lastModifiedDate":"2024-03-04"},{"lineNumber":490,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":491,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":492,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":493,"author":{"gitId":"tzaph"},"content":"1. User requests to delete a group.","lastModifiedDate":"2024-03-04"},{"lineNumber":494,"author":{"gitId":"tzaph"},"content":"2. MatchMate deletes the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":495,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":496,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":497,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":498,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":499,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":500,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs a group that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":501,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating that the group cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":502,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":503,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":504,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":505,"author":{"gitId":"tzaph"},"content":"**Use case: Add a contact to a group**","lastModifiedDate":"2024-03-04"},{"lineNumber":506,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":507,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":508,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":509,"author":{"gitId":"tzaph"},"content":"1. User requests to add a contact to a group with a specified name or index from the displayed list.","lastModifiedDate":"2024-03-04"},{"lineNumber":510,"author":{"gitId":"tzaph"},"content":"2. MatchMate adds the contact to the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":511,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts in the specified group.","lastModifiedDate":"2024-03-04"},{"lineNumber":512,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":513,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":514,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":515,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":516,"author":{"gitId":"tzaph"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":517,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs a name or index no contacts correspond to.","lastModifiedDate":"2024-03-04"},{"lineNumber":518,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating the contact doesn\u0027t exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":519,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":520,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":521,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":522,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs a group name that doesn\u0027t exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":523,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate shows a message indicating the group doesn\u0027t exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":524,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":525,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":526,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":527,"author":{"gitId":"tzaph"},"content":"* 1c. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":528,"author":{"gitId":"tzaph"},"content":" * 1c1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":529,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":531,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"tzaph"},"content":"* 1d. The contact is already in the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":533,"author":{"gitId":"tzaph"},"content":" * 1d1. MatchMate shows a message indicating the contact is already in the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"yuhinarita"},"content":"1. **Environment**: Should work on any _mainstream_ OS as long as it has Java `11` or above installed.","lastModifiedDate":"2024-03-01"},{"lineNumber":540,"author":{"gitId":"yuhinarita"},"content":"2. **Performance**: Should respond to user interaction within 3 seconds at most for typical usage (unless it is lagging due to reasons external to the app).","lastModifiedDate":"2024-03-01"},{"lineNumber":541,"author":{"gitId":"yuhinarita"},"content":"3. **Performance**: Should be able to hold up to 1000 _coursemates_ without a noticeable sluggishness in performance (as specified above) for typical usage.","lastModifiedDate":"2024-03-01"},{"lineNumber":542,"author":{"gitId":"yuhinarita"},"content":"4. **Resilience**: Should gracefully handle commonly anticipated errors (e.g. incorrect _command_ input) without crashing or losing saved data.","lastModifiedDate":"2024-03-01"},{"lineNumber":543,"author":{"gitId":"yuhinarita"},"content":"5. **Accessibility**: Should notify the user whether a _command_ is successful or has failed.","lastModifiedDate":"2024-03-01"},{"lineNumber":544,"author":{"gitId":"yuhinarita"},"content":"6. **Accessibility**: Should be accessible to English speakers with average typing speed.","lastModifiedDate":"2024-03-01"},{"lineNumber":545,"author":{"gitId":"yuhinarita"},"content":"7. **Accessibility**: Usage of basic _commands_ (e.g. add, edit) should be learnable within a day.","lastModifiedDate":"2024-03-01"},{"lineNumber":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":550,"author":{"gitId":"yuhinarita"},"content":"* **Command**: A user input that will cause the application to perform an operation according to the MatchMate UserGuide","lastModifiedDate":"2024-03-01"},{"lineNumber":551,"author":{"gitId":"yuhinarita"},"content":"* **Coursemate**: A friend or classmate that you expect to form a _group_ based on certain _skills_ they might have","lastModifiedDate":"2024-03-01"},{"lineNumber":552,"author":{"gitId":"yuhinarita"},"content":"* **Group**: A grouping/team of _coursemates_ for a course, project, or activity","lastModifiedDate":"2024-03-01"},{"lineNumber":553,"author":{"gitId":"yuhinarita"},"content":"* **Skill**: Knowledge, ability, or experience that a _coursemate_ has ","lastModifiedDate":"2024-03-01"},{"lineNumber":554,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":561,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":563,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":564,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":565,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":566,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":567,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":568,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":569,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":570,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":571,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":572,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":573,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":574,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":575,"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":576,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":577,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":578,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":579,"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":580,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":581,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":582,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":583,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":584,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":585,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":586,"author":{"gitId":"Ryan-Reno"},"content":"### Deleting a courseMate","lastModifiedDate":"2024-03-12"},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":588,"author":{"gitId":"Ryan-Reno"},"content":"1. Deleting a courseMate while all courseMates are being shown","lastModifiedDate":"2024-03-12"},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":590,"author":{"gitId":"Ryan-Reno"},"content":" 1. Prerequisites: List all courseMates using the `list` command. Multiple courseMates in the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":592,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":593,"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":594,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":595,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":596,"author":{"gitId":"Ryan-Reno"},"content":" Expected: No courseMate is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2024-03-12"},{"lineNumber":597,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":598,"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":599,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":600,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":601,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":602,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":603,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":604,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":605,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":606,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":607,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":608,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":609,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"yuhinarita":12,"Ryan-Reno":9,"benson1029":32,"tzaph":193,"-":363}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"# MatchMate User Guide","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"Matchmate is a **desktop app to create groups among their friends / acquaintances,","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"as well as to allow students to find balanced groups with diverse skillsets out of their own contact list.** ","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"It is optimized for Command Line Interface space(CLI) while still having the benefits of a Graphical User Interface (GUI). ","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"1. Download the latest `matchmate.jar`","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your app.","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar matchmate.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"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":25,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" * `add John Doe -p 87654321 -e johndoe@example.com -s Leadership -s C++`: Adds a contact named `John Doe` to the contact list.","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" * `delete #3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2024-03-21"},{"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":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"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":"Ryan-Reno"},"content":" e.g. in `add NAME`, `NAME` is a parameter which can be used as `add John Doe`.","lastModifiedDate":"2024-03-01"},{"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":"Ryan-Reno"},"content":" e.g `add NAME [-p PHONE_NUMBER]` can be used as `add John Doe -p 8762318` or as `add John Doe`.","lastModifiedDate":"2024-03-01"},{"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":"Ryan-Reno"},"content":" e.g. `[-s SKILL]…​` can be used as ` ` (i.e. 0 times), `-s C++`, `-s C++ -s Python` etc.","lastModifiedDate":"2024-03-01"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":"### Adding a courseMate: `add`","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"Ryan-Reno"},"content":"Adds a contact to the contact list. A name will be required, and all other information will be optional.","lastModifiedDate":"2024-03-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":"Format: `add NAME [-p PHONE_NUMBER] [-e EMAIL] [-s SKILL]…​`","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":"- `NAME`: Name of the contact. It can be any string except that it cannot start with the hashtag (#) symbol , and words cannot start with the hyphen (-) character.","lastModifiedDate":"2024-03-01"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":"- `PHONE_NUMBER` (optional): Phone number of the contact. Accepts strings with numeric characters only.","lastModifiedDate":"2024-03-01"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":"- `EMAIL` (optional): Email of the contact. Accepts any strings without spaces.","lastModifiedDate":"2024-03-01"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":"- `SKILL` (zero or multiple allowed): Skill(s) of the courseMate. Accepts any strings, except that words cannot start with the hyphen (-) character. ","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":"**Tip:** A courseMate can have any number of skills (including 0)","lastModifiedDate":"2024-03-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":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":"- `add John Doe`","lastModifiedDate":"2024-03-01"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":"- `add John Doe -p 87654321 -e johndoe@example.com -s Leadership -s C++`","lastModifiedDate":"2024-03-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":"### Listing all courseMates : `list`","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":"Lists all contacts in the contact list.","lastModifiedDate":"2024-03-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"Ryan-Reno"},"content":"Expected output:","lastModifiedDate":"2024-03-01"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":"- `Message: Listed all contacts`","lastModifiedDate":"2024-03-01"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":101,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":102,"author":{"gitId":"Ryan-Reno"},"content":"### Editing a courseMate : `edit`","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":"Edits an existing contact with a given name. This command supports changing the name, phone number and email.","lastModifiedDate":"2024-03-01"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":"Format: `edit COURSEMATE [-n NEW_NAME] [-p NEW_PHONE_NUMBER] [-e NEW_EMAIL]`","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":108,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":109,"author":{"gitId":"Ryan-Reno"},"content":"- `COURSEMATE`: Name of the existing contact or aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":"- `NEW_NAME` (optional): New name of the contact. It can be any string except that it cannot start with the hashtag (#) symbol, and words cannot start with the hyphen (-) character.","lastModifiedDate":"2024-03-01"},{"lineNumber":111,"author":{"gitId":"Ryan-Reno"},"content":"- `NEW_PHONE_NUMBER` (optional): New phone number of the contact. Accepts strings with numeric characters only.","lastModifiedDate":"2024-03-01"},{"lineNumber":112,"author":{"gitId":"Ryan-Reno"},"content":"- `NEW_EMAIL` (optional): New email of the contact. Accepts any strings without spaces.","lastModifiedDate":"2024-03-01"},{"lineNumber":113,"author":{"gitId":"Ryan-Reno"},"content":" ","lastModifiedDate":"2024-03-01"},{"lineNumber":114,"author":{"gitId":"Ryan-Reno"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"Ryan-Reno"},"content":"**Tip:**","lastModifiedDate":"2024-03-01"},{"lineNumber":117,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":118,"author":{"gitId":"Ryan-Reno"},"content":"Instead of supplying a full name to identify an existing contact, you can use the following shortcuts:","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"Ryan-Reno"},"content":"- `#1`, `#2`, …, `#n` (where n is the number of contacts currently displayed in the contact list panel) – `#k` references the k-th contact currently displayed in the contact list panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":120,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":121,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":122,"author":{"gitId":"Ryan-Reno"},"content":"- `##` – References the contact currently displayed in the detailed view panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":123,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"Ryan-Reno"},"content":"- A substring of the name instead of the full name.","lastModifiedDate":"2024-03-01"},{"lineNumber":126,"author":{"gitId":"Ryan-Reno"},"content":" - In the event of multiple matches (the substring appears in multiple contacts), you will receive the following message: `There are x course mates with similar names.","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"Ryan-Reno"},"content":" Retry the command by specifying the index of the contact in the list, example: #1.` and the list of matching contacts will be displayed in the contact list panel.","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"Ryan-Reno"},"content":" - No side effects will be made by the current command.","lastModifiedDate":"2024-03-01"},{"lineNumber":129,"author":{"gitId":"Ryan-Reno"},"content":" - You should retry the command by finding the contact on the list and using the hashtag notation (`#`) to identify the contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":130,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":131,"author":{"gitId":"Ryan-Reno"},"content":" Example:","lastModifiedDate":"2024-03-01"},{"lineNumber":132,"author":{"gitId":"Ryan-Reno"},"content":" - You have the following contacts listed in the contact list panel:","lastModifiedDate":"2024-03-01"},{"lineNumber":133,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":134,"author":{"gitId":"Ryan-Reno"},"content":" `#1 Benson`","lastModifiedDate":"2024-03-01"},{"lineNumber":135,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":136,"author":{"gitId":"Ryan-Reno"},"content":" `#2 Ben`","lastModifiedDate":"2024-03-01"},{"lineNumber":137,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":138,"author":{"gitId":"Ryan-Reno"},"content":" Typing `edit Ben` will display a warning message for having multiple matches.","lastModifiedDate":"2024-03-01"},{"lineNumber":139,"author":{"gitId":"Ryan-Reno"},"content":" - Case 1 Edit Benson:","lastModifiedDate":"2024-03-01"},{"lineNumber":140,"author":{"gitId":"Ryan-Reno"},"content":" - Type `edit Benson ...` or just its substring `edit Bens ...`","lastModifiedDate":"2024-03-01"},{"lineNumber":141,"author":{"gitId":"Ryan-Reno"},"content":" - Alternatively, you can use the alias `edit #1 ...`","lastModifiedDate":"2024-03-01"},{"lineNumber":142,"author":{"gitId":"Ryan-Reno"},"content":" - Case 2 Edit Ben:","lastModifiedDate":"2024-03-01"},{"lineNumber":143,"author":{"gitId":"Ryan-Reno"},"content":" - Type `edit #2 ...` as you must specify its index in the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":144,"author":{"gitId":"Ryan-Reno"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"Ryan-Reno"},"content":"- `edit John Doe -n Joe Schmo`","lastModifiedDate":"2024-03-01"},{"lineNumber":148,"author":{"gitId":"Ryan-Reno"},"content":"- `edit #1 -n Joe Schmo`","lastModifiedDate":"2024-03-01"},{"lineNumber":149,"author":{"gitId":"Ryan-Reno"},"content":"- `edit John -p 98765432 -e johndoe@gmail.com`","lastModifiedDate":"2024-03-01"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"Ryan-Reno"},"content":"### Add a skill to a contact : `add-skill`","lastModifiedDate":"2024-03-01"},{"lineNumber":152,"author":{"gitId":"benson1029"},"content":"Adds a list of skills to a contact.","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"benson1029"},"content":"Format: `add-skill COURSENAME [-s SKILL]...`","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":157,"author":{"gitId":"benson1029"},"content":"- `COURSENAME`: Name of the existing coursemate. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"Ryan-Reno"},"content":"- `SKILL` (zero or multiple allowed): Skill(s) of the courseMate. Accepts any strings, except that words cannot start with the hyphen (-) character.","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"Ryan-Reno"},"content":"- `add-skill John Doe -s C++ -s Leadership`","lastModifiedDate":"2024-03-01"},{"lineNumber":162,"author":{"gitId":"Ryan-Reno"},"content":"- `add-skill ##`","lastModifiedDate":"2024-03-01"},{"lineNumber":163,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":164,"author":{"gitId":"Ryan-Reno"},"content":" This command does nothing but it will be executed successfully.","lastModifiedDate":"2024-03-01"},{"lineNumber":165,"author":{"gitId":"Ryan-Reno"},"content":" ","lastModifiedDate":"2024-03-01"},{"lineNumber":166,"author":{"gitId":"Ryan-Reno"},"content":"### Delete a skill from a contact : `delete-skill`","lastModifiedDate":"2024-03-01"},{"lineNumber":167,"author":{"gitId":"benson1029"},"content":"Deletes a list of skills from a contact.","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"benson1029"},"content":"Format: `delete-skill COURSEMATE [-s SKILL]...`","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":172,"author":{"gitId":"benson1029"},"content":"- `COURSEMATE`: Name of the existing coursemate. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"Ryan-Reno"},"content":"- `SKILL`: (zero or multiple allowed): Skill(s) of the courseMate. These must be existing skills that the contact contains.","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"Ryan-Reno"},"content":"- `delete-skill John Doe -s C++ -s Leadership`","lastModifiedDate":"2024-03-01"},{"lineNumber":177,"author":{"gitId":"Ryan-Reno"},"content":"- `delete-skill ##`","lastModifiedDate":"2024-03-01"},{"lineNumber":178,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":179,"author":{"gitId":"Ryan-Reno"},"content":" This command does nothing but it will be executed successfully.","lastModifiedDate":"2024-03-01"},{"lineNumber":180,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":181,"author":{"gitId":"Ryan-Reno"},"content":"### Search contacts with a keyword: `find`","lastModifiedDate":"2024-03-01"},{"lineNumber":182,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":183,"author":{"gitId":"benson1029"},"content":"Searches contacts that include a matching keyword, in their name or skills. More relevant fields can be supported in the future.","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":185,"author":{"gitId":"benson1029"},"content":"To match a contact’s skill, the keyword should match exactly with the skill. To match a contact’s name, the keyword can be a case-insensitive substring of the name.","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":187,"author":{"gitId":"Ryan-Reno"},"content":"Format: `find KEYWORD`","lastModifiedDate":"2024-03-01"},{"lineNumber":188,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":189,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":190,"author":{"gitId":"benson1029"},"content":"- `KEYWORD`: The keyword of the search. Accepts any strings.","lastModifiedDate":"2024-03-21"},{"lineNumber":191,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":192,"author":{"gitId":"Ryan-Reno"},"content":"Examples:","lastModifiedDate":"2024-03-01"},{"lineNumber":193,"author":{"gitId":"Ryan-Reno"},"content":"- `find John`","lastModifiedDate":"2024-03-01"},{"lineNumber":194,"author":{"gitId":"Ryan-Reno"},"content":"- `find C++`","lastModifiedDate":"2024-03-01"},{"lineNumber":195,"author":{"gitId":"benson1029"},"content":"- `find CS2103T G18`","lastModifiedDate":"2024-03-21"},{"lineNumber":196,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":197,"author":{"gitId":"Ryan-Reno"},"content":"### Deleting a contact : `delete`","lastModifiedDate":"2024-03-01"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":199,"author":{"gitId":"Ryan-Reno"},"content":"Deletes a contact with a given name.","lastModifiedDate":"2024-03-01"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":201,"author":{"gitId":"benson1029"},"content":"Format: `delete COURSEMATE`","lastModifiedDate":"2024-03-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":203,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":204,"author":{"gitId":"benson1029"},"content":"- `COURSEMATE`: Name of the existing coursemate. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":206,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-01"},{"lineNumber":207,"author":{"gitId":"Ryan-Reno"},"content":"- `delete ##`","lastModifiedDate":"2024-03-01"},{"lineNumber":208,"author":{"gitId":"Ryan-Reno"},"content":"- `delete John`","lastModifiedDate":"2024-03-01"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":210,"author":{"gitId":"Ryan-Reno"},"content":"### Create group project: `create-group`","lastModifiedDate":"2024-03-01"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":212,"author":{"gitId":"benson1029"},"content":"Creates a group project. You can specify the coursemates in the group when creating the group, or choose to add them later.","lastModifiedDate":"2024-03-21"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":214,"author":{"gitId":"benson1029"},"content":"Format: `create-group GROUP_NAME [-cm COURSEMATE]`","lastModifiedDate":"2024-03-21"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":216,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":217,"author":{"gitId":"Ryan-Reno"},"content":"- `GROUP_NAME`: The group name. Accepts any strings, except that words cannot start with the hyphen (-) character.","lastModifiedDate":"2024-03-01"},{"lineNumber":218,"author":{"gitId":"benson1029"},"content":"- `COURSEMATE` (zero or multiple allowed): Name of the existing coursemates to be added to the group. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-21"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":220,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-21"},{"lineNumber":221,"author":{"gitId":"benson1029"},"content":"- `create-group CS2103T G18`","lastModifiedDate":"2024-03-21"},{"lineNumber":222,"author":{"gitId":"benson1029"},"content":"- `create-group CS2103T G18 -cm John -cm #2`","lastModifiedDate":"2024-03-21"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":224,"author":{"gitId":"benson1029"},"content":"### Add coursemates to group: `add-member`","lastModifiedDate":"2024-03-21"},{"lineNumber":225,"author":{"gitId":"benson1029"},"content":"Adds some team members to an existing group.","lastModifiedDate":"2024-03-21"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":227,"author":{"gitId":"benson1029"},"content":"Format: `add-member GROUP_NAME [-cm COURSEMATE]...`","lastModifiedDate":"2024-03-21"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":229,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":230,"author":{"gitId":"benson1029"},"content":"- `GROUP_NAME`: Name of the existing group.","lastModifiedDate":"2024-03-21"},{"lineNumber":231,"author":{"gitId":"benson1029"},"content":"- `COURSEMATE`: Name of the existing coursemates to be added to the group. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-21"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":233,"author":{"gitId":"Ryan-Reno"},"content":"Examples:","lastModifiedDate":"2024-03-01"},{"lineNumber":234,"author":{"gitId":"benson1029"},"content":"- `add-member CS2103T G18 -cm Ivan -cm #1`","lastModifiedDate":"2024-03-21"},{"lineNumber":235,"author":{"gitId":"benson1029"},"content":"- `add-member CS2103T G18 -cm ##`","lastModifiedDate":"2024-03-21"},{"lineNumber":236,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":237,"author":{"gitId":"benson1029"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":238,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":239,"author":{"gitId":"benson1029"},"content":"**Tip:** Different from coursemate names, group names must be an exact match.","lastModifiedDate":"2024-03-21"},{"lineNumber":240,"author":{"gitId":"benson1029"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":241,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":242,"author":{"gitId":"benson1029"},"content":"### Delete coursemates from group: `delete-member`","lastModifiedDate":"2024-03-21"},{"lineNumber":243,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":244,"author":{"gitId":"benson1029"},"content":"Deletes some team members from an existing group.","lastModifiedDate":"2024-03-21"},{"lineNumber":245,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":246,"author":{"gitId":"benson1029"},"content":"Format: `delete-member GROUP_NAME [-cm COURSEMATE]...`","lastModifiedDate":"2024-03-21"},{"lineNumber":247,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":248,"author":{"gitId":"benson1029"},"content":"Parameters:","lastModifiedDate":"2024-03-21"},{"lineNumber":249,"author":{"gitId":"benson1029"},"content":"- `GROUP_NAME`: Name of the existing group.","lastModifiedDate":"2024-03-21"},{"lineNumber":250,"author":{"gitId":"benson1029"},"content":"- `COURSEMATE`: Name of the existing coursemates to be deleted from the group. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-21"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":252,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-21"},{"lineNumber":253,"author":{"gitId":"benson1029"},"content":"- `delete-member CS2103T G18 -cm Ivan -cm #1`","lastModifiedDate":"2024-03-21"},{"lineNumber":254,"author":{"gitId":"benson1029"},"content":"- `delete-member CS2103T G18 -cm ##`","lastModifiedDate":"2024-03-21"},{"lineNumber":255,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":256,"author":{"gitId":"Ryan-Reno"},"content":"### Delete a group: `delete-group`","lastModifiedDate":"2024-03-01"},{"lineNumber":257,"author":{"gitId":"benson1029"},"content":"Deletes a group.","lastModifiedDate":"2024-03-21"},{"lineNumber":258,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":259,"author":{"gitId":"Ryan-Reno"},"content":"Format: `delete-group GROUP_NAME`","lastModifiedDate":"2024-03-01"},{"lineNumber":260,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":261,"author":{"gitId":"benson1029"},"content":"Example: `delete-group CS2103T G18`","lastModifiedDate":"2024-03-21"},{"lineNumber":262,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":263,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":264,"author":{"gitId":"Ryan-Reno"},"content":"- `GROUP_NAME`: Name of the existing group.","lastModifiedDate":"2024-03-01"},{"lineNumber":265,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"Ryan-Reno"},"content":"### Save and load the state of app","lastModifiedDate":"2024-03-01"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"benson1029"},"content":"Load the saved data when starting the app. Save the state of coursemates and groups every time it is updated via adding or editing. This should run automatically on start and subsequently after a command that alters the state of the app (e.g. add, edit).","lastModifiedDate":"2024-03-21"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":283,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":285,"author":{"gitId":"Ryan-Reno"},"content":"MatchMate data are saved automatically as a JSON file `[JAR file location]/data/matchmate.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-01"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":287,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":290,"author":{"gitId":"Ryan-Reno"},"content":"If your changes to the data file makes its format invalid, MatchMate 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-01"},{"lineNumber":291,"author":{"gitId":"Ryan-Reno"},"content":"Furthermore, certain edits can cause the MatchMate 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-01"},{"lineNumber":292,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"Ryan-Reno"},"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 MatchMate home folder.","lastModifiedDate":"2024-03-01"},{"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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":306,"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":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":308,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":314,"author":{"gitId":"benson1029"},"content":"**Add coursemate** | `add NAME [-p PHONE_NUMBER] [-e EMAIL] [-s SKILL]…​` \u003cbr\u003e e.g., `add John Doe -p 87654321 -e johndoe@example.com -s Leadership -s C++`","lastModifiedDate":"2024-03-21"},{"lineNumber":315,"author":{"gitId":"benson1029"},"content":"**Add group member** | `add-member GROUP_NAME [-cm COURSEMATE]...` \u003cbr\u003e e.g., `add-member CS2103T G18 -cm Ivan -cm ##`","lastModifiedDate":"2024-03-21"},{"lineNumber":316,"author":{"gitId":"benson1029"},"content":"**Add skill** | ` add-skill COURSEMATE [-s SKILL]...` \u003cbr\u003e e.g., `add-skill John Doe -s C++ -s Leadership`","lastModifiedDate":"2024-03-21"},{"lineNumber":317,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"benson1029"},"content":"**Create group** | `create-group GROUP_NAME [-cm COURSEMATE]` \u003cbr\u003e e.g., `create-group CS2103T G18 -cm John -cm #2`","lastModifiedDate":"2024-03-21"},{"lineNumber":319,"author":{"gitId":"benson1029"},"content":"**Delete coursemate** | `delete COURSEMATE` \u003cbr\u003e e.g., `delete John`","lastModifiedDate":"2024-03-21"},{"lineNumber":320,"author":{"gitId":"benson1029"},"content":"**Delete group** | `delete-group GROUP_NAME` \u003cbr\u003e e.g., `delete-group CS2103T G18`","lastModifiedDate":"2024-03-21"},{"lineNumber":321,"author":{"gitId":"benson1029"},"content":"**Delete group member** | `delete-member GROUP_NAME [-cm COURSEMATE]` \u003cbr\u003e e.g., `delete-member CS2103T G18 -cm Ivan -cm #1`","lastModifiedDate":"2024-03-21"},{"lineNumber":322,"author":{"gitId":"benson1029"},"content":"**Delete skill** | `delete-skill COURSEMATE [-s SKILL]...` \u003cbr\u003e e.g., `delete-skill John Doe -s C++ -s Leadership `","lastModifiedDate":"2024-03-21"},{"lineNumber":323,"author":{"gitId":"benson1029"},"content":"**Edit coursemate** | `edit COURSEMATE [-n NEW_NAME] [-p NEW_PHONE_NUMBER] [-e NEW_EMAIL]…​`\u003cbr\u003e e.g.,`edit John -p 98765432 -e johndoe@gmail.com`","lastModifiedDate":"2024-03-21"},{"lineNumber":324,"author":{"gitId":"Ryan-Reno"},"content":"**Find** | `find KEYWORD`\u003cbr\u003e e.g., `find John`","lastModifiedDate":"2024-03-01"},{"lineNumber":325,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Ryan-Reno":128,"benson1029":53,"-":145}},{"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":"Ryan-Reno"},"content":"user -[USER_COLOR]\u003e ui : \"delete #1\"","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"delete #1\")","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":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":"Ryan-Reno"},"content":"ContactList *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"ContactList *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":"UniquePersonList -right-\u003e CourseMate","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"CourseMate -up-\u003e \"*\" Tag","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"CourseMate *--\u003e Name","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"CourseMate *--\u003e Phone","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"CourseMate *--\u003e Email","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Ryan-Reno":7,"-":13}},{"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":"Ryan-Reno"},"content":"if () then ([command commits ContactList])","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":" :Purge redundant states;","lastModifiedDate":"2020-12-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":" :Save contactList to","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":" contactListStateList;","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":3,"-":15}},{"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":"Ryan-Reno"},"content":"participant \":MatchMateParser\" as MatchMateParser 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":"Ryan-Reno"},"content":"[-\u003e LogicManager : execute(\"delete #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":"Ryan-Reno"},"content":"LogicManager -\u003e MatchMateParser : parseCommand(\"delete #1\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":"activate MatchMateParser","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":"Ryan-Reno"},"content":"MatchMateParser -\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":"Ryan-Reno"},"content":"DeleteCommandParser --\u003e MatchMateParser","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":"Ryan-Reno"},"content":"MatchMateParser -\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":"Ryan-Reno"},"content":"DeleteCommandParser --\u003e MatchMateParser : 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":"Ryan-Reno"},"content":"DeleteCommandParser -[hidden]-\u003e MatchMateParser","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":"Ryan-Reno"},"content":"MatchMateParser --\u003e LogicManager : d","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":"deactivate MatchMateParser","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":{"Ryan-Reno":11,"-":59}},{"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":"Ryan-Reno"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyContactList\" as ReadOnlyContactList","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyGroupList\" as ReadOnlyGroupList","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"Class ContactList","lastModifiedDate":"2024-03-20"},{"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":"ivan24004"},"content":"Class GroupList","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"Class UniqueCourseMateList","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"Class CourseMate","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":"Ryan-Reno"},"content":"Class Skill","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":"Class UniqueGroupList","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":"Class Group","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"Ryan-Reno"},"content":"ContactList .up.|\u003e ReadOnlyContactList","lastModifiedDate":"2024-03-20"},{"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":"ivan24004"},"content":"Model .right.\u003e ReadOnlyGroupList","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":"Model .left.\u003e ReadOnlyContactList","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":"ModelManager -left-\u003e \"1\" ContactList","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":"ModelManager -right-\u003e \"1\" GroupList","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":"GroupList .up.|\u003e ReadOnlyGroupList","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":"ContactList *--\u003e \"1\" UniqueCourseMateList","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":"UniqueCourseMateList --\u003e \"~* all\" CourseMate","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":"CourseMate *--\u003e Name","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":"CourseMate *--\u003e Phone","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":"CourseMate *--\u003e Email","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":"CourseMate *--\u003e \"*\" Skill","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":"GroupList *--\u003e \"1\" UniqueGroupList","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":"UniqueGroupList --\u003e \"* all\" Group","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":"Group --|\u003e UniqueCourseMateList","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":"Group *--\u003e Name","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":"CourseMate -[hidden]up--\u003e I","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"tzaph"},"content":"UniqueCourseMateList -[hidden]right-\u003e I","lastModifiedDate":"2024-03-21"},{"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":"Ryan-Reno"},"content":"ModelManager --\u003e \"~* filtered\" CourseMate","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Ryan-Reno":14,"tzaph":8,"-":35,"ivan24004":7}},{"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":"Ryan-Reno"},"content":"Class MatchMateParser","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":"HiddenOutside ..\u003e MatchMateParser","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":"MatchMateParser .down.\u003e XYZCommandParser: \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":"MatchMateParser ..\u003e Command : \u003c\u003cuse\u003e\u003e","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":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":"Ryan-Reno"},"content":"package \"ContactList Storage\" #F4F6F6{","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nContactListStorage\" as ContactListStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"Class JsonContactListStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"Class JsonSerializableContactList","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":"Class JsonAdaptedCourseMate","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"Class JsonAdaptedSkill","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":"ivan24004"},"content":"package \"GroupList Storage\" #F4F6F6{","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nGroupListStorage\" as GroupListStorage","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":"Class JsonGroupListStorage","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":"Class JsonSerializableGroupList","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":"Class JsonAdaptedGroup","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":"StorageManager .right.|\u003e Storage","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":"StorageManager --\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":"StorageManager --\u003e \"1\" ContactListStorage","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":"StorageManager --\u003e \"1\" GroupListStorage","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":"Storage ---|\u003e UserPrefsStorage","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":"Storage ---|\u003e ContactListStorage","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":"Storage ---|\u003e GroupListStorage","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":"JsonContactListStorage .up.|\u003e ContactListStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":"JsonGroupListStorage .up.|\u003e GroupListStorage","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":"JsonContactListStorage ..\u003e JsonSerializableContactList","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":"JsonSerializableContactList ---\u003e \"*\" JsonAdaptedCourseMate","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":"JsonAdaptedCourseMate --\u003e \"*\" JsonAdaptedSkill","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":"JsonGroupListStorage ..\u003e JsonSerializableGroupList","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":"JsonSerializableGroupList --\u003e \"*\" JsonAdaptedGroup","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":"JsonAdaptedGroup --\u003e \"*\" JsonAdaptedCourseMate","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Ryan-Reno":9,"-":31,"ivan24004":18}},{"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":"benson1029"},"content":"Class CourseMateListPanel","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"benson1029"},"content":"Class CourseMateCard","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"benson1029"},"content":"Class CourseMateDetailPanel","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":"Class GroupListPanel","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":"Class GroupListCard","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":"MainWindow *-down- \"1\" CourseMateListPanel","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":"MainWindow *-down-\u003e \"1\" CourseMateDetailPanel","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yuhinarita"},"content":"MainWindow *-down-\u003e \"1\" GroupListPanel","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"benson1029"},"content":"CourseMateListPanel -down-\u003e \"*\" CourseMateCard","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"yuhinarita"},"content":"GroupListPanel -down-\u003e \"*\" GroupListCard","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"benson1029"},"content":"CourseMateListPanel --|\u003e UiPart","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"benson1029"},"content":"CourseMateCard --|\u003e UiPart","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"benson1029"},"content":"CourseMateDetailPanel --|\u003e UiPart","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yuhinarita"},"content":"GroupListCard --|\u003e UiPart","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"yuhinarita"},"content":"GroupListPanel --|\u003e UiPart","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"benson1029"},"content":"CourseMateCard ...\u003e Model","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"benson1029"},"content":"CourseMateDetailPanel ..\u003e Model","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yuhinarita"},"content":"GroupListCard ...\u003e Model","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":66,"author":{"gitId":"benson1029"},"content":"CourseMateListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yuhinarita"},"content":"GroupListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"yuhinarita":8,"benson1029":12,"-":53}},{"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":"Ryan-Reno"},"content":" class State1 as \"\u003cu\u003ecl0:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" class State2 as \"\u003cu\u003ecl1:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":" class State3 as \"\u003cu\u003ecl2:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"hide State2","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"hide 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":"Pointer -up-\u003e State1","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Ryan-Reno":3,"-":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":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" class State1 as \"\u003cu\u003ecl0:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" class State2 as \"\u003cu\u003ecl1:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":" class State3 as \"\u003cu\u003ecl2:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":3,"-":20}},{"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":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" class State1 as \"\u003cu\u003ecl0:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" class State2 as \"\u003cu\u003ecl1:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":" class State3 as \"\u003cu\u003ecl2:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":3,"-":18}},{"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":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" class State1 as \"\u003cu\u003ecl0:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" class State2 as \"\u003cu\u003ecl1:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":" class State3 as \"\u003cu\u003ecl2:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":3,"-":18}},{"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":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" class State1 as \"\u003cu\u003ecl0:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" class State2 as \"\u003cu\u003ecl1:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":" class State3 as \"\u003cu\u003ecl2:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":3,"-":18}},{"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":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" class State1 as \"\u003cu\u003ecl0:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" class State2 as \"\u003cu\u003ecl1:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":" class State3 as \"\u003cu\u003ecl2:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"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":"note right on link: State ab2 deleted.","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Ryan-Reno":3,"-":19}},{"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":"Ryan-Reno"},"content":"participant \":MatchMateParser\" as MatchMateParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":"LogicManager -\u003e MatchMateParser : parseCommand(undo)","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"activate MatchMateParser","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"create UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":"MatchMateParser -\u003e UndoCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":"UndoCommand --\u003e MatchMateParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":"MatchMateParser --\u003e LogicManager : u","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":"deactivate MatchMateParser","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":"UndoCommand -\u003e Model : undoContactList()","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":8,"-":38}},{"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":"Ryan-Reno"},"content":"participant \":VersionedContactList\" as VersionedContactList MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"[-\u003e Model : undoContactList()","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2024-02-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"Model -\u003e VersionedContactList : undo()","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"activate VersionedContactList","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"VersionedContactList -\u003e VersionedContactList :resetData(ReadOnlyContactList)","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"VersionedContactList --\u003e Model :","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"deactivate VersionedContactList","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":7,"-":16}},{"path":"docs/diagrams/tracing/LogicSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-06-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include ../style.puml","lastModifiedDate":"2019-06-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"Participant \":LogicManager\" as logic LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":AddressBookParser\" as abp LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":EditCommandParser\" as ecp LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \"command:EditCommand\" as ec LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"[-\u003e logic : execute","lastModifiedDate":"2019-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate logic","lastModifiedDate":"2019-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"logic -\u003e abp ++: parseCommand(commandText)","lastModifiedDate":"2019-06-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"create ecp","lastModifiedDate":"2019-06-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"abp -\u003e ecp","lastModifiedDate":"2019-06-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"abp -\u003e ecp ++: parse(arguments)","lastModifiedDate":"2019-06-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"create ec","lastModifiedDate":"2019-06-17"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"ecp -\u003e ec ++: index, editCourseMateDescriptor","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"ec --\u003e ecp --","lastModifiedDate":"2019-06-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"ecp --\u003e abp --: command","lastModifiedDate":"2019-06-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"abp --\u003e logic --: command","lastModifiedDate":"2019-06-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-06-17"}],"authorContributionMap":{"Ryan-Reno":1,"-":21}},{"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":"benson1029"},"content":"# MatchMate","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":{"benson1029":1,"-":20}},{"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":"Ryan-Reno"},"content":" * Changes the remark of an existing courseMate in the address book.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" + \": Edits the remark of the courseMate identified \"","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" + \"by the index number used in the last courseMate listing. \"","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * @param index of the courseMate in the filtered courseMate list to edit the remark","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"Ryan-Reno"},"content":" * @param remark of the courseMate to be updated to","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"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 courseMate 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 courseMate’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 courseMate.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"Create a new `Remark` in `seedu.address.model.courseMate`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"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 courseMate.","lastModifiedDate":"2024-03-12"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"Ryan-Reno"},"content":"Simply add the following to [`seedu.address.ui.CourseMateCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-12"},{"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":"-"},"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 address book!","lastModifiedDate":"2023-09-12"},{"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":"Ryan-Reno"},"content":"public PersonCard(Person courseMate, int displayedIndex) {","lastModifiedDate":"2024-03-12"},{"lineNumber":316,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"Ryan-Reno"},"content":" remark.setText(courseMate.getRemark().value);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" Person courseMateToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":348,"author":{"gitId":"Ryan-Reno"},"content":" Person editedCourseMate \u003d new Person(","lastModifiedDate":"2024-03-12"},{"lineNumber":349,"author":{"gitId":"Ryan-Reno"},"content":" courseMateToEdit.getName(), courseMateToEdit.getPhone(), courseMateToEdit.getEmail(),","lastModifiedDate":"2024-03-12"},{"lineNumber":350,"author":{"gitId":"Ryan-Reno"},"content":" courseMateToEdit.getAddress(), remark, courseMateToEdit.getTags());","lastModifiedDate":"2024-03-12"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"Ryan-Reno"},"content":" model.setPerson(courseMateToEdit, editedCourseMate);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" return new CommandResult(generateSuccessMessage(editedCourseMate));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * {@code courseMateToEdit}.","lastModifiedDate":"2024-03-12"},{"lineNumber":362,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"Ryan-Reno"},"content":" private String generateSuccessMessage(Person courseMateToEdit) {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" return String.format(message, courseMateToEdit);","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":20,"-":382}},{"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":"Ryan-Reno"},"content":"The `address` field in `Person` is actually an instance of the `seedu.address.model.courseMate.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-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" \"courseMates\": [ {","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":2,"-":113}},{"path":"docs/tutorials/TracingCode.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Tracing code\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Tracing code","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c!-- {:toc} --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureDiagram.puml\" alt\u003d\"ArchitectureDiagram\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ComponentManagers.puml\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":80,"author":{"gitId":"-"},"content":"**Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2023-09-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"**Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":175,"author":{"gitId":"-"},"content":" **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2023-09-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditPersonDescriptor`. Recall that we can verify the contents of `editPersonDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/tracing/LogicSequenceDiagram.puml\" alt\u003d\"Tracing an `edit` command through the Logic component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":194,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"Ryan-Reno"},"content":" Person courseMateToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":199,"author":{"gitId":"Ryan-Reno"},"content":" Person editedCourseMate \u003d createEditedPerson(courseMateToEdit, editCourseMateDescriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":200,"author":{"gitId":"Ryan-Reno"},"content":" if (!courseMateToEdit.isSamePerson(editedCourseMate) \u0026\u0026 model.hasPerson(editedCourseMate)) {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" model.setPerson(courseMateToEdit, editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"Ryan-Reno"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedCourseMate));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * it uses the `setPerson()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the courseMate data.","lastModifiedDate":"2024-03-12"},{"lineNumber":211,"author":{"gitId":"Ryan-Reno"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ courseMates.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":212,"author":{"gitId":"Ryan-Reno"},"content":" FYI, The \u0027filtered list\u0027 is the list of courseMates 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 courseMates so that the user can see the edited courseMate along with all other courseMates. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":213,"author":{"gitId":"Ryan-Reno"},"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 courseMates is being tracked.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" courseMates.addAll(","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":10,"-":301}},{"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":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ReadOnlyGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.storage.ContactListStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":"import seedu.address.storage.GroupListStorage;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.storage.JsonContactListStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":"import seedu.address.storage.JsonGroupListStorage;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"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 ContactList ]\u003d\u003d\u003d\u003d\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-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" ContactListStorage contactListStorage \u003d new JsonContactListStorage(userPrefs.getContactListFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" GroupListStorage groupListStorage \u003d new JsonGroupListStorage(userPrefs.getGroupListFilePath());","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" storage \u003d new StorageManager(contactListStorage, userPrefsStorage, groupListStorage);","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s contact list and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":" * The data from the sample contact list will be used instead if {@code storage}\u0027s contact list is not found,","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" * or an empty contact list will be used instead if errors occur when reading {@code storage}\u0027s contact list.","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" logger.info(\"Using data file : \" + storage.getContactListFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" Optional\u003cReadOnlyContactList\u003e contactListOptional;","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":" ReadOnlyContactList initialContactList;","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" contactListOptional \u003d storage.readContactList();","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":" if (!contactListOptional.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":" logger.info(\"Creating a new data file \" + storage.getContactListFilePath()","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" + \" populated with a sample ContactList.\");","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":" initialContactList \u003d contactListOptional.orElseGet(SampleDataUtil::getSampleContactList);","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":" logger.warning(\"Data file at \" + storage.getContactListFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":" + \" Will be starting with an empty ContactList.\");","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"ivan24004"},"content":" initialContactList \u003d new ContactList();","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":" Optional\u003cReadOnlyGroupList\u003e groupListOptional;","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":" ReadOnlyGroupList initialGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ivan24004"},"content":" groupListOptional \u003d storage.readGroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ivan24004"},"content":" if (!groupListOptional.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":" logger.info(\"Creating a new data file \" + storage.getGroupListFilePath()","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ivan24004"},"content":" + \" starting with an empty GroupList.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"ivan24004"},"content":" initialGroupList \u003d groupListOptional.orElseGet(GroupList::new);","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"ivan24004"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"ivan24004"},"content":" logger.warning(\"Data file at \" + storage.getGroupListFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"ivan24004"},"content":" + \" Will be starting with an empty GroupList.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"ivan24004"},"content":" initialGroupList \u003d new GroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"ivan24004"},"content":" return new ModelManager(initialContactList, userPrefs, initialGroupList);","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":141,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":164,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":165,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":171,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":172,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":174,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":184,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"Ryan-Reno"},"content":" logger.info(\"Starting ContactList \" + MainApp.VERSION);","lastModifiedDate":"2024-03-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"ivan24004"},"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 MatchMate ] \u003d\u003d\u003d\u003d\u003d\u003d\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-20"},{"lineNumber":200,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":201,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":202,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":203,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Ryan-Reno":12,"-":162,"ivan24004":32}},{"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":"benson1029"},"content":" private static final double DEFAULT_WIDTH \u003d 1200;","lastModifiedDate":"2024-03-15"},{"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":{"benson1029":1,"-":81}},{"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":"Ryan-Reno"},"content":" private static final String LOG_FILE \u003d \"contactlist.log\";","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":1,"-":105}},{"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":"benson1029"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.io.StringWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Helper functions for handling strings.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class StringUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2016-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Ignores case, but a full word match is required.","lastModifiedDate":"2016-10-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-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":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-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":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2016-10-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2016-10-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2018-01-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"benson1029"},"content":" * Returns true if the {@code sentence} contains the {@code substring}.","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"benson1029"},"content":" * Ignores case, and the substring need not be a full word.","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"benson1029"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"benson1029"},"content":" * containsIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"benson1029"},"content":" * containsIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"benson1029"},"content":" * containsIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d true","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"benson1029"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"benson1029"},"content":" * @param sentence cannot be null","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"benson1029"},"content":" * @param substring cannot be null, cannot be empty","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"benson1029"},"content":" public static boolean containsIgnoreCase(String sentence, String substring) {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"benson1029"},"content":" requireAllNonNull(sentence, substring);","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"benson1029"},"content":" String preppedSentence \u003d sentence.toLowerCase();","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"benson1029"},"content":" String preppedSubstring \u003d substring.toLowerCase();","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"benson1029"},"content":" return preppedSentence.contains(preppedSubstring);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":76,"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":77,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":83,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":85,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"benson1029":21,"-":68}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-16"},{"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":"Ryan-Reno"},"content":" * Returns the ContactList.","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" * @see seedu.address.model.Model#getContactList()","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" ReadOnlyContactList getContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" /** Returns an unmodifiable view of the filtered list of course mates */","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" ObservableList\u003cCourseMate\u003e getFilteredCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":37,"author":{"gitId":"yuhinarita"},"content":" /** Returns an unmodifiable view of the filtered list of groups */","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"yuhinarita"},"content":" ObservableList\u003cGroup\u003e getFilteredGroupList();","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"benson1029"},"content":" /** Returns the most recently processed course mate */","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"benson1029"},"content":" CourseMate getRecentlyProcessedCourseMate();","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"benson1029"},"content":" /** Sets the most recently processed course mate */","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"benson1029"},"content":" void setRecentlyProcessedCourseMate(CourseMate courseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" * Returns the user prefs\u0027 contact list file path.","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" Path getContactListFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","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":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"yuhinarita":4,"Ryan-Reno":9,"benson1029":5,"-":42}},{"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":"ivan24004"},"content":"import seedu.address.logic.parser.MatchMateParser;","lastModifiedDate":"2024-03-13"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-16"},{"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":"ivan24004"},"content":" private final MatchMateParser matchMateParser;","lastModifiedDate":"2024-03-13"},{"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":"ivan24004"},"content":" matchMateParser \u003d new MatchMateParser();","lastModifiedDate":"2024-03-13"},{"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":"ivan24004"},"content":" Command command \u003d matchMateParser.parseCommand(commandText);","lastModifiedDate":"2024-03-13"},{"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":"Ryan-Reno"},"content":" storage.saveContactList(model.getContactList());","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" storage.saveGroupList(model.getGroupList());","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":" public ReadOnlyContactList getContactList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" return model.getContactList();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public ObservableList\u003cCourseMate\u003e getFilteredCourseMateList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" return model.getFilteredCourseMateList();","lastModifiedDate":"2024-03-12"},{"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":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"yuhinarita"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"yuhinarita"},"content":" return model.getFilteredGroupList();","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"benson1029"},"content":" public CourseMate getRecentlyProcessedCourseMate() {","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"benson1029"},"content":" return model.getRecentlyProcessedCourseMate();","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"benson1029"},"content":" public void setRecentlyProcessedCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"benson1029"},"content":" model.setRecentlyProcessedCourseMate(courseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" public Path getContactListFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":" return model.getContactListFilePath();","lastModifiedDate":"2024-03-12"},{"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 GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","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 void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"yuhinarita":5,"Ryan-Reno":9,"benson1029":10,"-":76,"ivan24004":5}},{"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":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" public static final String MESSAGE_INVALID_COURSE_MATE_NAME \u003d \"The courseMate name provided is not found!\";","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" public static final String MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX \u003d \"The courseMate index provided is invalid\";","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":" public static final String MESSAGE_COURSE_MATES_LISTED_OVERVIEW \u003d \"%1$d course mate(s) listed!\";","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":" public static final String MESSAGE_GROUPS_LISTED_OVERVIEW \u003d \"%1$d group(s) listed!\";","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_INVALID_GROUP_NAME \u003d \"The group name provided is not found!\";","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_MEMBERS_DONT_EXIST \u003d \"Some of the specified members could not be found.\";","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":"Ryan-Reno"},"content":" public static final String MESSAGE_SIMILAR_COURSE_MATE_NAME \u003d \"There are %1$d course mates with similar names\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" + \"Retry the command by specifying the index of the contact in the list, example: “#1”.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"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-08-24"}],"authorContributionMap":{"yuhinarita":2,"Ryan-Reno":4,"-":30,"ivan24004":2}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":" * Adds a courseMate to the contact list.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a courseMate to the contact list. \"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":" + \"Parameters: NAME\"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":" + PREFIX_PHONE + \" PHONE_NUMBER \"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \" EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" + \"[\" + PREFIX_SKILL + \" SKILL]...\\n\"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \" John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \" 98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \" johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":" + PREFIX_SKILL + \" Python \"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":" + PREFIX_SKILL + \" Java\";","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"benson1029"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New courseMate added\";","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" public static final String MESSAGE_DUPLICATE_COURSE_MATE \u003d \"This courseMate already exists in the contact list\";","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" private final CourseMate toAdd;","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" * Creates an AddCommand to add the specified {@code CourseMate}","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" public AddCommand(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" toAdd \u003d courseMate;","lastModifiedDate":"2024-03-12"},{"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-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" if (model.hasCourseMate(toAdd)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" throw new CommandException(MESSAGE_DUPLICATE_COURSE_MATE);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" model.addCourseMate(toAdd);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"benson1029"},"content":" model.setRecentlyProcessedCourseMate(toAdd);","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"benson1029"},"content":" return new CommandResult(MESSAGE_SUCCESS, false, false, true);","lastModifiedDate":"2024-03-16"},{"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":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"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 AddCommand)) {","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":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"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":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"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":{"Ryan-Reno":14,"benson1029":3,"tzaph":4,"-":59}},{"path":"src/main/java/seedu/address/logic/commands/AddMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSEMATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_GROUPS;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.exceptions.DuplicateCourseMateException;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.exceptions.GroupNotFoundException;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" * Adds member(s) to a preexisting group.","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":"public class AddMemberCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" public static final String COMMAND_WORD \u003d \"add-member\";","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" + \": Adds CourseMates as members to an existing group.\"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" + \"CourseMates can be specified either by name or by the \u0027#\u0027 notation.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" + \"Parameters: NAME (group must exist) \"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" + PREFIX_COURSEMATE + \" COURSEMATE\"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" + \"[\" + PREFIX_COURSEMATE + \" COURSEMATE\" + \"]\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" + \"Example: \" + COMMAND_WORD + \" CS2103T GROUP \"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" + PREFIX_COURSEMATE + \" #1 \"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" + PREFIX_COURSEMATE + \" John Doe.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_MEMBERS_ALREADY_IN_GROUP \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" \"Some of the specified members are already in the group.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_SUCCESFULLY_ADDED \u003d \"Group successfully modified, Name: %s\";","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" private final Name groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" private final Set\u003cQueryableCourseMate\u003e queryableCourseMateSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" * Basic constructor for {@code AddMemberCommand}.","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" * @param queryableCourseMateSet set containing the queryableCourseMate to be added","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" public AddMemberCommand(Name groupName, Set\u003cQueryableCourseMate\u003e queryableCourseMateSet) {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" requireAllNonNull(groupName, queryableCourseMateSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" this.queryableCourseMateSet \u003d queryableCourseMateSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" Set\u003cCourseMate\u003e courseMateList;","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" courseMateList \u003d queryableCourseMateSet","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" .stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" .map(model::findCourseMate)","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" .map(x -\u003e x.get(0))","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" } catch (CourseMateNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" throw new CommandException(Messages.MESSAGE_MEMBERS_DONT_EXIST, e);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" Group toModify;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" toModify \u003d model.findGroup(groupName);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" } catch (GroupNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_GROUP_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"yuhinarita"},"content":" Group modifiedGroup \u003d new Group(toModify.getName(), toModify.asUnmodifiableObservableList());","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" for (CourseMate courseMate: courseMateList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"yuhinarita"},"content":" modifiedGroup.add(courseMate);","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":" } catch (DuplicateCourseMateException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" throw new CommandException(MESSAGE_MEMBERS_ALREADY_IN_GROUP);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"yuhinarita"},"content":" model.setGroup(toModify, modifiedGroup);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"yuhinarita"},"content":" model.updateFilteredGroupList(PREDICATE_SHOW_ALL_GROUPS);","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESFULLY_ADDED, groupName),","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" false, false, true);","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ivan24004"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"ivan24004"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"ivan24004"},"content":" if (!(other instanceof AddMemberCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ivan24004"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" AddMemberCommand otherAddMemberCommand \u003d (AddMemberCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":" return otherAddMemberCommand.groupName.equals(groupName)","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ivan24004"},"content":" \u0026\u0026 otherAddMemberCommand.queryableCourseMateSet.equals(queryableCourseMateSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"yuhinarita":5,"Ryan-Reno":1,"ivan24004":97}},{"path":"src/main/java/seedu/address/logic/commands/AddSkillCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_COURSE_MATES;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":" * Adds a courseMate to the contact list.","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"tzaph"},"content":"public class AddSkillCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":" public static final String COMMAND_WORD \u003d \"add-skill\";","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds skills to a coursemate. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":" + \"NAME can be specified either by full name or by the \u0027#\u0027 notation.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":" + \"Parameters: NAME \"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":" + PREFIX_SKILL + \" SKILL \"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" + \"[\" + PREFIX_SKILL + \" SKILL]...\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":" + \"Example: \" + COMMAND_WORD + \" #1 \"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" + PREFIX_SKILL + \" Python \"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":" + PREFIX_SKILL + \" Java\";","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New skills added\";","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one skill should be provided.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" public static final String MESSAGE_DUPLICATE_COURSE_MATE \u003d \"This courseMate already exists in the contact list\";","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" private final QueryableCourseMate queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" private final AddSkillDescriptor addSkillDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" * @param queryableCourseMate courseMate that we want to edit","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":" * @param addSkillDescriptor list of skills to edit the courseMate with","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" public AddSkillCommand(QueryableCourseMate queryableCourseMate, AddSkillDescriptor addSkillDescriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":" requireNonNull(queryableCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" requireNonNull(addSkillDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":" this.queryableCourseMate \u003d queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" this.addSkillDescriptor \u003d new AddSkillDescriptor(addSkillDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"tzaph"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"tzaph"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":" List\u003cCourseMate\u003e lastShownList \u003d model.getFilteredCourseMateList();","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":" if (queryableCourseMate.isIndex()","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" \u0026\u0026 queryableCourseMate.getIndex().getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e courseMateToEditList;","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"Ryan-Reno"},"content":" courseMateToEditList \u003d model.findCourseMate(queryableCourseMate);","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":" } catch (CourseMateNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":" //If there are more than 1 matching names","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":" if (courseMateToEditList.size() \u003e 1) {","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":" queryableCourseMate.getName().toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":" model.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" String.format(Messages.MESSAGE_SIMILAR_COURSE_MATE_NAME,","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" model.getFilteredCourseMateList().size()), false, false, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMateToEdit \u003d courseMateToEditList.get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"tzaph"},"content":" CourseMate editedCourseMate \u003d addSkillToCourseMate(courseMateToEdit, addSkillDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"tzaph"},"content":" if (!courseMateToEdit.isSameCourseMate(editedCourseMate) \u0026\u0026 model.hasCourseMate(editedCourseMate)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"tzaph"},"content":" throw new CommandException(MESSAGE_DUPLICATE_COURSE_MATE);","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"tzaph"},"content":" model.setCourseMate(courseMateToEdit, editedCourseMate);","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"tzaph"},"content":" model.updateFilteredCourseMateList(PREDICATE_SHOW_ALL_COURSE_MATES);","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"tzaph"},"content":" model.setRecentlyProcessedCourseMate(editedCourseMate);","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"tzaph"},"content":" return new CommandResult(MESSAGE_SUCCESS, false, false, true);","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"tzaph"},"content":" * Creates and returns a {@code CourseMate} with the details of {@code courseMateToEdit}","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"tzaph"},"content":" * edited with {@code addSkillDescriptor}.","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"tzaph"},"content":" private static CourseMate addSkillToCourseMate(CourseMate courseMateToEdit,","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor addSkillDescriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"tzaph"},"content":" requireNonNull(courseMateToEdit);","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"tzaph"},"content":" addSkillDescriptor.mergeSkills(courseMateToEdit.getSkills());","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e updatedSkills \u003d addSkillDescriptor.getSkills().orElse(courseMateToEdit.getSkills());","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"tzaph"},"content":" return new CourseMate(courseMateToEdit.getName(), courseMateToEdit.getPhone(),","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"tzaph"},"content":" courseMateToEdit.getEmail(), updatedSkills);","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"tzaph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"tzaph"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"tzaph"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"tzaph"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"tzaph"},"content":" if (!(other instanceof AddSkillCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"tzaph"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"tzaph"},"content":" AddSkillCommand otherAddSkillCommand \u003d (AddSkillCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"tzaph"},"content":" return queryableCourseMate.getIndex().equals(otherAddSkillCommand.queryableCourseMate.getIndex())","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"tzaph"},"content":" \u0026\u0026 addSkillDescriptor.equals(otherAddSkillCommand.addSkillDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"tzaph"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"tzaph"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"tzaph"},"content":" .add(\"index\", queryableCourseMate.getIndex())","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"tzaph"},"content":" .add(\"addSkillDescriptor\", addSkillDescriptor)","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"tzaph"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"tzaph"},"content":" * Stores the list of skills to add to the courseMate.","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"tzaph"},"content":" public static class AddSkillDescriptor {","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"tzaph"},"content":" private Set\u003cSkill\u003e skills;","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"tzaph"},"content":" public AddSkillDescriptor() {}","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"tzaph"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"tzaph"},"content":" * A defensive copy of {@code skills} is used internally.","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"tzaph"},"content":" public AddSkillDescriptor(AddSkillDescriptor toCopy) {","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"tzaph"},"content":" setSkills(toCopy.skills);","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"tzaph"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"tzaph"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"tzaph"},"content":" return CollectionUtil.isAnyNonNull(skills);","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"tzaph"},"content":" * Adds {@code skills} to this object\u0027s {@code skills}.","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"tzaph"},"content":" * A defensive copy of {@code skills} is used internally.","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"tzaph"},"content":" public void setSkills(Set\u003cSkill\u003e skills) {","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"tzaph"},"content":" this.skills \u003d (skills !\u003d null) ? new HashSet\u003c\u003e(skills) : null;","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"tzaph"},"content":" * Returns an unmodifiable skill set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"tzaph"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"tzaph"},"content":" * Returns {@code Optional#empty()} if {@code skills} is null.","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"tzaph"},"content":" public Optional\u003cSet\u003cSkill\u003e\u003e getSkills() {","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"tzaph"},"content":" return (skills !\u003d null) ? Optional.of(Collections.unmodifiableSet(skills)) : Optional.empty();","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"tzaph"},"content":" * Merges the set of skills in the object with the set of skills in the argument","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"tzaph"},"content":" public void mergeSkills(Set\u003cSkill\u003e argSkills) {","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"tzaph"},"content":" for (Skill skill : argSkills) {","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"tzaph"},"content":" this.skills.add(skill);","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"tzaph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"tzaph"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"tzaph"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"tzaph"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"tzaph"},"content":" if (!(other instanceof AddSkillDescriptor)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"tzaph"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor otherAddSkillDescriptor \u003d (AddSkillDescriptor) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"tzaph"},"content":" return Objects.equals(skills, otherAddSkillDescriptor.skills);","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"tzaph"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"tzaph"},"content":" return new ToStringBuilder(this).add(\"skills\", skills).toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"Ryan-Reno":15,"tzaph":193}},{"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":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Clears the contact list.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Contact list has been cleared!\";","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" model.setContactList(new ContactList());","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":4,"-":19}},{"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":"benson1029"},"content":" /** An edited CourseMate card should be shown to the user. */","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"benson1029"},"content":" private final boolean showCourseMate;","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"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":"benson1029"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit, boolean showCourseMate) {","lastModifiedDate":"2024-03-15"},{"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":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"benson1029"},"content":" this.showCourseMate \u003d showCourseMate;","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"benson1029"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"benson1029"},"content":" * {@code showHelp} and {@code exit} fields. The other fields are set to their default value.","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"benson1029"},"content":" this(feedbackToUser, showHelp, exit, false);","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"benson1029"},"content":" this(feedbackToUser, false, false, false);","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":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return showHelp;","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":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"benson1029"},"content":" public boolean isShowCourseMate() {","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"benson1029"},"content":" return showCourseMate;","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"benson1029"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"benson1029"},"content":" \u0026\u0026 showCourseMate \u003d\u003d otherCommandResult.showCourseMate;","lastModifiedDate":"2024-03-15"},{"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":"benson1029"},"content":" .add(\"showCourseMate\", showCourseMate)","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"benson1029":21,"-":79}},{"path":"src/main/java/seedu/address/logic/commands/CreateGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSEMATE;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" * Creates a group containing multiple unique CourseMates.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" * See {@code UniqueCourseMateList} for a the details of uniqueness.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"public class CreateGroupCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" public static final String COMMAND_WORD \u003d \"create-group\";","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Creates a group containing any number of CourseMates, \"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" + \"CourseMates can be specified either by name or by the \u0027#\u0027 notation.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" + \"Parameters: NAME (cannot be empty, must be unique, and must be only alphanumeric) \"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" + \"[\" + PREFIX_COURSEMATE + \" COURSEMATE\" + \"]\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" + \"Example: \" + COMMAND_WORD + \" CS2103T GROUP \"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" + PREFIX_COURSEMATE + \" #1 \"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" + PREFIX_COURSEMATE + \" John Doe.\";","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_DUPLICATE_GROUP \u003d \"This group already exists in the group list.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_GROUP_CREATED \u003d \"A group with name: %s was created.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_MEMBERS_DONT_EXIST \u003d \"Some of the included members could not be found.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" private final Name groupName;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" private final Set\u003cQueryableCourseMate\u003e queryableCourseMateSet;","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" * Basic constructor for {@code CreateGroupCommand}.","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" * Creates the details for a group to be created.","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" * @param groupName name of the group","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" * @param queryableCourseMateSet set containing the queryableCourseMate in the group","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" public CreateGroupCommand(Name groupName, Set\u003cQueryableCourseMate\u003e queryableCourseMateSet) {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" requireAllNonNull(groupName, queryableCourseMateSet);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" this.queryableCourseMateSet \u003d queryableCourseMateSet;","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" Set\u003cCourseMate\u003e courseMateList;","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" courseMateList \u003d queryableCourseMateSet","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" .stream()","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" .map(model::findCourseMate)","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" .map(x -\u003e x.get(0))","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" } catch (CourseMateNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" throw new CommandException(MESSAGE_MEMBERS_DONT_EXIST);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" Group toAdd \u003d new Group(groupName, courseMateList);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" if (model.hasGroup(toAdd)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" throw new CommandException(MESSAGE_DUPLICATE_GROUP);","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" model.addGroup(toAdd);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ivan24004"},"content":" return new CommandResult(String.format(MESSAGE_GROUP_CREATED, groupName));","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" if (!(other instanceof CreateGroupCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":" CreateGroupCommand otherCreateGroupCommand \u003d (CreateGroupCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":" return otherCreateGroupCommand.groupName.equals(groupName)","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":" \u0026\u0026 otherCreateGroupCommand.queryableCourseMateSet.equals(queryableCourseMateSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Ryan-Reno":1,"ivan24004":90}},{"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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" * Deletes a courseMate identified using it\u0027s displayed index from the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" + \": Deletes the courseMate identified by the index number used in the displayed courseMate list.\\n\"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":" + \"NAME can be specified either by full name or by the \u0027#\u0027 notation.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":" + \"Parameters: NAME\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":" + \"Example: \" + COMMAND_WORD + \" #1\";","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"benson1029"},"content":" public static final String MESSAGE_DELETE_COURSE_MATE_SUCCESS \u003d \"Deleted CourseMate\";","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" private final QueryableCourseMate queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" public DeleteCommand(QueryableCourseMate queryableCourseMate) {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" this.queryableCourseMate \u003d queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"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 CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e lastShownList \u003d model.getFilteredCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" if (queryableCourseMate.isIndex() \u0026\u0026 queryableCourseMate.getIndex().getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e courseMateToDeleteList;","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" courseMateToDeleteList \u003d model.findCourseMate(queryableCourseMate);","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" } catch (CourseMateNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" //If there are more than 1 matching names","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" if (courseMateToDeleteList.size() \u003e 1) {","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" queryableCourseMate.getName().toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" model.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" String.format(Messages.MESSAGE_SIMILAR_COURSE_MATE_NAME,","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" model.getFilteredCourseMateList().size()), false , false, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMateToDelete \u003d courseMateToDeleteList.get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" model.deleteCourseMate(courseMateToDelete);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" model.setRecentlyProcessedCourseMate(courseMateToDelete);","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" return new CommandResult(MESSAGE_DELETE_COURSE_MATE_SUCCESS, false, false, true);","lastModifiedDate":"2024-03-21"},{"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":"Ryan-Reno"},"content":" return queryableCourseMate.getIndex().equals(otherDeleteCommand.queryableCourseMate.getIndex());","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"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":"Ryan-Reno"},"content":" .add(\"queryableCourseMateIndex\", queryableCourseMate.getIndex())","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":35,"benson1029":1,"tzaph":3,"-":51}},{"path":"src/main/java/seedu/address/logic/commands/DeleteGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.exceptions.GroupNotFoundException;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":" * Deletes a preexisting group.","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"public class DeleteGroupCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" public static final String COMMAND_WORD \u003d \"delete-group\";","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Deletes a preexisting group. \"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" + \"groups can be specified by name.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" + \"Parameters: NAME (cannot be empty and must already exist)\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" + \"Example: \" + COMMAND_WORD + \" CS2103T GROUP \";","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" private final Name toDelete;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" * Basic constructor for {@code DeleteGroupCommand}. Deletes a specified group.","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" * @param toDelete group to be deleted","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" public DeleteGroupCommand(Name toDelete) {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" requireNonNull(toDelete);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" this.toDelete \u003d toDelete;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" Group groupToDelete \u003d model.findGroup(toDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" model.deleteGroup(groupToDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" return new CommandResult(String.format(\"Deleted group %s\",","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" toDelete));","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" } catch (GroupNotFoundException exception) {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_GROUP_NAME, exception);","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" if (!(other instanceof DeleteGroupCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" DeleteGroupCommand otherDelete \u003d (DeleteGroupCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" return otherDelete.toDelete.equals(toDelete);","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"ivan24004":62}},{"path":"src/main/java/seedu/address/logic/commands/DeleteMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSEMATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_GROUPS;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.exceptions.GroupNotFoundException;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" * Deletes member(s) from a preexisting group.","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"public class DeleteMemberCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" public static final String COMMAND_WORD \u003d \"delete-member\";","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" + \": Deletes CourseMates from an existing group.\"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" + \"CourseMates can be specified either by name or by the \u0027#\u0027 notation.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" + \"Parameters: NAME (group must exist) \"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" + PREFIX_COURSEMATE + \" COURSEMATE\"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" + \"[\" + PREFIX_COURSEMATE + \" COURSEMATE\" + \"]\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" + \"Example: \" + COMMAND_WORD + \" CS2103T GROUP \"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" + PREFIX_COURSEMATE + \" #1 \"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" + PREFIX_COURSEMATE + \" John Doe.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_MEMBERS_NOT_IN_GROUP \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" \"Some of the specified members are not in the group.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_SUCCESFULLY_REMOVED \u003d \"Group successfully modified, Name: %s\";","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" private final Name groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" private final Set\u003cQueryableCourseMate\u003e queryableCourseMateSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" * Basic constructor for {@code DeleteMemberCommand}.","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" * @param queryableCourseMateSet set containing the queryableCourseMate to be deleted","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" public DeleteMemberCommand(Name groupName, Set\u003cQueryableCourseMate\u003e queryableCourseMateSet) {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" requireAllNonNull(groupName, queryableCourseMateSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" this.queryableCourseMateSet \u003d queryableCourseMateSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" Set\u003cCourseMate\u003e courseMateList;","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" courseMateList \u003d queryableCourseMateSet","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" .stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" .map(model::findCourseMate)","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" .map(x -\u003e x.get(0))","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" } catch (CourseMateNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" throw new CommandException(Messages.MESSAGE_MEMBERS_DONT_EXIST, e);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" Group toModify;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" toModify \u003d model.findGroup(groupName);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" } catch (GroupNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_GROUP_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"yuhinarita"},"content":" Group modifiedGroup \u003d new Group(toModify.getName(), toModify.asUnmodifiableObservableList());","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" for (CourseMate courseMate: courseMateList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"yuhinarita"},"content":" modifiedGroup.remove(courseMate);","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":" } catch (CourseMateNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" throw new CommandException(MESSAGE_MEMBERS_NOT_IN_GROUP, e);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"yuhinarita"},"content":" model.setGroup(toModify, modifiedGroup);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"yuhinarita"},"content":" model.updateFilteredGroupList(PREDICATE_SHOW_ALL_GROUPS);","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" String.format(MESSAGE_SUCCESFULLY_REMOVED, groupName), false, false, true);","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ivan24004"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"ivan24004"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"ivan24004"},"content":" if (!(other instanceof DeleteMemberCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ivan24004"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" DeleteMemberCommand otherDeleteMemberCommand \u003d (DeleteMemberCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":" return otherDeleteMemberCommand.groupName.equals(groupName)","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ivan24004"},"content":" \u0026\u0026 otherDeleteMemberCommand.queryableCourseMateSet.equals(queryableCourseMateSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"yuhinarita":5,"Ryan-Reno":1,"ivan24004":97}},{"path":"src/main/java/seedu/address/logic/commands/DeleteSkillCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_COURSE_MATES;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":" * Adds a courseMate to the contact list.","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"tzaph"},"content":"public class DeleteSkillCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":" public static final String COMMAND_WORD \u003d \"delete-skill\";","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Deletes skills of a coursemate. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":" + \"NAME can be specified either by full name or by the \u0027#\u0027 notation.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":" + \"Parameters: NAME \"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":" + PREFIX_SKILL + \" SKILL \"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" + \"[\" + PREFIX_SKILL + \" SKILL]...\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":" + \"Example: \" + COMMAND_WORD + \" #1 \"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" + PREFIX_SKILL + \" Python \"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":" + PREFIX_SKILL + \" Java\";","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Skills are successfully deleted\";","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one skill should be provided.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" public static final String MESSAGE_DUPLICATE_COURSE_MATE \u003d \"This courseMate already exists in the contact list\";","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":" public static final String MESSAGE_SKILL_NOT_PRESENT \u003d \"This courseMate does not have one of the skills provided.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" private final QueryableCourseMate queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" private final DeleteSkillDescriptor deleteSkillDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":" * @param index of the courseMate in the filtered courseMate list to edit","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" * @param deleteSkillDescriptor list of skills to edit the courseMate with","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":" public DeleteSkillCommand(QueryableCourseMate queryableCourseMate, DeleteSkillDescriptor deleteSkillDescriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" requireNonNull(queryableCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":" requireNonNull(deleteSkillDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" this.queryableCourseMate \u003d queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"tzaph"},"content":" this.deleteSkillDescriptor \u003d new DeleteSkillDescriptor(deleteSkillDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"tzaph"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" List\u003cCourseMate\u003e lastShownList \u003d model.getFilteredCourseMateList();","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" if (queryableCourseMate.isIndex()","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" \u0026\u0026 queryableCourseMate.getIndex().getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e courseMateToEditList;","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" courseMateToEditList \u003d model.findCourseMate(queryableCourseMate);","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":" } catch (CourseMateNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":" //If there are more than 1 matching names","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" if (courseMateToEditList.size() \u003e 1) {","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":" queryableCourseMate.getName().toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" model.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" String.format(Messages.MESSAGE_SIMILAR_COURSE_MATE_NAME,","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" model.getFilteredCourseMateList().size()), false, false, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMateToEdit \u003d courseMateToEditList.get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"tzaph"},"content":" if (!validSkillsToDelete(courseMateToEdit, deleteSkillDescriptor)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"tzaph"},"content":" throw new CommandException(MESSAGE_SKILL_NOT_PRESENT);","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"tzaph"},"content":" assert(validSkillsToDelete(courseMateToEdit, deleteSkillDescriptor));","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"tzaph"},"content":" CourseMate editedCourseMate \u003d deleteCourseMateSkills(courseMateToEdit, deleteSkillDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"tzaph"},"content":" if (!courseMateToEdit.isSameCourseMate(editedCourseMate) \u0026\u0026 model.hasCourseMate(editedCourseMate)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"tzaph"},"content":" throw new CommandException(MESSAGE_DUPLICATE_COURSE_MATE);","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"tzaph"},"content":" model.setCourseMate(courseMateToEdit, editedCourseMate);","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"tzaph"},"content":" model.updateFilteredCourseMateList(PREDICATE_SHOW_ALL_COURSE_MATES);","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"tzaph"},"content":" model.setRecentlyProcessedCourseMate(editedCourseMate);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"tzaph"},"content":" return new CommandResult(MESSAGE_SUCCESS, false, false, true);","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"tzaph"},"content":" * Checks if the {@code CourseMate} to be edited has all the skills listed in {@code deleteSkillDescriptor}.","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"tzaph"},"content":" private static boolean validSkillsToDelete(CourseMate courseMateToEdit,","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor deleteSkillDescriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e courseMateSkills \u003d courseMateToEdit.getSkills();","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e commandSkills \u003d deleteSkillDescriptor.getSkills().orElse(Collections.emptySet());","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"tzaph"},"content":" for (Skill skill : commandSkills) {","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"tzaph"},"content":" if (!courseMateSkills.contains(skill)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"tzaph"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"tzaph"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"tzaph"},"content":" * Creates and returns a {@code CourseMate} with the details of {@code courseMateToEdit}","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"tzaph"},"content":" * edited with {@code deleteSkillDescriptor}.","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"tzaph"},"content":" private static CourseMate deleteCourseMateSkills(CourseMate courseMateToEdit,","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor deleteSkillDescriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"tzaph"},"content":" requireNonNull(courseMateToEdit);","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"tzaph"},"content":" deleteSkillDescriptor.deleteSkills(courseMateToEdit.getSkills());","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e updatedSkills \u003d deleteSkillDescriptor.getSkills().orElse(courseMateToEdit.getSkills());","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"tzaph"},"content":" return new CourseMate(courseMateToEdit.getName(), courseMateToEdit.getPhone(),","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"tzaph"},"content":" courseMateToEdit.getEmail(), updatedSkills);","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"tzaph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"tzaph"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"tzaph"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"tzaph"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"tzaph"},"content":" if (!(other instanceof DeleteSkillCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"tzaph"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand otherDeleteSkillCommand \u003d (DeleteSkillCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"tzaph"},"content":" return queryableCourseMate.getIndex().equals(otherDeleteSkillCommand.queryableCourseMate.getIndex())","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"tzaph"},"content":" \u0026\u0026 deleteSkillDescriptor.equals(otherDeleteSkillCommand.deleteSkillDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"tzaph"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"tzaph"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"tzaph"},"content":" .add(\"index\", queryableCourseMate.getIndex())","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"tzaph"},"content":" .add(\"deleteSkillDescriptor\", deleteSkillDescriptor)","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"tzaph"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"tzaph"},"content":" * Stores the list of skills to delete from the courseMate.","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"tzaph"},"content":" public static class DeleteSkillDescriptor {","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"tzaph"},"content":" private Set\u003cSkill\u003e skills;","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"tzaph"},"content":" public DeleteSkillDescriptor() {}","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"tzaph"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"tzaph"},"content":" * A defensive copy of {@code skills} is used internally.","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"tzaph"},"content":" public DeleteSkillDescriptor(DeleteSkillDescriptor toCopy) {","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"tzaph"},"content":" setSkills(toCopy.skills);","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"tzaph"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"tzaph"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"tzaph"},"content":" return CollectionUtil.isAnyNonNull(skills);","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"tzaph"},"content":" * Adds {@code skills} to this object\u0027s {@code skills}.","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"tzaph"},"content":" * A defensive copy of {@code skills} is used internally.","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"tzaph"},"content":" public void setSkills(Set\u003cSkill\u003e skills) {","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"tzaph"},"content":" this.skills \u003d (skills !\u003d null) ? new HashSet\u003c\u003e(skills) : null;","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"tzaph"},"content":" * Returns an unmodifiable skill set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"tzaph"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"tzaph"},"content":" * Returns {@code Optional#empty()} if {@code skills} is null.","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"tzaph"},"content":" public Optional\u003cSet\u003cSkill\u003e\u003e getSkills() {","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"tzaph"},"content":" return (skills !\u003d null) ? Optional.of(Collections.unmodifiableSet(skills)) : Optional.empty();","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"tzaph"},"content":" * Deletes the set of skills in the object with the set of skills in the argument","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"tzaph"},"content":" public void deleteSkills(Set\u003cSkill\u003e argSkills) {","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e newSet \u003d new HashSet\u003cSkill\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"tzaph"},"content":" for (Skill skill : argSkills) {","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"tzaph"},"content":" newSet.add(skill);","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"tzaph"},"content":" for (Skill skill : this.skills) {","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"tzaph"},"content":" newSet.remove(skill);","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"tzaph"},"content":" setSkills(newSet);","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"tzaph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"tzaph"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"tzaph"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":218,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"tzaph"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"tzaph"},"content":" if (!(other instanceof DeleteSkillDescriptor)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"tzaph"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor otherDeleteSkillDescriptor \u003d (DeleteSkillDescriptor) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"tzaph"},"content":" return Objects.equals(skills, otherDeleteSkillDescriptor.skills);","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"tzaph"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"tzaph"},"content":" return new ToStringBuilder(this).add(\"skills\", skills).toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":233,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":234,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"Ryan-Reno":15,"tzaph":219}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_COURSE_MATES;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"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":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" * Edits the details of an existing courseMate in the contact list.","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the courseMate identified \"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" + \"by the index number used in the displayed courseMate list. \"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":" + \"NAME can be specified either by full name or by the \u0027#\u0027 notation.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" + \"Parameters: NAME \"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" + \"[\" + PREFIX_NAME + \" NEW_NAME] \"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" + \"[\" + PREFIX_PHONE + \" NEW_PHONE_NUMBER] \"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":" + \"[\" + PREFIX_EMAIL + \" NEW_EMAIL]\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" + \"Example: \" + COMMAND_WORD + \" John Doe \"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \" 91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \" johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":49,"author":{"gitId":"benson1029"},"content":" public static final String MESSAGE_EDIT_COURSE_MATE_SUCCESS \u003d \"Edited CourseMate\";","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"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":51,"author":{"gitId":"Ryan-Reno"},"content":" public static final String MESSAGE_DUPLICATE_COURSE_MATE_NAME \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" \"This courseMate already exists in the contact list.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" private final QueryableCourseMate queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" private final EditCourseMateDescriptor editCourseMateDescriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" * @param queryableCourseMate courseMate that we want to edit","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" * @param editCourseMateDescriptor details to edit the courseMate with","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" public EditCommand(QueryableCourseMate queryableCourseMate, EditCourseMateDescriptor editCourseMateDescriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(queryableCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(editCourseMateDescriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" this.queryableCourseMate \u003d queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Ryan-Reno"},"content":" this.editCourseMateDescriptor \u003d new EditCourseMateDescriptor(editCourseMateDescriptor);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e lastShownList \u003d model.getFilteredCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":" if (queryableCourseMate.isIndex() \u0026\u0026 queryableCourseMate.getIndex().getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e courseMateToEditList;","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" courseMateToEditList \u003d model.findCourseMate(queryableCourseMate);","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" } catch (CourseMateNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" //If there are more than 1 matching names","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" if (courseMateToEditList.size() \u003e 1) {","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" queryableCourseMate.getName().toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" model.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" String.format(Messages.MESSAGE_SIMILAR_COURSE_MATE_NAME,","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":" model.getFilteredCourseMateList().size()), false, false, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMateToEdit \u003d courseMateToEditList.get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate editedCourseMate \u003d createEditedCourseMate(courseMateToEdit, editCourseMateDescriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":" if (!courseMateToEdit.isSameCourseMate(editedCourseMate) \u0026\u0026 model.hasCourseMate(editedCourseMate)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":" throw new CommandException(MESSAGE_DUPLICATE_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":103,"author":{"gitId":"Ryan-Reno"},"content":" model.setCourseMate(courseMateToEdit, editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":" model.updateFilteredCourseMateList(PREDICATE_SHOW_ALL_COURSE_MATES);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"benson1029"},"content":" model.setRecentlyProcessedCourseMate(editedCourseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"benson1029"},"content":" return new CommandResult(MESSAGE_EDIT_COURSE_MATE_SUCCESS, false, false, true);","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":"Ryan-Reno"},"content":" * Creates and returns a {@code CourseMate} with the details of {@code courseMateToEdit}","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Ryan-Reno"},"content":" * edited with {@code editCourseMateDescriptor}.","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":113,"author":{"gitId":"Ryan-Reno"},"content":" private static CourseMate createEditedCourseMate(CourseMate courseMateToEdit,","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor editCourseMateDescriptor) {","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"Ryan-Reno"},"content":" assert courseMateToEdit !\u003d null;","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":117,"author":{"gitId":"Ryan-Reno"},"content":" Name updatedName \u003d editCourseMateDescriptor.getName().orElse(courseMateToEdit.getName());","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"Ryan-Reno"},"content":" Phone updatedPhone \u003d editCourseMateDescriptor.getPhone().orElse(courseMateToEdit.getPhone());","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"Ryan-Reno"},"content":" Email updatedEmail \u003d editCourseMateDescriptor.getEmail().orElse(courseMateToEdit.getEmail());","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"Ryan-Reno"},"content":" Set\u003cSkill\u003e updatedSkills \u003d editCourseMateDescriptor.getSkills().orElse(courseMateToEdit.getSkills());","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":122,"author":{"gitId":"yuhinarita"},"content":" return new CourseMate(updatedName, updatedPhone, updatedEmail, updatedSkills);","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return false;","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":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"Ryan-Reno"},"content":" return queryableCourseMate.getIndex().equals(otherEditCommand.queryableCourseMate.getIndex())","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"Ryan-Reno"},"content":" \u0026\u0026 editCourseMateDescriptor.equals(otherEditCommand.editCourseMateDescriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"Ryan-Reno"},"content":" .add(\"index\", queryableCourseMate.getIndex())","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"Ryan-Reno"},"content":" .add(\"editCourseMateDescriptor\", editCourseMateDescriptor)","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"Ryan-Reno"},"content":" * Stores the details to edit the courseMate with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"Ryan-Reno"},"content":" * corresponding field value of the courseMate.","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"Ryan-Reno"},"content":" public static class EditCourseMateDescriptor {","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":157,"author":{"gitId":"Ryan-Reno"},"content":" private Set\u003cSkill\u003e skills;","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"Ryan-Reno"},"content":" public EditCourseMateDescriptor() {}","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * A defensive copy of {@code skills} is used internally.","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":165,"author":{"gitId":"Ryan-Reno"},"content":" public EditCourseMateDescriptor(EditCourseMateDescriptor toCopy) {","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":169,"author":{"gitId":"Ryan-Reno"},"content":" setSkills(toCopy.skills);","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"yuhinarita"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, skills);","lastModifiedDate":"2024-03-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":204,"author":{"gitId":"Ryan-Reno"},"content":" * Sets {@code skills} to this object\u0027s {@code skills}.","lastModifiedDate":"2024-03-12"},{"lineNumber":205,"author":{"gitId":"Ryan-Reno"},"content":" * A defensive copy of {@code skills} is used internally.","lastModifiedDate":"2024-03-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"Ryan-Reno"},"content":" public void setSkills(Set\u003cSkill\u003e skills) {","lastModifiedDate":"2024-03-12"},{"lineNumber":208,"author":{"gitId":"Ryan-Reno"},"content":" this.skills \u003d (skills !\u003d null) ? new HashSet\u003c\u003e(skills) : null;","lastModifiedDate":"2024-03-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":212,"author":{"gitId":"Ryan-Reno"},"content":" * Returns an unmodifiable skill set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":214,"author":{"gitId":"Ryan-Reno"},"content":" * Returns {@code Optional#empty()} if {@code skills} is null.","lastModifiedDate":"2024-03-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":216,"author":{"gitId":"Ryan-Reno"},"content":" public Optional\u003cSet\u003cSkill\u003e\u003e getSkills() {","lastModifiedDate":"2024-03-12"},{"lineNumber":217,"author":{"gitId":"Ryan-Reno"},"content":" return (skills !\u003d null) ? Optional.of(Collections.unmodifiableSet(skills)) : Optional.empty();","lastModifiedDate":"2024-03-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":221,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":227,"author":{"gitId":"Ryan-Reno"},"content":" if (!(other instanceof EditCourseMateDescriptor)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":228,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":231,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor otherEditCourseMateDescriptor \u003d (EditCourseMateDescriptor) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":232,"author":{"gitId":"Ryan-Reno"},"content":" return Objects.equals(name, otherEditCourseMateDescriptor.name)","lastModifiedDate":"2024-03-12"},{"lineNumber":233,"author":{"gitId":"Ryan-Reno"},"content":" \u0026\u0026 Objects.equals(phone, otherEditCourseMateDescriptor.phone)","lastModifiedDate":"2024-03-12"},{"lineNumber":234,"author":{"gitId":"Ryan-Reno"},"content":" \u0026\u0026 Objects.equals(email, otherEditCourseMateDescriptor.email)","lastModifiedDate":"2024-03-12"},{"lineNumber":235,"author":{"gitId":"Ryan-Reno"},"content":" \u0026\u0026 Objects.equals(skills, otherEditCourseMateDescriptor.skills);","lastModifiedDate":"2024-03-12"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":244,"author":{"gitId":"Ryan-Reno"},"content":" .add(\"skills\", skills)","lastModifiedDate":"2024-03-12"},{"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":{"yuhinarita":2,"Ryan-Reno":82,"benson1029":3,"tzaph":6,"-":155}},{"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":"Ryan-Reno"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Contact list as requested ...\";","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":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":"-"},"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":"benson1029"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" * Finds and lists all course mates in contact list whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-12"},{"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":"yuhinarita"},"content":" public static final String COMMAND_WORD \u003d \"find-mate\";","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all course mates whose names contain any of \"","lastModifiedDate":"2024-03-12"},{"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":"benson1029"},"content":" private final ContainsKeywordPredicate predicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"benson1029"},"content":" public FindCommand(ContainsKeywordPredicate predicate) {","lastModifiedDate":"2024-03-17"},{"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":"Ryan-Reno"},"content":" model.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" String.format(Messages.MESSAGE_COURSE_MATES_LISTED_OVERVIEW, model.getFilteredCourseMateList().size()));","lastModifiedDate":"2024-03-12"},{"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":{"yuhinarita":1,"Ryan-Reno":4,"benson1029":3,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/FindGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.ContainsGroupKeywordPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":" * Finds and lists all groups in the group list whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yuhinarita"},"content":"public class FindGroupCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":" public static final String COMMAND_WORD \u003d \"find-group\";","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all groups whose names contain any of \"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":" + \"Example: \" + COMMAND_WORD + \"CS2103T\";","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"yuhinarita"},"content":" private final ContainsGroupKeywordPredicate predicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" public FindGroupCommand(ContainsGroupKeywordPredicate predicate) {","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"yuhinarita"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"yuhinarita"},"content":" model.updateFilteredGroupList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"yuhinarita"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"yuhinarita"},"content":" String.format(Messages.MESSAGE_GROUPS_LISTED_OVERVIEW, model.getFilteredGroupList().size()));","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"yuhinarita"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"yuhinarita"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"yuhinarita"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"yuhinarita"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"yuhinarita"},"content":" if (!(other instanceof FindGroupCommand)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"yuhinarita"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"yuhinarita"},"content":" FindGroupCommand otherFindGroupCommand \u003d (FindGroupCommand) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"yuhinarita"},"content":" return predicate.equals(otherFindGroupCommand.predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"yuhinarita"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"yuhinarita"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"yuhinarita"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"yuhinarita"},"content":" .toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"yuhinarita":58}},{"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":"Ryan-Reno"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_COURSE_MATES;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Lists all course mates in the contact list to the user.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all course mates\";","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" model.updateFilteredCourseMateList(PREDICATE_SHOW_ALL_COURSE_MATES);","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":4,"-":20}},{"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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"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-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_SKILL);","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":" argMultimap \u003d setPreambleAsName(argMultimap);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":" throw e;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"yuhinarita"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" Set\u003cSkill\u003e skillList \u003d ParserUtil.parseSkills(argMultimap.getAllValues(PREFIX_SKILL));","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"yuhinarita"},"content":" CourseMate courseMate \u003d new CourseMate(name, phone, email, skillList);","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" return new AddCommand(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":" * Isolates the preamble of the {@code argsString} and set is as the name argument of the command.","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003e value \u003cprefix\u003e value ...}","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" * @param argMultimap ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":" * @return ArgumentMultimap object that maps the name prefix to the name argument","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" private static ArgumentMultimap setPreambleAsName(ArgumentMultimap argMultimap)","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":" throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":" String name \u003d argMultimap.getPreamble();","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":" if (name.isEmpty() || !Name.isValidName(name)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":" argMultimap.put(PREFIX_NAME, name);","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":" return argMultimap;","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"yuhinarita":2,"Ryan-Reno":8,"tzaph":23,"-":46}},{"path":"src/main/java/seedu/address/logic/parser/AddMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSEMATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" * Parses input arguments and creates a new {@code AddMemberCommand} object.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"public class AddMemberCommandParser implements Parser\u003cAddMemberCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" * Parses the given {@code String} of arguments in the context of the AddMemberCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" * and returns a AddMemberCommand object to execute.","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" * @throws ParseException if the user input does not conform the expected format or the group name is used","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" public AddMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" ArgumentMultimap argMultiMap \u003d ArgumentTokenizer.tokenize(args, PREFIX_COURSEMATE);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" Name name \u003d ParserUtil.parseName(argMultiMap.getPreamble());","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" Set\u003cQueryableCourseMate\u003e queryableCourseMateSet \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" ParserUtil.parseQueryableCourseMates(argMultiMap.getAllValues(PREFIX_COURSEMATE));","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" // will get caught by the catch clause, leave empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" if (queryableCourseMateSet.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" throw new ParseException(\"\");","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" return new AddMemberCommand(name, queryableCourseMateSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":41}},{"path":"src/main/java/seedu/address/logic/parser/AddSkillCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand.AddSkillDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":" * Parses input arguments and creates a new AddSkillCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":"public class AddSkillCommandParser implements Parser\u003cAddSkillCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":" * Parses the given {@code String} of arguments in the context of the AddSkillCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":" * and returns an AddSkillCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"tzaph"},"content":" public AddSkillCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_SKILL);","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":" QueryableCourseMate queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" queryableCourseMate \u003d ParserUtil.parseQueryableCourseMate(argMultimap.getPreamble());","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSkillCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor addSkillDescriptor \u003d new AddSkillDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" parseSkillsForEdit(argMultimap.getAllValues(PREFIX_SKILL)).ifPresent(addSkillDescriptor::setSkills);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" if (!addSkillDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" throw new ParseException(AddSkillCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":" return new AddSkillCommand(queryableCourseMate, addSkillDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" * Parses {@code Collection\u003cString\u003e skills} into a {@code Set\u003cSkill\u003e} if {@code skills} is non-empty.","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":" * If {@code skills} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":" * {@code Set\u003cSkill\u003e} containing zero skills.","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"tzaph"},"content":" private Optional\u003cSet\u003cSkill\u003e\u003e parseSkillsForEdit(Collection\u003cString\u003e skills) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"tzaph"},"content":" assert skills !\u003d null;","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"tzaph"},"content":" if (skills.isEmpty()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"tzaph"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":" Collection\u003cString\u003e skillSet \u003d skills;","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" if (skills.size() \u003d\u003d 1 \u0026\u0026 skills.contains(\"\")) {","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" skillSet \u003d Collections.emptySet();","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":" return Optional.of(ParserUtil.parseSkills(skillSet));","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"tzaph":72}},{"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\u003e value \u003cprefix\u003e value ...}\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":10,"author":{"gitId":"tzaph"},"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":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"tzaph"},"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":"2024-03-18"},{"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":"tzaph"},"content":" * 3. An argument may be repeated and all its values will be accumulated e.g. the value of {@code -t}","lastModifiedDate":"2024-03-18"},{"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\u003e value \u003cprefix\u003e value ...}","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\u003e value \u003cprefix\u003e value ...}","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":"tzaph"},"content":" * E.g if {@code argsString} \u003d \"-e hi-p 900\", {@code prefix} \u003d \"-p\" and","lastModifiedDate":"2024-03-18"},{"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":"tzaph"},"content":" * occurrences of \"-p\" with whitespace before it. However, if","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":" * {@code argsString} \u003d \"-e hi -p 900\", {@code prefix} \u003d \"-p\" and","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" * {@code fromIndex} \u003d 0, this method returns 6.","lastModifiedDate":"2024-03-18"},{"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\u003e value \u003cprefix\u003e value ...}","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":{"tzaph":7,"-":141}},{"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":"ivan24004"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"-n\");","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"-p\");","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"-e\");","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":" public static final Prefix PREFIX_SKILL \u003d new Prefix(\"-s\");","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":" public static final Prefix PREFIX_COURSEMATE \u003d new Prefix(\"-cm\");","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"-":10,"ivan24004":5}},{"path":"src/main/java/seedu/address/logic/parser/CreateGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSEMATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.CreateGroupCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" * Parses input arguments and creates a new {@code CreateGroupCommand} object.","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"public class CreateGroupCommandParser implements Parser\u003cCreateGroupCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" * Parses the given {@code String} of arguments in the context of the CreateGroupCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" * and returns a CreateGroupCommand object to execute.","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" * @throws ParseException if the user input does not conform the expected format or the group name is used","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" public CreateGroupCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" ArgumentMultimap argMultiMap \u003d ArgumentTokenizer.tokenize(args, PREFIX_COURSEMATE);","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" Name name \u003d ParserUtil.parseName(argMultiMap.getPreamble());","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" Set\u003cQueryableCourseMate\u003e queryableCourseMateSet \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" ParserUtil.parseQueryableCourseMates(argMultiMap.getAllValues(PREFIX_COURSEMATE));","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" return new CreateGroupCommand(name, queryableCourseMateSet);","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"ivan24004":36}},{"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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","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":"Ryan-Reno"},"content":" QueryableCourseMate queryableCourseMate \u003d ParserUtil.parseQueryableCourseMate(args);","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" return new DeleteCommand(queryableCourseMate);","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":{"Ryan-Reno":3,"-":26}},{"path":"src/main/java/seedu/address/logic/parser/DeleteGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSEMATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.DeleteGroupCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":" * Parses input arguments and creates a new {@code DeleteGroupCommand} object.","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"public class DeleteGroupCommandParser implements Parser\u003cDeleteGroupCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteGroupCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" * and returns a DeleteGroupCommand object to execute.","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" * @throws ParseException if the user input does not conform the expected format or the group name is used","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" public DeleteGroupCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" ArgumentMultimap argMultiMap \u003d ArgumentTokenizer.tokenize(args, PREFIX_COURSEMATE);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" Name groupName \u003d ParserUtil.parseName(argMultiMap.getPreamble());","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" return new DeleteGroupCommand(groupName);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"ivan24004":31}},{"path":"src/main/java/seedu/address/logic/parser/DeleteMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSEMATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" * Parses input arguments and creates a new {@code DeleteMemberCommand} object.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"public class DeleteMemberCommandParser implements Parser\u003cDeleteMemberCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteMemberCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" * and returns a DeleteMemberCommand object to execute.","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" * @throws ParseException if the user input does not conform the expected format or the group name is used","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" public DeleteMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" ArgumentMultimap argMultiMap \u003d ArgumentTokenizer.tokenize(args, PREFIX_COURSEMATE);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" Name name \u003d ParserUtil.parseName(argMultiMap.getPreamble());","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" Set\u003cQueryableCourseMate\u003e queryableCourseMateSet \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" ParserUtil.parseQueryableCourseMates(argMultiMap.getAllValues(PREFIX_COURSEMATE));","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" // will get caught by the catch clause, leave empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" if (queryableCourseMateSet.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" throw new ParseException(\"\");","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" return new DeleteMemberCommand(name, queryableCourseMateSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":41}},{"path":"src/main/java/seedu/address/logic/parser/DeleteSkillCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand.DeleteSkillDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":" * Parses input arguments and creates a new DeleteSkillCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":"public class DeleteSkillCommandParser implements Parser\u003cDeleteSkillCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteSkillCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":" * and returns an DeleteSkillCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":" public DeleteSkillCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_SKILL);","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":" QueryableCourseMate queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":" queryableCourseMate \u003d ParserUtil.parseQueryableCourseMate(argMultimap.getPreamble());","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor deleteSkillDescriptor \u003d new DeleteSkillDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" parseSkillsForEdit(argMultimap.getAllValues(PREFIX_SKILL)).ifPresent(deleteSkillDescriptor::setSkills);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" if (!deleteSkillDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" throw new ParseException(DeleteSkillCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" return new DeleteSkillCommand(queryableCourseMate, deleteSkillDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":" * Parses {@code Collection\u003cString\u003e skills} into a {@code Set\u003cSkill\u003e} if {@code skills} is non-empty.","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" * If {@code skills} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"tzaph"},"content":" * {@code Set\u003cSkill\u003e} containing zero skills.","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"tzaph"},"content":" private Optional\u003cSet\u003cSkill\u003e\u003e parseSkillsForEdit(Collection\u003cString\u003e skills) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"tzaph"},"content":" assert skills !\u003d null;","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":" if (skills.isEmpty()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" Collection\u003cString\u003e skillSet \u003d skills.size() \u003d\u003d 1 \u0026\u0026 skills.contains(\"\") ? Collections.emptySet() : skills;","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" return Optional.of(ParserUtil.parseSkills(skillSet));","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"tzaph":69}},{"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":"-"},"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-01-26"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.logic.commands.EditCommand.EditCourseMateDescriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\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 EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"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 EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":34,"author":{"gitId":"yuhinarita"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_SKILL);","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" QueryableCourseMate queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" queryableCourseMate \u003d ParserUtil.parseQueryableCourseMate(argMultimap.getPreamble());","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":44,"author":{"gitId":"yuhinarita"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor editCourseMateDescriptor \u003d new EditCourseMateDescriptor();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" editCourseMateDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" editCourseMateDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" editCourseMateDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" parseSkillsForEdit(argMultimap.getAllValues(PREFIX_SKILL)).ifPresent(editCourseMateDescriptor::setSkills);","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" if (!editCourseMateDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" return new EditCommand(queryableCourseMate, editCourseMateDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"Ryan-Reno"},"content":" * Parses {@code Collection\u003cString\u003e skills} into a {@code Set\u003cSkill\u003e} if {@code skills} is non-empty.","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" * If {@code skills} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" * {@code Set\u003cSkill\u003e} containing zero skills.","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"Ryan-Reno"},"content":" private Optional\u003cSet\u003cSkill\u003e\u003e parseSkillsForEdit(Collection\u003cString\u003e skills) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" assert skills !\u003d null;","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":" if (skills.isEmpty()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":" Collection\u003cString\u003e skillSet \u003d skills.size() \u003d\u003d 1 \u0026\u0026 skills.contains(\"\") ? Collections.emptySet() : skills;","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" return Optional.of(ParserUtil.parseSkills(skillSet));","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"yuhinarita":2,"Ryan-Reno":21,"-":58}},{"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":"benson1029"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","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 FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\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 FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * and returns a FindCommand 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 FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"benson1029"},"content":" String trimmedArgs \u003d args.trim().replaceAll(\"\\\\s+\", \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":22,"author":{"gitId":"benson1029"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"benson1029"},"content":" FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"benson1029"},"content":" return new FindCommand(new ContainsKeywordPredicate(trimmedArgs));","lastModifiedDate":"2024-03-17"},{"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"}],"authorContributionMap":{"benson1029":5,"-":23}},{"path":"src/main/java/seedu/address/logic/parser/FindGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.logic.commands.FindGroupCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.ContainsGroupKeywordPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":" * Parses input arguments and creates a new FindGroupCommand object","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"content":"public class FindGroupCommandParser implements Parser\u003cFindGroupCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":" * Parses the given {@code String} of arguments in the context of the FindGroupCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":" * and returns a FindGroupCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":" public FindGroupCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":" String trimmedArgs \u003d args.trim().replaceAll(\"\\\\s+\", \" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"yuhinarita"},"content":" FindGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" return new FindGroupCommand(new ContainsGroupKeywordPredicate(trimmedArgs));","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"yuhinarita":28}},{"path":"src/main/java/seedu/address/logic/parser/MatchMateParser.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":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.CreateGroupCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.DeleteGroupCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.logic.commands.FindGroupCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":"public class MatchMateParser {","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MatchMateParser.class);","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":" if (!isValidArgument(arguments)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"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":67,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"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":"tzaph"},"content":" case AddSkillCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"tzaph"},"content":" return new AddSkillCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"tzaph"},"content":" case DeleteSkillCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"tzaph"},"content":" return new DeleteSkillCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":" case CreateGroupCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"ivan24004"},"content":" return new CreateGroupCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"ivan24004"},"content":" case DeleteGroupCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"ivan24004"},"content":" return new DeleteGroupCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"yuhinarita"},"content":" case FindGroupCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"yuhinarita"},"content":" return new FindGroupCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"ivan24004"},"content":" case DeleteMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"ivan24004"},"content":" return new DeleteMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"ivan24004"},"content":" case AddMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"ivan24004"},"content":" return new AddMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"tzaph"},"content":" * Checks for prefixes if they are valid with the currently supported prefix codes. The argument is valid","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"tzaph"},"content":" * if every prefix occurence in {@code argsString} is lead and trailed by a whitespace.","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"tzaph"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"tzaph"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003e value \u003cprefix\u003e value ...}","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"tzaph"},"content":" private boolean isValidArgument(String argsString) {","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"tzaph"},"content":" // Iterate through the list of valid prefixes","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"tzaph"},"content":" List\u003cPrefix\u003e listOfPrefixes \u003d new ArrayList\u003c\u003e(","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"tzaph"},"content":" List.of(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_SKILL));","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"tzaph"},"content":" for (Prefix prefix : listOfPrefixes) {","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"tzaph"},"content":" // Find all occurrences of the prefix in the String","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"tzaph"},"content":" int start \u003d 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"tzaph"},"content":" while (start \u003e\u003d 0) {","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"tzaph"},"content":" start \u003d argsString.indexOf(\" \" + prefix, start);","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"tzaph"},"content":" // No more occurrences are found","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"tzaph"},"content":" if (start \u003d\u003d -1) {","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"tzaph"},"content":" break;","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"tzaph"},"content":" // Check if there is a whitespace after the prefix","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"tzaph"},"content":" int checkIndex \u003d start + (prefix.toString()).length() + 1;","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"tzaph"},"content":" if (checkIndex \u003c argsString.length() \u0026\u0026 argsString.charAt(checkIndex) !\u003d \u0027 \u0027) {","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"tzaph"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"tzaph"},"content":" // Find occurrences after the current index","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"tzaph"},"content":" start +\u003d 1;","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"tzaph"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"yuhinarita":4,"tzaph":52,"-":84,"ivan24004":18}},{"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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" private static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" if (trimmedIndex.isEmpty() || trimmedIndex.charAt(0) !\u003d \u0027#\u0027 || trimmedIndex.equals(\"#\")) {","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" if (trimmedIndex.equals(\"##\")) {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" return Index.fromOneBased(0);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex.substring(1))) {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex.substring(1)));","lastModifiedDate":"2024-03-20"},{"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 email} into an {@code Email}.","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 email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"Ryan-Reno"},"content":" * Parses a {@code String skill} into a {@code Skill}.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * @throws ParseException if the given {@code skill} is invalid.","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"Ryan-Reno"},"content":" public static Skill parseSkill(String skill) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(skill);","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":" String trimmedSkill \u003d skill.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":" return new Skill(trimmedSkill);","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":" * Parses {@code Collection\u003cString\u003e skills} into a {@code Set\u003cSkill\u003e}.","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" public static Set\u003cSkill\u003e parseSkills(Collection\u003cString\u003e skills) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(skills);","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"Ryan-Reno"},"content":" final Set\u003cSkill\u003e skillSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"Ryan-Reno"},"content":" for (String skillName : skills) {","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":" skillSet.add(parseSkill(skillName));","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":112,"author":{"gitId":"Ryan-Reno"},"content":" return skillSet;","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"ivan24004"},"content":" * Parses {@code String label} into a {@code QueryableCourseMate}.","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"ivan24004"},"content":" public static QueryableCourseMate parseQueryableCourseMate(String label) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"ivan24004"},"content":" requireNonNull(label);","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"ivan24004"},"content":" String trimmedLabel \u003d label.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"ivan24004"},"content":" if (trimmedLabel.isEmpty()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"ivan24004"},"content":" throw new ParseException(\"the query cannot be empty\");","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"ivan24004"},"content":" if (trimmedLabel.charAt(0) \u003d\u003d \u0027#\u0027) {","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"Ryan-Reno"},"content":" return new QueryableCourseMate(parseIndex(trimmedLabel));","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"ivan24004"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"ivan24004"},"content":" return new QueryableCourseMate(parseName(trimmedLabel));","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"ivan24004"},"content":" * Parses {@code String labels} into a {@code Set\u003cQueryableCourseMate\u003e}.","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"ivan24004"},"content":" public static Set\u003cQueryableCourseMate\u003e parseQueryableCourseMates(Collection\u003cString\u003e labels)","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"ivan24004"},"content":" throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"ivan24004"},"content":" requireNonNull(labels);","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"ivan24004"},"content":" final Set\u003cQueryableCourseMate\u003e courseMateSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"ivan24004"},"content":" for (String courseMateName : labels) {","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"ivan24004"},"content":" courseMateSet.add(parseQueryableCourseMate(courseMateName));","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"ivan24004"},"content":" return courseMateSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Ryan-Reno":29,"-":90,"ivan24004":25}},{"path":"src/main/java/seedu/address/model/ContactList.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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.UniqueCourseMateList;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":" * Wraps all data at the contact list level","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":" * Duplicates are not allowed (by .isSameCourseMate comparison)","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"public class ContactList implements ReadOnlyContactList {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":" private final UniqueCourseMateList courseMates;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" courseMates \u003d new UniqueCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" public ContactList() {}","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" * Creates an ContactList using the Course mates in the {@code toBeCopied}","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" public ContactList(ReadOnlyContactList toBeCopied) {","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" * Replaces the contents of the courseMate list with {@code courseMates}.","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" * {@code courseMates} must not contain duplicate courseMates.","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMates(List\u003cCourseMate\u003e courseMates) {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" this.courseMates.setCourseMates(courseMates);","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" * Resets the existing data of this {@code ContactList} with {@code newData}.","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" public void resetData(ReadOnlyContactList newData) {","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" setCourseMates(newData.getCourseMateList());","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" //// courseMate-level operations","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" * Returns true if a courseMate with the same identity as {@code courseMate} exists in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"Ryan-Reno"},"content":" public boolean hasCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" return courseMates.contains(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" * Adds a courseMate to the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":" * The courseMate must not already exist in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":" public void addCourseMate(CourseMate p) {","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":" courseMates.add(p);","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" * Replaces the given courseMate {@code target} in the list with {@code editedCourseMate}.","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" * {@code target} must exist in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" * The courseMate identity of {@code editedCourseMate} must not be the same as","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" * another existing courseMate in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate(CourseMate target, CourseMate editedCourseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" courseMates.setCourseMate(target, editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"ivan24004"},"content":" * Finds a {@code CourseMate} with the exact same name.","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" public List\u003cCourseMate\u003e findCourseMate(Name name) {","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"ivan24004"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":" return courseMates.findCourseMate(name);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"Ryan-Reno"},"content":" * Removes {@code key} from this {@code ContactList}.","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"Ryan-Reno"},"content":" * {@code key} must exist in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":" public void removeCourseMate(CourseMate key) {","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" courseMates.remove(key);","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":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"Ryan-Reno"},"content":" .add(\"courseMates\", courseMates)","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"Ryan-Reno"},"content":" public ObservableList\u003cCourseMate\u003e getCourseMateList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"Ryan-Reno"},"content":" return courseMates.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"Ryan-Reno"},"content":" if (!(other instanceof ContactList)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"Ryan-Reno"},"content":" ContactList otherContactList \u003d (ContactList) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"Ryan-Reno"},"content":" return courseMates.equals(otherContactList.courseMates);","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":140,"author":{"gitId":"Ryan-Reno"},"content":" return courseMates.hashCode();","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"yuhinarita":2,"Ryan-Reno":45,"-":87,"ivan24004":8}},{"path":"src/main/java/seedu/address/model/GroupList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.UniqueGroupList;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":" * Wraps all data at the group list level","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" * Duplicates are not allowed (by .isSameGroup comparison)","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"public class GroupList implements ReadOnlyGroupList {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" private final UniqueGroupList groups \u003d new UniqueGroupList();","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" public GroupList() {}","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" * Constructor that copies data from an existing {@code ReadOnlyGroupList} object.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" public GroupList(ReadOnlyGroupList toBeCopied) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" this();","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" requireNonNull(toBeCopied);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" * Replaces the contents of the group list with {@code groups}.","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" * {@code groups} must not contain duplicate groups.","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" public void setGroups(List\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" this.groups.setGroups(groups);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" * Resets the existing data of this {@code GroupList} with {@code newData}.","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" public void resetData(ReadOnlyGroupList newData) {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" setGroups(newData.getGroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" //// group-level operations","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" * Returns true if a courseMate with the same identity as {@code courseMate} exists in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" return groups.contains(group);","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" * Adds a group to the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" * The group must not already exist in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" public void addGroup(Group p) {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" groups.add(p);","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" * Replaces the given group {@code target} in the list with {@code editedGroup}.","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" * {@code target} must exist in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" * The group identity of {@code editedGroup} must not be the same as","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" * another existing group in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" requireNonNull(editedGroup);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"ivan24004"},"content":" groups.setGroup(target, editedGroup);","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" * Removes {@code key} from this {@code GroupList}.","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":" * {@code key} must exist in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" public void removeGroup(Group key) {","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":" groups.remove(key);","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" * Find a group with specified {@code name} from this","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":" public Group findGroup(Name name) {","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":" return groups.findGroup(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"ivan24004"},"content":" //// util methods","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"ivan24004"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"ivan24004"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":" .add(\"groups\", groups)","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"ivan24004"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"ivan24004"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"ivan24004"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"ivan24004"},"content":" if (!(other instanceof GroupList)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"ivan24004"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"ivan24004"},"content":" GroupList otherContactList \u003d (GroupList) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"ivan24004"},"content":" return groups.equals(otherContactList.groups);","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"ivan24004"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"ivan24004"},"content":" return groups.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"ivan24004"},"content":" public ObservableList\u003cGroup\u003e getGroupList() {","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"ivan24004"},"content":" return groups.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"ivan24004":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":"Ryan-Reno"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.exceptions.GroupNotFoundException;","lastModifiedDate":"2024-03-18"},{"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":"Ryan-Reno"},"content":" Predicate\u003cCourseMate\u003e PREDICATE_SHOW_ALL_COURSE_MATES \u003d unused -\u003e true;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" Predicate\u003cGroup\u003e PREDICATE_SHOW_ALL_GROUPS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"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.","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","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":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","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":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","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":"Ryan-Reno"},"content":" * Returns the user prefs\u0027 contact list file path.","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" Path getContactListFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" * Sets the user prefs\u0027 contact list file path.","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" void setContactListFilePath(Path contactListFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" * Replaces contact list data with the data in {@code contactList}.","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" void setContactList(ReadOnlyContactList contactList);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" /** Returns the ContactList */","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" ReadOnlyContactList getContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" * Returns true if a courseMate with the same identity as {@code courseMate} exists in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" boolean hasCourseMate(CourseMate courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" * Deletes the given courseMate.","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Ryan-Reno"},"content":" * The courseMate must exist in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" void deleteCourseMate(CourseMate target);","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":" * Adds the given courseMate.","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":" * {@code courseMate} must not already exist in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" void addCourseMate(CourseMate courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" * Replaces the given courseMate {@code target} with {@code editedCourseMate}.","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" * {@code target} must exist in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" * The courseMate identity of {@code editedCourseMate} must not be the same as another","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" * existing courseMate in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" void setCourseMate(CourseMate target, CourseMate editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":" * Returns the user prefs\u0027 contact list file path.","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":" Path getGroupListFilePath();","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ivan24004"},"content":" * Sets the user prefs\u0027 contact list file path.","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ivan24004"},"content":" void setGroupListFilePath(Path groupListFilePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" * Replaces contact list data with the data in {@code groupList}.","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ivan24004"},"content":" void setGroupList(ReadOnlyGroupList groupList);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":" /** Returns the GroupList */","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ivan24004"},"content":" ReadOnlyGroupList getGroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"ivan24004"},"content":" * Returns true if a courseMate with the same identity as {@code courseMate} exists in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"ivan24004"},"content":" boolean hasGroup(Group group);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"ivan24004"},"content":" * Deletes the given group.","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"ivan24004"},"content":" * The group must exist in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"ivan24004"},"content":" void deleteGroup(Group target);","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":"ivan24004"},"content":" * Finds the group based on name.","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"ivan24004"},"content":" * @throws GroupNotFoundException if group doesn\u0027t exist","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"ivan24004"},"content":" Group findGroup(Name name) throws GroupNotFoundException;","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"ivan24004"},"content":" * Adds the given group.","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"ivan24004"},"content":" * {@code group} must not already exist in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"ivan24004"},"content":" void addGroup(Group group);","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"ivan24004"},"content":" * Replaces the given group {@code target} with {@code editedGroup}.","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"ivan24004"},"content":" * {@code target} must exist in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"ivan24004"},"content":" * The group identity of {@code editedGroup} must not be the same as another","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"ivan24004"},"content":" * existing group in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"ivan24004"},"content":" void setGroup(Group target, Group editedGroup);","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"ivan24004"},"content":" * Finds a {@code CourseMate} with the exact same name.","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e findCourseMate(QueryableCourseMate query);","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"Ryan-Reno"},"content":" /** Returns an unmodifiable view of the filtered courseMate list */","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"Ryan-Reno"},"content":" ObservableList\u003cCourseMate\u003e getFilteredCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":145,"author":{"gitId":"Ryan-Reno"},"content":" * Updates the filter of the filtered courseMate list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":148,"author":{"gitId":"Ryan-Reno"},"content":" void updateFilteredCourseMateList(Predicate\u003cCourseMate\u003e predicate);","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":150,"author":{"gitId":"yuhinarita"},"content":" /** Returns an unmodifiable view of the filtered group list */","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"yuhinarita"},"content":" ObservableList\u003cGroup\u003e getFilteredGroupList();","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"yuhinarita"},"content":" * Updates the filter of the filtered group list to filter by the given {@code prediate}.","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"yuhinarita"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"yuhinarita"},"content":" void updateFilteredGroupList(Predicate\u003cGroup\u003e predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"benson1029"},"content":" /** Returns the most recently processed course mate */","lastModifiedDate":"2024-03-15"},{"lineNumber":160,"author":{"gitId":"benson1029"},"content":" CourseMate getRecentlyProcessedCourseMate();","lastModifiedDate":"2024-03-15"},{"lineNumber":161,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":162,"author":{"gitId":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":163,"author":{"gitId":"benson1029"},"content":" * Sets the most recently processed course mate.","lastModifiedDate":"2024-03-15"},{"lineNumber":164,"author":{"gitId":"benson1029"},"content":" * The course mate need not exist in the contact list, for example, when the user is deleting","lastModifiedDate":"2024-03-15"},{"lineNumber":165,"author":{"gitId":"benson1029"},"content":" * a course mate, the most recently processed course mate is set to the course mate that was deleted.","lastModifiedDate":"2024-03-15"},{"lineNumber":166,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"benson1029"},"content":" void setRecentlyProcessedCourseMate(CourseMate courseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"yuhinarita":10,"Ryan-Reno":29,"benson1029":10,"-":83,"ivan24004":36}},{"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":"Ryan-Reno"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"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 javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.exceptions.GroupNotFoundException;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" * Represents the in-memory model of the contact list data.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" private final ContactList contactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" private final GroupList groupList;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" private final FilteredList\u003cCourseMate\u003e filteredCourseMates;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"yuhinarita"},"content":" private final FilteredList\u003cGroup\u003e filteredGroups;","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"benson1029"},"content":" private CourseMate recentlyProcessedCourseMate;","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" * Initializes a ModelManager with the given contact list and userPrefs.","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" public ModelManager(ReadOnlyContactList contactList, ReadOnlyUserPrefs userPrefs, ReadOnlyGroupList groupList) {","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" requireAllNonNull(contactList, userPrefs);","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" logger.fine(\"Initializing with contact list: \" + contactList + \" and user prefs \" + userPrefs);","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" this.contactList \u003d new ContactList(contactList);","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" this.groupList \u003d new GroupList(groupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" filteredCourseMates \u003d new FilteredList\u003c\u003e(this.contactList.getCourseMateList());","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" filteredGroups \u003d new FilteredList\u003c\u003e(this.groupList.getGroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"benson1029"},"content":" recentlyProcessedCourseMate \u003d null;","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" this(new ContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"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":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"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 ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ContactList \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-20"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" public Path getContactListFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" return userPrefs.getContactListFilePath();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void setContactListFilePath(Path contactListFilePath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(contactListFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" userPrefs.setContactListFilePath(contactListFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":" public void setContactList(ReadOnlyContactList contactList) {","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" this.contactList.resetData(contactList);","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":" public ReadOnlyContactList getContactList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":" return contactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":" public boolean hasCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" return contactList.hasCourseMate(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":" public void deleteCourseMate(CourseMate target) {","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Ryan-Reno"},"content":" contactList.removeCourseMate(target);","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":115,"author":{"gitId":"Ryan-Reno"},"content":" public void addCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"Ryan-Reno"},"content":" contactList.addCourseMate(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"Ryan-Reno"},"content":" updateFilteredCourseMateList(PREDICATE_SHOW_ALL_COURSE_MATES);","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":121,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate(CourseMate target, CourseMate editedCourseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"Ryan-Reno"},"content":" requireAllNonNull(target, editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":124,"author":{"gitId":"Ryan-Reno"},"content":" contactList.setCourseMate(target, editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":127,"author":{"gitId":"ivan24004"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d GroupList \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"ivan24004"},"content":" public Path getGroupListFilePath() {","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"ivan24004"},"content":" return userPrefs.getGroupListFilePath();","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"ivan24004"},"content":" public void setGroupListFilePath(Path groupListFilePath) {","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"ivan24004"},"content":" requireNonNull(groupListFilePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"ivan24004"},"content":" userPrefs.setGroupListFilePath(groupListFilePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"ivan24004"},"content":" public void setGroupList(ReadOnlyGroupList groupList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"ivan24004"},"content":" this.groupList.resetData(groupList);","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"ivan24004"},"content":" public ReadOnlyGroupList getGroupList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"ivan24004"},"content":" return groupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"ivan24004"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"ivan24004"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"ivan24004"},"content":" return groupList.hasGroup(group);","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"ivan24004"},"content":" public void deleteGroup(Group target) {","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"ivan24004"},"content":" groupList.removeGroup(target);","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"ivan24004"},"content":" public Group findGroup(Name name) throws GroupNotFoundException {","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"ivan24004"},"content":" return groupList.findGroup(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"ivan24004"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"ivan24004"},"content":" groupList.addGroup(group);","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"ivan24004"},"content":" updateFilteredGroupList(PREDICATE_SHOW_ALL_GROUPS);","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"ivan24004"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-03-18"},{"lineNumber":173,"author":{"gitId":"ivan24004"},"content":" requireAllNonNull(target, editedGroup);","lastModifiedDate":"2024-03-18"},{"lineNumber":174,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":175,"author":{"gitId":"ivan24004"},"content":" groupList.setGroup(target, editedGroup);","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"Ryan-Reno"},"content":" public List\u003cCourseMate\u003e findCourseMate(QueryableCourseMate query) throws CourseMateNotFoundException {","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"ivan24004"},"content":" if (query.isIndex()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"Ryan-Reno"},"content":" if (query.getIndex().getZeroBased() \u003d\u003d -1) {","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"Ryan-Reno"},"content":" ArrayList\u003cCourseMate\u003e arrayList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"Ryan-Reno"},"content":" arrayList.add(getRecentlyProcessedCourseMate());","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"Ryan-Reno"},"content":" return arrayList;","lastModifiedDate":"2024-03-21"},{"lineNumber":185,"author":{"gitId":"Ryan-Reno"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"Ryan-Reno"},"content":" ArrayList\u003cCourseMate\u003e arrayList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"Ryan-Reno"},"content":" arrayList.add(getFilteredCourseMateList().get(query.getIndex().getZeroBased()));","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"Ryan-Reno"},"content":" return arrayList;","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"ivan24004"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"ivan24004"},"content":" return contactList.findCourseMate(query.getName());","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"Ryan-Reno"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered CourseMate 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-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":198,"author":{"gitId":"Ryan-Reno"},"content":" * Returns an unmodifiable view of the list of {@code CourseMate} backed by the internal list of","lastModifiedDate":"2024-03-12"},{"lineNumber":199,"author":{"gitId":"Ryan-Reno"},"content":" * {@code versionedContactList}","lastModifiedDate":"2024-03-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":202,"author":{"gitId":"Ryan-Reno"},"content":" public ObservableList\u003cCourseMate\u003e getFilteredCourseMateList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":203,"author":{"gitId":"Ryan-Reno"},"content":" return filteredCourseMates;","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":207,"author":{"gitId":"Ryan-Reno"},"content":" public void updateFilteredCourseMateList(Predicate\u003cCourseMate\u003e predicate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":209,"author":{"gitId":"Ryan-Reno"},"content":" filteredCourseMates.setPredicate(predicate);","lastModifiedDate":"2024-03-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":212,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":213,"author":{"gitId":"yuhinarita"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-03-16"},{"lineNumber":214,"author":{"gitId":"yuhinarita"},"content":" return filteredGroups;","lastModifiedDate":"2024-03-16"},{"lineNumber":215,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":216,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":217,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":218,"author":{"gitId":"yuhinarita"},"content":" public void updateFilteredGroupList(Predicate\u003cGroup\u003e predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":219,"author":{"gitId":"yuhinarita"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":220,"author":{"gitId":"ivan24004"},"content":" filteredGroups.setPredicate(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":222,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":223,"author":{"gitId":"benson1029"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Most recently processed course mate \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-15"},{"lineNumber":224,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":225,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":226,"author":{"gitId":"benson1029"},"content":" public CourseMate getRecentlyProcessedCourseMate() {","lastModifiedDate":"2024-03-15"},{"lineNumber":227,"author":{"gitId":"benson1029"},"content":" return recentlyProcessedCourseMate;","lastModifiedDate":"2024-03-15"},{"lineNumber":228,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":229,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":230,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":231,"author":{"gitId":"benson1029"},"content":" public void setRecentlyProcessedCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-15"},{"lineNumber":232,"author":{"gitId":"benson1029"},"content":" recentlyProcessedCourseMate \u003d courseMate;","lastModifiedDate":"2024-03-15"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":235,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":236,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":237,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":238,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":241,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":243,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":246,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":247,"author":{"gitId":"Ryan-Reno"},"content":" return contactList.equals(otherModelManager.contactList)","lastModifiedDate":"2024-03-12"},{"lineNumber":248,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":249,"author":{"gitId":"ivan24004"},"content":" \u0026\u0026 filteredCourseMates.equals(otherModelManager.filteredCourseMates)","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"ivan24004"},"content":" \u0026\u0026 filteredGroups.equals(otherModelManager.filteredGroups)","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"ivan24004"},"content":" \u0026\u0026 groupList.equals(otherModelManager.groupList);","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":254,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"yuhinarita":12,"Ryan-Reno":49,"benson1029":12,"-":134,"ivan24004":47}},{"path":"src/main/java/seedu/address/model/ReadOnlyContactList.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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":" * Unmodifiable view of an contact list","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"public interface ReadOnlyContactList {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":" * Returns an unmodifiable view of the course mates list.","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":" * This list will not contain any duplicate course mates.","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":" ObservableList\u003cCourseMate\u003e getCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Ryan-Reno":6,"-":11}},{"path":"src/main/java/seedu/address/model/ReadOnlyGroupList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":" * Unmodifiable view of a group list","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"public interface ReadOnlyGroupList {","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":" * Returns an unmodifiable view of the group list.","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":" * This list will not contain any duplicate groups.","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":" ObservableList\u003cGroup\u003e getGroupList();","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"ivan24004":15}},{"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":"Ryan-Reno"},"content":" Path getContactListFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"Ryan-Reno":1,"-":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":"Ryan-Reno"},"content":" private Path contactListFilePath \u003d Paths.get(\"data\" , \"contactlist.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" private Path groupListFilePath \u003d Paths.get(\"data\" , \"grouplist.json\");","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":" setContactListFilePath(newUserPrefs.getContactListFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" public Path getContactListFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" return contactListFilePath;","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" public void setContactListFilePath(Path contactListFilePath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(contactListFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" this.contactListFilePath \u003d contactListFilePath;","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" public Path getGroupListFilePath() {","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" return groupListFilePath;","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" public void setGroupListFilePath(Path groupListFilePath) {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" requireNonNull(groupListFilePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" this.groupListFilePath \u003d groupListFilePath;","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":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"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 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":"Ryan-Reno"},"content":" \u0026\u0026 contactListFilePath.equals(otherUserPrefs.contactListFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" return Objects.hash(guiSettings, contactListFilePath);","lastModifiedDate":"2024-03-12"},{"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 String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":" sb.append(\"\\nLocal data file location : \" + contactListFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Ryan-Reno":10,"-":80,"ivan24004":8}},{"path":"src/main/java/seedu/address/model/coursemate/ContainsKeywordPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"benson1029"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"benson1029"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"benson1029"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"benson1029"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"benson1029"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"benson1029"},"content":" * Tests that a {@code CourseMate}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"benson1029"},"content":"public class ContainsKeywordPredicate implements Predicate\u003cCourseMate\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"benson1029"},"content":" private final String keyword;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"benson1029"},"content":" public ContainsKeywordPredicate(String keyword) {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"benson1029"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"benson1029"},"content":" public boolean test(CourseMate courseMate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"benson1029"},"content":" // TODO: Handle matches of groups.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"benson1029"},"content":" return StringUtil.containsIgnoreCase(courseMate.getName().fullName, this.keyword)","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"benson1029"},"content":" || courseMate.getSkills().stream().anyMatch(skill -\u003e skill.skillName.contentEquals(this.keyword));","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"benson1029"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"benson1029"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"benson1029"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"benson1029"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"benson1029"},"content":" if (!(other instanceof ContainsKeywordPredicate)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"benson1029"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate otherContainsKeywordsPredicate \u003d (ContainsKeywordPredicate) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"benson1029"},"content":" return keyword.contentEquals(otherContainsKeywordsPredicate.keyword);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"benson1029"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"benson1029"},"content":" return new ToStringBuilder(this).add(\"keyword\", keyword).toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"benson1029":44}},{"path":"src/main/java/seedu/address/model/coursemate/CourseMate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":" * Represents a CourseMate in the contact list.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"public class CourseMate {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" private final Set\u003cSkill\u003e skills \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":" public CourseMate(Name name, Phone phone, Email email, Set\u003cSkill\u003e skills) {","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"yuhinarita"},"content":" requireAllNonNull(name, phone, email, skills);","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" this.skills.addAll(skills);","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" * Returns an immutable skill set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" public Set\u003cSkill\u003e getSkills() {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" return Collections.unmodifiableSet(skills);","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" * Returns true if both course mates have the same name.","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" * This defines a weaker notion of equality between two course mates.","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" public boolean isSameCourseMate(CourseMate otherCourseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" if (otherCourseMate \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"Ryan-Reno"},"content":" return otherCourseMate !\u003d null","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" \u0026\u0026 otherCourseMate.getName().equals(getName());","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" * Returns true if both course mates have the same identity and data fields.","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" * This defines a stronger notion of equality between two course mates.","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" if (!(other instanceof CourseMate)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate otherCourseMate \u003d (CourseMate) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" return name.equals(otherCourseMate.name)","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":" \u0026\u0026 phone.equals(otherCourseMate.phone)","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" \u0026\u0026 email.equals(otherCourseMate.email)","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" \u0026\u0026 skills.equals(otherCourseMate.skills);","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"yuhinarita"},"content":" return Objects.hash(name, phone, email, skills);","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":" .add(\"skills\", skills)","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"yuhinarita":3,"Ryan-Reno":24,"-":82}},{"path":"src/main/java/seedu/address/model/coursemate/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Represents a CourseMate\u0027s email in the contact list.","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":2,"-":77}},{"path":"src/main/java/seedu/address/model/coursemate/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Represents a CourseMate\u0027s name in the contact list.","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":2,"-":65}},{"path":"src/main/java/seedu/address/model/coursemate/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Represents a CourseMate\u0027s phone number in the contact list.","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":2,"-":59}},{"path":"src/main/java/seedu/address/model/coursemate/QueryableCourseMate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.exceptions.IllegalQueryableParameterException;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":" * Class that can represent either an index or a name.","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":" * This is used to query a CourseMate from a list.","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"public class QueryableCourseMate {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":" private final Index index;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":" private final Name name;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" * Basic constructor that takes an {@code Index} object.","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" public QueryableCourseMate(Index index) {","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" requireNonNull(index);","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" this.name \u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" * Basic constructor that takes an {@code Name} object.","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" public QueryableCourseMate(Name name) {","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" this.index \u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" * Attempts to access this object as an index.","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" * Throws a {@code IllegalQueryableParameterException} if it can\u0027t be done.","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public Index getIndex() throws IllegalQueryableParameterException {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" if (index \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" throw new IllegalQueryableParameterException(\"Index\");","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" return index;","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" * Attempts to access this object as a name.","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" * Throws a {@code IllegalQueryableParameterException} if it can\u0027t be done.","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" public Name getName() throws IllegalQueryableParameterException {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" throw new IllegalQueryableParameterException(\"Name\");","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" return name;","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" * Checks if the value is a {@code Index}. Mutually exclusive with {@code isName}.","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" public boolean isIndex() {","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" return index !\u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" * Checks if the value is a {@code Name}. Mutually exclusive with {@code isIndex}.","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" public boolean isName() {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" return name !\u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" if (isName()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":" return name.toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"ivan24004"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" return \"#\" + index.getOneBased();","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":" if (!(other instanceof QueryableCourseMate)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate otherQueryable \u003d (QueryableCourseMate) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":" if (isName() \u0026\u0026 otherQueryable.isName()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ivan24004"},"content":" return name.equals(otherQueryable.name);","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"ivan24004"},"content":" if (isIndex() \u0026\u0026 otherQueryable.isIndex()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ivan24004"},"content":" return index.equals(otherQueryable.index);","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"ivan24004"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":" if (isName()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ivan24004"},"content":" return name.hashCode();","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ivan24004"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":" return index.hashCode();","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"ivan24004":106}},{"path":"src/main/java/seedu/address/model/coursemate/UniqueCourseMateList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.exceptions.DuplicateCourseMateException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" * A list of course mates that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" * A courseMate is considered unique by comparing using","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" * {@code CourseMate#isSameCourseMate(CourseMate)}.","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" * As such, adding and updating of course mates uses CourseMate#isSameCourseMate(CourseMate)","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":" * for equality so as to ensure that the courseMate being added or updated is","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" * unique in terms of identity in the UniqueCourseMateList.","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" * However, the removal of a courseMate uses CourseMate#equals(Object) so","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" * as to ensure that the courseMate with exactly the same fields will be removed.","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" * @see CourseMate#isSameCourseMate(CourseMate)","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":"public class UniqueCourseMateList implements Iterable\u003cCourseMate\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" private final ObservableList\u003cCourseMate\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" private final ObservableList\u003cCourseMate\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" * Returns true if the list contains an equivalent courseMate as the given argument.","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" public boolean contains(CourseMate toCheck) {","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" return internalList.stream().anyMatch(toCheck::isSameCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" * Adds a courseMate to the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" * The courseMate must not already exist in the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" public void add(CourseMate toAdd) {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" throw new DuplicateCourseMateException();","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" * Finds a courseMate in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" * The courseMate must already exist in the list. Throws an exception otherwise.","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" public List\u003cCourseMate\u003e findCourseMate(Name name) {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" ArrayList\u003cCourseMate\u003e arrayList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" boolean foundCourseMate \u003d false;","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" for (CourseMate courseMate: internalList) {","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"Ryan-Reno"},"content":" if (courseMate.getName().toString().contains(name.toString())) {","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" arrayList.add(courseMate);","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" foundCourseMate \u003d true;","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" if (foundCourseMate) {","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":" return arrayList;","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" throw new CourseMateNotFoundException();","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":" * Replaces the courseMate {@code target} in the list with {@code editedCourseMate}.","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" * The courseMate identity of {@code editedCourseMate}","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" * must not be the same as another existing courseMate in the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate(CourseMate target, CourseMate editedCourseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" requireAllNonNull(target, editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" throw new CourseMateNotFoundException();","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":" if (!target.isSameCourseMate(editedCourseMate) \u0026\u0026 contains(editedCourseMate)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":" throw new DuplicateCourseMateException();","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"Ryan-Reno"},"content":" internalList.set(index, editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"Ryan-Reno"},"content":" * Removes the equivalent courseMate from the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"Ryan-Reno"},"content":" * The courseMate must exist in the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":" public void remove(CourseMate toRemove) {","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"Ryan-Reno"},"content":" throw new CourseMateNotFoundException();","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMates(UniqueCourseMateList replacement) {","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"Ryan-Reno"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"Ryan-Reno"},"content":" * Replaces the contents of this list with {@code courseMates}.","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"Ryan-Reno"},"content":" * {@code courseMates} must not contain duplicate courseMates.","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMates(List\u003cCourseMate\u003e courseMates) {","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"Ryan-Reno"},"content":" requireAllNonNull(courseMates);","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"Ryan-Reno"},"content":" if (!courseMatesAreUnique(courseMates)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"Ryan-Reno"},"content":" throw new DuplicateCourseMateException();","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"Ryan-Reno"},"content":" internalList.setAll(courseMates);","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"Ryan-Reno"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"Ryan-Reno"},"content":" public ObservableList\u003cCourseMate\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"Ryan-Reno"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"Ryan-Reno"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"Ryan-Reno"},"content":" public Iterator\u003cCourseMate\u003e iterator() {","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"Ryan-Reno"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"Ryan-Reno"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"Ryan-Reno"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"Ryan-Reno"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"Ryan-Reno"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"Ryan-Reno"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"Ryan-Reno"},"content":" if (!(other instanceof UniqueCourseMateList)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"Ryan-Reno"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"Ryan-Reno"},"content":" UniqueCourseMateList otherUniqueCourseMateList \u003d (UniqueCourseMateList) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"Ryan-Reno"},"content":" return internalList.equals(otherUniqueCourseMateList.internalList);","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"Ryan-Reno"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"Ryan-Reno"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"Ryan-Reno"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"Ryan-Reno"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"Ryan-Reno"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"Ryan-Reno"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"Ryan-Reno"},"content":" * Returns true if {@code courseMates} contains only unique courseMates.","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"Ryan-Reno"},"content":" private boolean courseMatesAreUnique(List\u003cCourseMate\u003e courseMates) {","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"Ryan-Reno"},"content":" for (int i \u003d 0; i \u003c courseMates.size() - 1; i++) {","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"Ryan-Reno"},"content":" for (int j \u003d i + 1; j \u003c courseMates.size(); j++) {","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"Ryan-Reno"},"content":" if (courseMates.get(i).isSameCourseMate(courseMates.get(j))) {","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"Ryan-Reno"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"Ryan-Reno"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Ryan-Reno":166,"ivan24004":13}},{"path":"src/main/java/seedu/address/model/coursemate/exceptions/CourseMateNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate.exceptions;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":" * Signals that the operation is unable to find the specified courseMate.","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"public class CourseMateNotFoundException extends RuntimeException {","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":" * Basic empty constructor.","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":" public CourseMateNotFoundException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" * Constructor that builds an exception using a {@code label}.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" * This is the string used to find the CourseMate.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" public CourseMateNotFoundException(String label) {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" super(\"Could not find a CourseMate that matches: \" + label);","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"Ryan-Reno":5,"ivan24004":16}},{"path":"src/main/java/seedu/address/model/coursemate/exceptions/DuplicateCourseMateException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate.exceptions;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":" * Signals that the operation will result in duplicate Course Mates","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":" * (Course Mates are considered duplicates if they have the same identity).","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"public class DuplicateCourseMateException extends RuntimeException {","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":" public DuplicateCourseMateException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":" super(\"Operation would result in duplicate course mates\");","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Ryan-Reno":11}},{"path":"src/main/java/seedu/address/model/coursemate/exceptions/IllegalQueryableParameterException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.model.coursemate.exceptions;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":" * Signals that a QueryableCourseMate was used as the wrong type.","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"public class IllegalQueryableParameterException extends RuntimeException {","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":" public IllegalQueryableParameterException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":" super(\"The QueryableCourseMate is of another type than the accessed type\");","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":" public IllegalQueryableParameterException(String wrongType) {","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":" super(String.format(\"The QueryableCourseMate is of not of type: %s\", wrongType));","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"ivan24004":14}},{"path":"src/main/java/seedu/address/model/group/ContainsGroupKeywordPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":" * Tests that a {@code CourseMate}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":"public class ContainsGroupKeywordPredicate implements Predicate\u003cGroup\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"content":" private final String keyword;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yuhinarita"},"content":" public ContainsGroupKeywordPredicate(String keyword) {","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":" public boolean test(Group group) {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":" return StringUtil.containsIgnoreCase(group.getName().fullName, this.keyword);","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"yuhinarita"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":" if (!(other instanceof ContainsGroupKeywordPredicate)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"yuhinarita"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"yuhinarita"},"content":" ContainsGroupKeywordPredicate otherContainsKeywordsPredicate \u003d (ContainsGroupKeywordPredicate) other;","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"yuhinarita"},"content":" return keyword.contentEquals(otherContainsKeywordsPredicate.keyword);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"yuhinarita"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"yuhinarita"},"content":" return new ToStringBuilder(this).add(\"keyword\", keyword).toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"yuhinarita":42}},{"path":"src/main/java/seedu/address/model/group/Group.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.UniqueCourseMateList;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":" * Represents a Group in the group list. All its members must be unique.","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"public class Group extends UniqueCourseMateList {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"yuhinarita"},"content":" private final Name name;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" * A basic constructor for a group that also initializes an iterable collection as a list of members.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" * @param name the name of the group","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" * @param members the Collection of members to initialize the group","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" public Group(Name name, Iterable\u003cCourseMate\u003e members) {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" super();","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" requireNonNull(members);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" members.forEach(this::add);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" * A basic constructor for a group.","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" * @param name the name of the group","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" public Group(Name name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" super();","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" public Name getName() {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" return name;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"yuhinarita"},"content":" * Returns true if both groups have the same name.","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"yuhinarita"},"content":" * This defines a weaker notion of equality between two groups.","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"yuhinarita"},"content":" public boolean isSameGroup(Group otherGroup) {","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" return otherGroup.name.equals(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" * Returns true if both groups have the same name and their members satisfy equality as well.","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"yuhinarita"},"content":" * This defines a stronger notion of equality between two groups.","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"yuhinarita"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" if (!(other instanceof Group)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"yuhinarita"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" Group otherGroup \u003d (Group) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" return otherGroup.name.equals(name) \u0026\u0026 super.equals(other);","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"ivan24004"},"content":" return \"Name: \" + name + \", \" + super.toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":" return name.hashCode() ^ super.hashCode();","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"yuhinarita":37,"ivan24004":44}},{"path":"src/main/java/seedu/address/model/group/UniqueGroupList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.exceptions.DuplicateGroupException;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.exceptions.GroupNotFoundException;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":" * A list of groups that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":" * A group is considered unique by comparing using","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":" * {@code Group#isSameGroup(Group)}.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":" * As such, adding and updating of course mates uses Group#isSameGroup(Group)","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":" * for equality so as to ensure that the group being added or updated is","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"yuhinarita"},"content":" * unique in terms of identity in the UniqueGroupList.","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" * However, the removal of a group uses Group#equals(Object) so","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" * as to ensure that the group with exactly the same fields will be removed.","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"yuhinarita"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"yuhinarita"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"yuhinarita"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":" * @see Group#isSameGroup(Group)","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"yuhinarita"},"content":"public class UniqueGroupList implements Iterable\u003cGroup\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"yuhinarita"},"content":" private final ObservableList\u003cGroup\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"yuhinarita"},"content":" private final ObservableList\u003cGroup\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"yuhinarita"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"yuhinarita"},"content":" * Returns true if the list contains an equivalent group as the given argument.","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"yuhinarita"},"content":" public boolean contains(Group toCheck) {","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"yuhinarita"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"yuhinarita"},"content":" return internalList.stream().anyMatch(toCheck::isSameGroup);","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" * Finds a group with a given name. Throws an error if the group couldn\u0027t be found.","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" public Group findGroup(Name name) throws GroupNotFoundException {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" for (Group group: internalList) {","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" if (group.getName().equals(name)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" return group;","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" throw new GroupNotFoundException();","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"yuhinarita"},"content":" * Adds a group to the list.","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"yuhinarita"},"content":" * The group must not already exist in the list.","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"yuhinarita"},"content":" public void add(Group toAdd) {","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" throw new DuplicateGroupException();","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"yuhinarita"},"content":" * Replaces the group {@code target} in the list with {@code editedGroup}.","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"yuhinarita"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"yuhinarita"},"content":" * The group identity of {@code editedGroup}","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"yuhinarita"},"content":" * must not be the same as another existing group in the list.","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"yuhinarita"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" requireAllNonNull(target, editedGroup);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":" throw new GroupNotFoundException();","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":" if (!target.isSameGroup(editedGroup) \u0026\u0026 contains(editedGroup)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" throw new DuplicateGroupException();","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":" internalList.set(index, editedGroup);","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"yuhinarita"},"content":" * Removes the equivalent group from the list.","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"yuhinarita"},"content":" * The group must exist in the list.","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"yuhinarita"},"content":" public void remove(Group toRemove) {","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" throw new GroupNotFoundException();","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"yuhinarita"},"content":" public void setGroups(UniqueGroupList replacement) {","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"yuhinarita"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"yuhinarita"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"yuhinarita"},"content":" * Replaces the contents of this list with {@code groups}.","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"yuhinarita"},"content":" * {@code groups} must not contain duplicate groups.","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"yuhinarita"},"content":" public void setGroups(List\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"yuhinarita"},"content":" requireAllNonNull(groups);","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"yuhinarita"},"content":" if (!groupsAreUnique(groups)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"yuhinarita"},"content":" throw new DuplicateGroupException();","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"yuhinarita"},"content":" internalList.setAll(groups);","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"yuhinarita"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"yuhinarita"},"content":" public ObservableList\u003cGroup\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"yuhinarita"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"yuhinarita"},"content":" public Iterator\u003cGroup\u003e iterator() {","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"yuhinarita"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"yuhinarita"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"ivan24004"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"ivan24004"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"ivan24004"},"content":" if (!(other instanceof UniqueGroupList)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"yuhinarita"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"ivan24004"},"content":" UniqueGroupList otherUniqueGroupList \u003d (UniqueGroupList) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"ivan24004"},"content":" return otherUniqueGroupList.internalList.equals(internalList);","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"yuhinarita"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"yuhinarita"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"yuhinarita"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"yuhinarita"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"yuhinarita"},"content":" * Returns true if {@code groups} contains only unique groups.","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"yuhinarita"},"content":" private boolean groupsAreUnique(List\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-16"},{"lineNumber":160,"author":{"gitId":"yuhinarita"},"content":" for (int i \u003d 0; i \u003c groups.size() - 1; i++) {","lastModifiedDate":"2024-03-16"},{"lineNumber":161,"author":{"gitId":"yuhinarita"},"content":" for (int j \u003d i + 1; j \u003c groups.size(); j++) {","lastModifiedDate":"2024-03-16"},{"lineNumber":162,"author":{"gitId":"yuhinarita"},"content":" if (groups.get(i).isSameGroup(groups.get(j))) {","lastModifiedDate":"2024-03-16"},{"lineNumber":163,"author":{"gitId":"yuhinarita"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":164,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":165,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":166,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":167,"author":{"gitId":"yuhinarita"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":168,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":169,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"yuhinarita":125,"ivan24004":44}},{"path":"src/main/java/seedu/address/model/group/exceptions/DuplicateGroupException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.model.group.exceptions;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":" * Signals that the operation will result in duplicate Groups","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":" * (Groups are considered duplicates if they have the same identity).","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"public class DuplicateGroupException extends RuntimeException {","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":" public DuplicateGroupException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":" super(\"Operation would result in duplicate groups\");","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"yuhinarita":11}},{"path":"src/main/java/seedu/address/model/group/exceptions/GroupNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.model.group.exceptions;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":" * Signals that the operation is unable to find the specified group.","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"public class GroupNotFoundException extends RuntimeException {","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"yuhinarita":7}},{"path":"src/main/java/seedu/address/model/skill/Skill.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":" * Represents a Skill in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidSkillName(String)}","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"public class Skill {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" public final String skillName;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":" * Constructs a {@code Skill}.","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" * @param skillName A valid skill name.","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" public Skill(String skillName) {","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(skillName);","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" this.skillName \u003d skillName;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" if (!(other instanceof Skill)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" Skill otherSkill \u003d (Skill) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" return skillName.equals(otherSkill.skillName);","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" return skillName.hashCode();","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" return \u0027[\u0027 + skillName + \u0027]\u0027;","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Ryan-Reno":50}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" * Contains utility methods for populating {@code ContactList} with sample data.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public static CourseMate[] getSampleCourseMates() {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" return new CourseMate[] {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":" new CourseMate(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" getSkillSet(\"friends\")),","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" new CourseMate(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" getSkillSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" new CourseMate(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" getSkillSet(\"neighbours\")),","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" new CourseMate(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" getSkillSet(\"family\")),","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" new CourseMate(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" getSkillSet(\"classmates\")),","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" new CourseMate(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" getSkillSet(\"colleagues\"))","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" public static ReadOnlyContactList getSampleContactList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" ContactList sampleAb \u003d new ContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" for (CourseMate sampleCourseMate : getSampleCourseMates()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" sampleAb.addCourseMate(sampleCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" * Returns a skill set containing the list of strings given.","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" public static Set\u003cSkill\u003e getSkillSet(String... strings) {","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" .map(Skill::new)","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Ryan-Reno":29,"-":24}},{"path":"src/main/java/seedu/address/storage/ContactListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":" * Represents a storage for {@link ContactList}.","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"public interface ContactListStorage {","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":" Path getContactListFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" * Returns ContactList data as a {@link ReadOnlyContactList}.","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" Optional\u003cReadOnlyContactList\u003e readContactList() throws DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" * @see #getContactListFilePath()","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" Optional\u003cReadOnlyContactList\u003e readContactList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" * Saves the given {@link ReadOnlyContactList} to the storage.","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" * @param contactList cannot be null.","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" void saveContactList(ReadOnlyContactList contactList) throws IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" * @see #saveContactList(ReadOnlyContactList)","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" void saveContactList(ReadOnlyContactList contactList, Path filePath) throws IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Ryan-Reno":46}},{"path":"src/main/java/seedu/address/storage/GroupListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ReadOnlyGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":" * Represents a storage for {@link GroupList}.","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"public interface GroupListStorage {","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" Path getGroupListFilePath();","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" * Returns GroupList data as a {@link ReadOnlyGroupList}.","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" Optional\u003cReadOnlyGroupList\u003e readGroupList() throws DataLoadingException;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" * @see #getGroupListFilePath()","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" Optional\u003cReadOnlyGroupList\u003e readGroupList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" * Saves the given {@link ReadOnlyGroupList} to the storage.","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" * @param groupList cannot be null.","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" void saveGroupList(ReadOnlyGroupList groupList) throws IOException;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" * @see #saveGroupList(ReadOnlyGroupList)","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" void saveGroupList(ReadOnlyGroupList groupList, Path filePath) throws IOException;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":44}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedCourseMate.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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" * Jackson-friendly version of {@link CourseMate}.","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"class JsonAdaptedCourseMate {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"CourseMate\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"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":"Ryan-Reno"},"content":" private final List\u003cJsonAdaptedSkill\u003e skills \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" * Constructs a {@code JsonAdaptedCourseMate} with the given courseMate details.","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" public JsonAdaptedCourseMate(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"yuhinarita"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" @JsonProperty(\"skills\") List\u003cJsonAdaptedSkill\u003e skills) {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" if (skills !\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" this.skills.addAll(skills);","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-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":"Ryan-Reno"},"content":" * Converts a given {@code CourseMate} into this class for Jackson use.","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" public JsonAdaptedCourseMate(CourseMate source) {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" skills.addAll(source.getSkills().stream()","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" .map(JsonAdaptedSkill::new)","lastModifiedDate":"2024-03-12"},{"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":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" * Converts this Jackson-friendly adapted courseMate object into the model\u0027s {@code CourseMate} object.","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted courseMate.","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMate toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" final List\u003cSkill\u003e courseMateSkills \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" for (JsonAdaptedSkill skill : skills) {","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" courseMateSkills.add(skill.toModelType());","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":" final Set\u003cSkill\u003e modelSkills \u003d new HashSet\u003c\u003e(courseMateSkills);","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"yuhinarita"},"content":" return new CourseMate(modelName, modelPhone, modelEmail, modelSkills);","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"yuhinarita":2,"Ryan-Reno":25,"-":70}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedGroup.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" * Jackson-friendly version of {@link Group}.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"public class JsonAdaptedGroup {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Group\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" private final String name;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" private final List\u003cJsonAdaptedCourseMate\u003e members \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" * Constructs a {@code JsonAdaptedGroup} with the given group details.","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" public JsonAdaptedGroup(@JsonProperty(\"name\") String name,","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" @JsonProperty(\"members\") List\u003cJsonAdaptedCourseMate\u003e members) {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" if (members !\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" this.members.addAll(members);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" * Converts a given {@code Group} into this class for Jackson use.","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" public JsonAdaptedGroup(Group source) {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" members.addAll(source.asUnmodifiableObservableList().stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" .map(JsonAdaptedCourseMate::new)","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" * Converts this Jackson-friendly adapted group object into the model\u0027s {@code Group} object.","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted group.","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" public Group toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" final List\u003cCourseMate\u003e modelMembers \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" for (JsonAdaptedCourseMate courseMate: this.members) {","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" modelMembers.add(courseMate.toModelType());","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" Name modelName \u003d new Name(name);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" return new Group(modelName, modelMembers);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":66}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedSkill.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" * Jackson-friendly version of {@link Skill}.","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"class JsonAdaptedSkill {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":" private final String skillName;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" * Constructs a {@code JsonAdaptedSkill} with the given {@code skillName}.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":" @JsonCreator","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" public JsonAdaptedSkill(String skillName) {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":" this.skillName \u003d skillName;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" * Converts a given {@code Skill} into this class for Jackson use.","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" public JsonAdaptedSkill(Skill source) {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" skillName \u003d source.skillName;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" @JsonValue","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" public String getSkillName() {","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" return skillName;","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" * Converts this Jackson-friendly adapted skill object into the model\u0027s {@code Skill} object.","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted skill.","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" public Skill toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" return new Skill(skillName);","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Ryan-Reno":45}},{"path":"src/main/java/seedu/address/storage/JsonContactListStorage.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":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" * A class to access ContactList data stored as a json file on the hard disk.","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"public class JsonContactListStorage implements ContactListStorage {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonContactListStorage.class);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public JsonContactListStorage(Path filePath) {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public Path getContactListFilePath() {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public Optional\u003cReadOnlyContactList\u003e readContactList() throws DataLoadingException {","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" return readContactList(filePath);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Similar to {@link #readContactList()}.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public Optional\u003cReadOnlyContactList\u003e readContactList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" Optional\u003cJsonSerializableContactList\u003e jsonContactList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" filePath, JsonSerializableContactList.class);","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" if (!jsonContactList.isPresent()) {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" return Optional.of(jsonContactList.get().toModelType());","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void saveContactList(ReadOnlyContactList contactList) throws IOException {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" saveContactList(contactList, filePath);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Similar to {@link #saveContactList(ReadOnlyContactList)}.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void saveContactList(ReadOnlyContactList contactList, Path filePath) throws IOException {","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(contactList);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" JsonUtil.saveJsonFile(new JsonSerializableContactList(contactList), filePath);","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":20,"-":60}},{"path":"src/main/java/seedu/address/storage/JsonGroupListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ReadOnlyGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" * A class to access GroupList data stored as a json file on the hard disk.","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"public class JsonGroupListStorage implements GroupListStorage {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonGroupListStorage.class);","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" private Path filePath;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" public JsonGroupListStorage(Path filePath) {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" public Path getGroupListFilePath() {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" return filePath;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" public Optional\u003cReadOnlyGroupList\u003e readGroupList() throws DataLoadingException {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" return readGroupList(filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" public Optional\u003cReadOnlyGroupList\u003e readGroupList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" Optional\u003cJsonSerializableGroupList\u003e jsonGroupList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" filePath, JsonSerializableGroupList.class);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" if (jsonGroupList.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" return Optional.of(jsonGroupList.get().toModelType());","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" public void saveGroupList(ReadOnlyGroupList groupList) throws IOException {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" saveGroupList(groupList, filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" public void saveGroupList(ReadOnlyGroupList groupList, Path filePath) throws IOException {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" requireNonNull(groupList);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" JsonUtil.saveJsonFile(new JsonSerializableGroupList(groupList), filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":71}},{"path":"src/main/java/seedu/address/storage/JsonSerializableContactList.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":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" * An Immutable ContactList that is serializable to JSON format.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"@JsonRootName(value \u003d \"contactlist\")","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"class JsonSerializableContactList {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" public static final String MESSAGE_DUPLICATE_COURSE_MATE \u003d \"Course mates list contains duplicate courseMate(s).\";","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" private final List\u003cJsonAdaptedCourseMate\u003e courseMates \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" * Constructs a {@code JsonSerializableContactList} with the given course mates.","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" public JsonSerializableContactList(@JsonProperty(\"courseMates\") List\u003cJsonAdaptedCourseMate\u003e courseMates) {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" this.courseMates.addAll(courseMates);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Converts a given {@code ReadOnlyContactList} into this class for Jackson use.","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableContactList}.","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" public JsonSerializableContactList(ReadOnlyContactList source) {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" courseMates.addAll(source.getCourseMateList()","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" .stream()","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" .map(JsonAdaptedCourseMate::new)","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Converts this contact list into the model\u0027s {@code ContactList} object.","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" public ContactList toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" ContactList contactList \u003d new ContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" for (JsonAdaptedCourseMate jsonAdaptedCourseMate : courseMates) {","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMate \u003d jsonAdaptedCourseMate.toModelType();","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" if (contactList.hasCourseMate(courseMate)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_COURSE_MATE);","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" contactList.addCourseMate(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" return contactList;","lastModifiedDate":"2024-03-12"},{"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"}],"authorContributionMap":{"Ryan-Reno":27,"-":36}},{"path":"src/main/java/seedu/address/storage/JsonSerializableGroupList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ReadOnlyGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" * An Immutable GroupList that is serializable to JSON format.","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"@JsonRootName(value \u003d \"groupList\")","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"public class JsonSerializableGroupList {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_DUPLICATE_GROUP \u003d \"Group list contains duplicate group(s).\";","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" private final List\u003cJsonAdaptedGroup\u003e groups \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" * Constructs a {@code JsonSerializableGroupList} with the given course mates.","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" @JsonCreator","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" public JsonSerializableGroupList(@JsonProperty(\"groups\") List\u003cJsonAdaptedGroup\u003e groups) {","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" this.groups.addAll(groups);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" * Converts a given {@code ReadOnlyGroupList} into this class for Jackson use.","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableGroupList}.","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public JsonSerializableGroupList(ReadOnlyGroupList source) {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" groups.addAll(source.getGroupList()","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" .stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" .map(JsonAdaptedGroup::new)","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" * Converts this contact list into the model\u0027s {@code GroupList} object.","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" public GroupList toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" GroupList groupList \u003d new GroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" for (JsonAdaptedGroup jsonAdaptedGroup : groups) {","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" Group group \u003d jsonAdaptedGroup.toModelType();","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" if (groupList.hasGroup(group)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_GROUP);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" groupList.addGroup(group);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" return groupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":61}},{"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":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ReadOnlyGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-25"},{"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 Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"public interface Storage extends ContactListStorage, GroupListStorage, UserPrefsStorage {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" Path getContactListFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" Optional\u003cReadOnlyContactList\u003e readContactList() throws DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" void saveContactList(ReadOnlyContactList contactList) throws IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" Path getGroupListFilePath();","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" Optional\u003cReadOnlyGroupList\u003e readGroupList() throws DataLoadingException;","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" void saveGroupList(ReadOnlyGroupList groupList) throws IOException;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Ryan-Reno":4,"-":28,"ivan24004":10}},{"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":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ReadOnlyGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" * Manages storage of ContactList data in local storage.","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":" private ContactListStorage contactListStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" private GroupListStorage groupListStorage;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" * Creates a {@code StorageManager} with the given {@code ContactListStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" public StorageManager(ContactListStorage contactListStorage,","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" UserPrefsStorage userPrefsStorage,","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" GroupListStorage groupListStorage) {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" this.contactListStorage \u003d contactListStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" this.groupListStorage \u003d groupListStorage;","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ContactList 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-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" public Path getContactListFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" return contactListStorage.getContactListFilePath();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public Optional\u003cReadOnlyContactList\u003e readContactList() throws DataLoadingException {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" return readContactList(contactListStorage.getContactListFilePath());","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public Optional\u003cReadOnlyContactList\u003e readContactList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" return contactListStorage.readContactList(filePath);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void saveContactList(ReadOnlyContactList contactList) throws IOException {","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":" saveContactList(contactList, contactListStorage.getContactListFilePath());","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void saveContactList(ReadOnlyContactList contactList, Path filePath) throws IOException {","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":" contactListStorage.saveContactList(contactList, filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d GroupList 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-20"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" public Path getGroupListFilePath() {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":" return groupListStorage.getGroupListFilePath();","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":" public Optional\u003cReadOnlyGroupList\u003e readGroupList() throws DataLoadingException {","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"ivan24004"},"content":" return readGroupList(groupListStorage.getGroupListFilePath());","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ivan24004"},"content":" public Optional\u003cReadOnlyGroupList\u003e readGroupList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":" return groupListStorage.readGroupList(filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ivan24004"},"content":" public void saveGroupList(ReadOnlyGroupList groupList) throws IOException {","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":" saveGroupList(groupList, groupListStorage.getGroupListFilePath());","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"ivan24004"},"content":" public void saveGroupList(ReadOnlyGroupList groupList, Path filePath) throws IOException {","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"ivan24004"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"ivan24004"},"content":" groupListStorage.saveGroupList(groupList, filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Ryan-Reno":16,"-":63,"ivan24004":33}},{"path":"src/main/java/seedu/address/ui/CourseMateCard.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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":" * An UI component that displays information of a {@code CourseMate}.","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"public class CourseMateCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" private static final String FXML \u003d \"CourseMateListCard.fxml\";","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on ContactList level 4\u003c/a\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" public final CourseMate courseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" private FlowPane skills;","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" * Creates a {@code CourseMateCode} with the given {@code CourseMate} and index to display.","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMateCard(CourseMate courseMate, int displayedIndex) {","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" this.courseMate \u003d courseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"benson1029"},"content":" id.setText(\"#\" + displayedIndex + \" \");","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" name.setText(courseMate.getName().fullName);","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" phone.setText(courseMate.getPhone().value);","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" email.setText(courseMate.getEmail().value);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" courseMate.getSkills().stream()","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" .sorted(Comparator.comparing(skill -\u003e skill.skillName))","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" .forEach(skill -\u003e skills.getChildren().add(new Label(skill.skillName)));","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Ryan-Reno":16,"benson1029":1,"-":39}},{"path":"src/main/java/seedu/address/ui/CourseMateDetailPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"benson1029"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"benson1029"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"benson1029"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"benson1029"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"benson1029"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"benson1029"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"benson1029"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"benson1029"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"benson1029"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"benson1029"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"benson1029"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"benson1029"},"content":" * An UI component that displays detailed information of a {@code CourseMate}.","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"benson1029"},"content":"public class CourseMateDetailPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"benson1029"},"content":" private static final String FXML \u003d \"CourseMateDetailPanel.fxml\";","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"benson1029"},"content":" private final Logger logger \u003d LogsCenter.getLogger(CourseMateDetailPanel.class);","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"benson1029"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"benson1029"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"benson1029"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"benson1029"},"content":" private Label name;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"benson1029"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"benson1029"},"content":" private Label id;","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"benson1029"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"benson1029"},"content":" private Label phone;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"benson1029"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"benson1029"},"content":" private Label email;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"benson1029"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"benson1029"},"content":" private FlowPane skills;","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"benson1029"},"content":" * Creates a {@code CourseMateDetailPanel} with the given {@code CourseMate}.","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"benson1029"},"content":" public CourseMateDetailPanel(CourseMate courseMate) {","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":" super(FXML);","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":" loadCourseMate(courseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"benson1029"},"content":" * Changes the {@code CourseMateDetailPanel} to display the given {@code CourseMate}.","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"benson1029"},"content":" public void loadCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"benson1029"},"content":" id.setText(\"## \");","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"benson1029"},"content":" name.setText(courseMate.getName().fullName);","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"benson1029"},"content":" phone.setText(courseMate.getPhone().value);","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"benson1029"},"content":" email.setText(courseMate.getEmail().value);","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"benson1029"},"content":" skills.getChildren().clear();","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"benson1029"},"content":" courseMate.getSkills().stream()","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"benson1029"},"content":" .sorted(Comparator.comparing(skill -\u003e skill.skillName))","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"benson1029"},"content":" .forEach(skill -\u003e skills.getChildren().add(new Label(skill.skillName)));","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"benson1029":55}},{"path":"src/main/java/seedu/address/ui/CourseMateListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"benson1029"},"content":"import javafx.event.EventHandler;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"benson1029"},"content":"import javafx.scene.input.KeyCode;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"benson1029"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"benson1029"},"content":"import javafx.scene.input.MouseEvent;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" * Panel containing the list of course mates.","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"public class CourseMateListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":" private static final String FXML \u003d \"CourseMateListPanel.fxml\";","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" private final Logger logger \u003d LogsCenter.getLogger(CourseMateListPanel.class);","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" @FXML","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" private ListView\u003cCourseMate\u003e courseMateListView;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"benson1029"},"content":" * Creates a {@code CourseMateListPanel} with the given {@code ObservableList}","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"benson1029"},"content":" * and {@code CourseMateDetailPanel}.","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"benson1029"},"content":" public CourseMateListPanel(ObservableList\u003cCourseMate\u003e courseMateList,","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"benson1029"},"content":" MainWindow mainWindow) {","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" super(FXML);","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" courseMateListView.setItems(courseMateList);","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" courseMateListView.setCellFactory(listView -\u003e new CourseMateListViewCell());","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"benson1029"},"content":" courseMateListView.setOnMouseClicked(","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"benson1029"},"content":" new CourseMateListClickHandler(courseMateListView, mainWindow));","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":" courseMateListView.setOnKeyPressed(","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":" new CourseMateListPressHandler(courseMateListView, mainWindow));","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code CourseMate} using a {@code CourseMateCard}.","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" class CourseMateListViewCell extends ListCell\u003cCourseMate\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" protected void updateItem(CourseMate courseMate, boolean empty) {","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" super.updateItem(courseMate, empty);","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" if (empty || courseMate \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" setText(null);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" } else {","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" setGraphic(new CourseMateCard(courseMate, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"benson1029"},"content":"class CourseMateListClickHandler implements EventHandler\u003cMouseEvent\u003e {","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"benson1029"},"content":" private ListView\u003cCourseMate\u003e courseMateListView;","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"benson1029"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"benson1029"},"content":" public CourseMateListClickHandler(ListView\u003cCourseMate\u003e courseMateListView,","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"benson1029"},"content":" MainWindow mainWindow) {","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"benson1029"},"content":" this.courseMateListView \u003d courseMateListView;","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"benson1029"},"content":" this.mainWindow \u003d mainWindow;","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"benson1029"},"content":" public void handle(MouseEvent event) {","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"benson1029"},"content":" if (event.getClickCount() \u003d\u003d 2) {","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"benson1029"},"content":" CourseMate selectedCourseMate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"benson1029"},"content":" courseMateListView.getSelectionModel().getSelectedItem();","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"benson1029"},"content":" mainWindow.handleCourseMateListSelect(selectedCourseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"benson1029"},"content":"class CourseMateListPressHandler implements EventHandler\u003cKeyEvent\u003e {","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"benson1029"},"content":" private ListView\u003cCourseMate\u003e courseMateListView;","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"benson1029"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"benson1029"},"content":" public CourseMateListPressHandler(ListView\u003cCourseMate\u003e courseMateListView,","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"benson1029"},"content":" MainWindow mainWindow) {","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"benson1029"},"content":" this.courseMateListView \u003d courseMateListView;","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"benson1029"},"content":" this.mainWindow \u003d mainWindow;","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"benson1029"},"content":" public void handle(KeyEvent event) {","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"benson1029"},"content":" if (event.getCode().equals(KeyCode.ENTER)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"benson1029"},"content":" CourseMate selectedCourseMate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"benson1029"},"content":" courseMateListView.getSelectionModel().getSelectedItem();","lastModifiedDate":"2024-03-15"},{"lineNumber":96,"author":{"gitId":"benson1029"},"content":" mainWindow.handleCourseMateListSelect(selectedCourseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":99,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"Ryan-Reno":47,"benson1029":52}},{"path":"src/main/java/seedu/address/ui/GroupListCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":" * An UI component that displays information of a {@code Group}.","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":"public class GroupListCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":" private static final String FXML \u003d \"GroupListCard.fxml\";","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":" private final Group group;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"yuhinarita"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":" private Label name;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" private FlowPane groupMembers;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"yuhinarita"},"content":" * Creates a {@code GroupCard} with the given {@code Group}.","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"yuhinarita"},"content":" public GroupListCard(Group group) {","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"yuhinarita"},"content":" super(FXML);","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"yuhinarita"},"content":" this.group \u003d group;","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"yuhinarita"},"content":" name.setText(group.getName().fullName);","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" group.asUnmodifiableObservableList().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yuhinarita"},"content":" .sorted(Comparator.comparing(courseMate -\u003e courseMate.getName().fullName))","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"yuhinarita"},"content":" .forEach(courseMate -\u003e groupMembers.getChildren().add(new Label(courseMate.getName().fullName)));","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"yuhinarita":38,"ivan24004":1}},{"path":"src/main/java/seedu/address/ui/GroupListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":" * Panel containing the list of groups.","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":"public class GroupListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":" private static final String FXML \u003d \"GroupListPanel.fxml\";","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":" private final Logger logger \u003d LogsCenter.getLogger(GroupListPanel.class);","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":" private ListView\u003cGroup\u003e groupListView;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" * Creates a {@code GroupListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" * @param groupList","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"yuhinarita"},"content":" public GroupListPanel(ObservableList\u003cGroup\u003e groupList) {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"yuhinarita"},"content":" super(FXML);","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":" groupListView.setItems(groupList);","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"yuhinarita"},"content":" groupListView.setCellFactory(listView -\u003e new GroupListViewCell());","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"yuhinarita"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Group} using a {@code GroupCard}.","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"yuhinarita"},"content":" class GroupListViewCell extends ListCell\u003cGroup\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"yuhinarita"},"content":" protected void updateItem(Group group, boolean empty) {","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"yuhinarita"},"content":" super.updateItem(group, empty);","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"yuhinarita"},"content":" if (empty || group \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"yuhinarita"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"yuhinarita"},"content":" setText(null);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"yuhinarita"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"yuhinarita"},"content":" setGraphic(new GroupListCard(group).getRoot());","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"yuhinarita":50}},{"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":"benson1029"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-15"},{"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":"Ryan-Reno"},"content":" private CourseMateListPanel courseMateListPanel;","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"benson1029"},"content":" private CourseMateDetailPanel courseMateDetailPanel;","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"yuhinarita"},"content":" private GroupListPanel groupListPanel;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"benson1029"},"content":" private StackPane courseMateListPanelPlaceholder;","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"benson1029"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"benson1029"},"content":" private StackPane courseMateDetailPanelPlaceholder;","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"yuhinarita"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"yuhinarita"},"content":" private StackPane groupListPanelPlaceholder;","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-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":"benson1029"},"content":" courseMateListPanel \u003d new CourseMateListPanel(logic.getFilteredCourseMateList(), this);","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"benson1029"},"content":" courseMateListPanelPlaceholder.getChildren().add(courseMateListPanel.getRoot());","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"benson1029"},"content":" courseMateDetailPanel \u003d new CourseMateDetailPanel(logic.getFilteredCourseMateList().get(0));","lastModifiedDate":"2024-03-15"},{"lineNumber":126,"author":{"gitId":"Ryan-Reno"},"content":" logic.setRecentlyProcessedCourseMate(logic.getFilteredCourseMateList().get(0));","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"benson1029"},"content":" courseMateDetailPanelPlaceholder.getChildren().add(courseMateDetailPanel.getRoot());","lastModifiedDate":"2024-03-15"},{"lineNumber":128,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"yuhinarita"},"content":" groupListPanel \u003d new GroupListPanel(logic.getFilteredGroupList());","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"yuhinarita"},"content":" groupListPanelPlaceholder.getChildren().add(groupListPanel.getRoot());","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":133,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":135,"author":{"gitId":"Ryan-Reno"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getContactListFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":139,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":148,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":182,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMateListPanel getCourseMateListPanel() {","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"Ryan-Reno"},"content":" return courseMateListPanel;","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"benson1029"},"content":" if (commandResult.isShowCourseMate()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":206,"author":{"gitId":"benson1029"},"content":" courseMateDetailPanel.loadCourseMate(logic.getRecentlyProcessedCourseMate());","lastModifiedDate":"2024-03-15"},{"lineNumber":207,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":208,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":212,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":213,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":216,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":217,"author":{"gitId":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":218,"author":{"gitId":"benson1029"},"content":" * Handles selection change in the course mate list panel.","lastModifiedDate":"2024-03-15"},{"lineNumber":219,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":220,"author":{"gitId":"benson1029"},"content":" public void handleCourseMateListSelect(CourseMate courseMate) {","lastModifiedDate":"2024-03-15"},{"lineNumber":221,"author":{"gitId":"benson1029"},"content":" logic.setRecentlyProcessedCourseMate(courseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":222,"author":{"gitId":"benson1029"},"content":" courseMateDetailPanel.loadCourseMate(courseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":223,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"yuhinarita":6,"Ryan-Reno":5,"benson1029":23,"-":190}},{"path":"src/main/resources/view/CourseMateDetailPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"benson1029"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"benson1029"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"benson1029"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"benson1029"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"benson1029"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"benson1029"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"benson1029"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"benson1029"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"benson1029"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"benson1029"},"content":"\u003cHBox id\u003d\"cardPane\" styleClass\u003d\"list-cell\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"benson1029"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"benson1029"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"benson1029"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"300\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"benson1029"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"benson1029"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\" styleClass\u003d\"detail-card\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"benson1029"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"benson1029"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"benson1029"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"benson1029"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"benson1029"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"detail_big_label\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"benson1029"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"benson1029"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"benson1029"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"benson1029"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"benson1029"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"benson1029"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"detail_big_label\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"benson1029"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"benson1029"},"content":" \u003cFlowPane fx:id\u003d\"skills\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"benson1029"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"benson1029"},"content":" \u003cLabel styleClass\u003d\"detail_small_label\" text\u003d\"Phone number: \" minWidth\u003d\"180\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"benson1029"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"detail_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"benson1029"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"benson1029"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"benson1029"},"content":" \u003cLabel styleClass\u003d\"detail_small_label\" text\u003d\"Email address: \" minWidth\u003d\"180\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"benson1029"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"detail_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"benson1029"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"benson1029"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"benson1029":41}},{"path":"src/main/resources/view/CourseMateListCard.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":"benson1029"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"300\" /\u003e","lastModifiedDate":"2024-03-15"},{"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":"Ryan-Reno"},"content":" \u003cFlowPane fx:id\u003d\"skills\" /\u003e","lastModifiedDate":"2024-03-12"},{"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":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Ryan-Reno":1,"benson1029":1,"-":33}},{"path":"src/main/resources/view/CourseMateListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":" \u003cListView fx:id\u003d\"courseMateListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Ryan-Reno":1,"-":7}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"benson1029"},"content":".detail-card {","lastModifiedDate":"2024-03-15"},{"lineNumber":136,"author":{"gitId":"benson1029"},"content":" -fx-border-radius: 10 10 10 10;","lastModifiedDate":"2024-03-15"},{"lineNumber":137,"author":{"gitId":"benson1029"},"content":" -fx-border-color: white;","lastModifiedDate":"2024-03-15"},{"lineNumber":138,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-15"},{"lineNumber":139,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":140,"author":{"gitId":"benson1029"},"content":".detail_big_label {","lastModifiedDate":"2024-03-15"},{"lineNumber":141,"author":{"gitId":"benson1029"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"benson1029"},"content":" -fx-font-size: 24px;","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"benson1029"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-15"},{"lineNumber":145,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":146,"author":{"gitId":"benson1029"},"content":".detail_small_label {","lastModifiedDate":"2024-03-15"},{"lineNumber":147,"author":{"gitId":"benson1029"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2024-03-15"},{"lineNumber":148,"author":{"gitId":"benson1029"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2024-03-15"},{"lineNumber":149,"author":{"gitId":"benson1029"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-15"},{"lineNumber":150,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-15"},{"lineNumber":151,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":159,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":162,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","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-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","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":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-color: black;","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":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","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:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":251,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","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:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","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":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"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 \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":299,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":301,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":302,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":303,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":305,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":315,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":317,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":319,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":320,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":321,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":323,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":325,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":327,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":332,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":335,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":337,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":343,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":344,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":345,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":346,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":350,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":353,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"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":"benson1029"},"content":"#skills {","lastModifiedDate":"2024-03-21"},{"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":"benson1029"},"content":"#skills .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":363,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":364,"author":{"gitId":"benson1029"},"content":" -fx-background-color: #7c3176;","lastModifiedDate":"2024-03-21"},{"lineNumber":365,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":366,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":367,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":368,"author":{"gitId":"benson1029"},"content":" -fx-font-size: 12;","lastModifiedDate":"2024-03-21"},{"lineNumber":369,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":370,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":371,"author":{"gitId":"benson1029"},"content":"#groupMembers {","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":"benson1029"},"content":"#groupMembers .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":377,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":378,"author":{"gitId":"benson1029"},"content":" -fx-background-color: #2a6b33;","lastModifiedDate":"2024-03-21"},{"lineNumber":379,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-03-21"},{"lineNumber":380,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-03-21"},{"lineNumber":381,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-03-21"},{"lineNumber":382,"author":{"gitId":"benson1029"},"content":" -fx-font-size: 14;","lastModifiedDate":"2024-03-21"},{"lineNumber":383,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"benson1029":27,"-":356}},{"path":"src/main/resources/view/GroupListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"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-16"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"yuhinarita"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"300\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"yuhinarita"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":" \u003cFlowPane fx:id\u003d\"groupMembers\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"yuhinarita"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"yuhinarita":27}},{"path":"src/main/resources/view/GroupListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":" \u003cListView fx:id\u003d\"groupListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"yuhinarita":1,"-":7}},{"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":"benson1029"},"content":"\u003c?import javafx.scene.control.Label?\u003e \u003c!-- temporary --\u003e","lastModifiedDate":"2024-03-15"},{"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":"benson1029"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"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":"benson1029"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"benson1029"},"content":" \u003cVBox fx:id\u003d\"courseMateList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"595\" prefWidth\u003d\"595\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-15"},{"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":"benson1029"},"content":" \u003cStackPane fx:id\u003d\"courseMateListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-15"},{"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":"benson1029"},"content":" \u003cVBox styleClass\u003d\"pane-with-border\" minWidth\u003d\"595\" prefWidth\u003d\"595\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"benson1029"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"benson1029"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"benson1029"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"benson1029"},"content":" \u003cStackPane fx:id\u003d\"courseMateDetailPanelPlaceholder\"/\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"yuhinarita"},"content":" \u003cStackPane fx:id\u003d\"groupListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"benson1029"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"benson1029"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"yuhinarita":1,"benson1029":14,"-":59}},{"path":"src/test/java/seedu/address/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core.index;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" final Index fifthCourseMateIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(fifthCourseMateIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(fifthCourseMateIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(fifthCourseMateIndex.equals(fifthCourseMateIndex));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(fifthCourseMateIndex.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(fifthCourseMateIndex.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(fifthCourseMateIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Ryan-Reno":7,"-":55}},{"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":"Ryan-Reno"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.AMY;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-18"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.storage.JsonContactListStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":"import seedu.address.storage.JsonGroupListStorage;","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" JsonContactListStorage contactListStorage \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" new JsonContactListStorage(temporaryFolder.resolve(\"contactList.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" JsonGroupListStorage groupListStorage \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" new JsonGroupListStorage(temporaryFolder.resolve(\"groupList.json\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" StorageManager storage \u003d new StorageManager(contactListStorage, userPrefsStorage, groupListStorage);","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":" String deleteCommand \u003d \"delete #9\";","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" public void getFilteredCourseMateList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredCourseMateList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"yuhinarita"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"yuhinarita"},"content":" public void getFilteredGroupList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"yuhinarita"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredGroupList().remove(0));","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"benson1029"},"content":" public void getRecentlyProcessedCourseMate_newLogicManager_returnsNull() {","lastModifiedDate":"2024-03-15"},{"lineNumber":101,"author":{"gitId":"benson1029"},"content":" assertEquals(null, logic.getRecentlyProcessedCourseMate());","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":103,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":105,"author":{"gitId":"benson1029"},"content":" public void getRecentlyProcessedCourseMate_setToAmy_returnsAmy() {","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"benson1029"},"content":" model.setRecentlyProcessedCourseMate(AMY);","lastModifiedDate":"2024-03-15"},{"lineNumber":107,"author":{"gitId":"benson1029"},"content":" assertEquals(AMY, logic.getRecentlyProcessedCourseMate());","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":111,"author":{"gitId":"benson1029"},"content":" public void setRecentlyProcessedCourseMate_setToAmy_returnsAmy() {","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"benson1029"},"content":" logic.setRecentlyProcessedCourseMate(AMY);","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"benson1029"},"content":" assertEquals(AMY, logic.getRecentlyProcessedCourseMate());","lastModifiedDate":"2024-03-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":123,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":152,"author":{"gitId":"ivan24004"},"content":" Model expectedModel \u003d new ModelManager(model.getContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":163,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":169,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"Ryan-Reno"},"content":" // Inject LogicManager with an ContactListStorage that throws the IOException e when saving","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"Ryan-Reno"},"content":" JsonContactListStorage contactListStorage \u003d new JsonContactListStorage(prefPath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"Ryan-Reno"},"content":" public void saveContactList(ReadOnlyContactList contactList, Path filePath)","lastModifiedDate":"2024-03-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":189,"author":{"gitId":"ivan24004"},"content":" JsonGroupListStorage groupListStorage \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"ivan24004"},"content":" new JsonGroupListStorage(temporaryFolder.resolve(\"ExceptionGroupList.json\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"ivan24004"},"content":" StorageManager storage \u003d new StorageManager(contactListStorage, userPrefsStorage, groupListStorage);","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":193,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":195,"author":{"gitId":"Ryan-Reno"},"content":" // Triggers the saveContactList method by executing an add command","lastModifiedDate":"2024-03-12"},{"lineNumber":196,"author":{"gitId":"tzaph"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + \" \" + VALID_NAME_AMY + \" \" + PHONE_DESC_AMY","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"yuhinarita"},"content":" + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":198,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate expectedCourseMate \u003d new CourseMateBuilder(AMY).withSkills().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":200,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.addCourseMate(expectedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"yuhinarita":6,"Ryan-Reno":18,"benson1029":15,"tzaph":2,"-":151,"ivan24004":11}},{"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":"benson1029"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertRecentlyProcessedCourseMateEdited;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"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-15"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_newCourseMate_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate validCourseMate \u003d new CourseMateBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" Model expectedModel \u003d new ModelManager(model.getContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.addCourseMate(validCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandSuccess(new AddCommand(validCourseMate), model,","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":" AddCommand.MESSAGE_SUCCESS, expectedModel, true);","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, validCourseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_duplicateCourseMate_throwsCommandException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMateInList \u003d model.getContactList().getCourseMateList().get(0);","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandFailure(new AddCommand(courseMateInList), model,","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" AddCommand.MESSAGE_DUPLICATE_COURSE_MATE);","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-15"},{"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":{"Ryan-Reno":11,"benson1029":4,"-":32,"ivan24004":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":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.ALICE;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"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.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ReadOnlyGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.exceptions.GroupNotFoundException;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void constructor_nullCourseMate_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void execute_courseMateAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" ModelStubAcceptingCourseMateAdded modelStub \u003d new ModelStubAcceptingCourseMateAdded();","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate validCourseMate \u003d new CourseMateBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" CommandResult commandResult \u003d new AddCommand(validCourseMate).execute(modelStub);","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"benson1029"},"content":" assertEquals(AddCommand.MESSAGE_SUCCESS, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(Arrays.asList(validCourseMate), modelStub.courseMatesAdded);","lastModifiedDate":"2024-03-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":"Ryan-Reno"},"content":" public void execute_duplicateCourseMate_throwsCommandException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate validCourseMate \u003d new CourseMateBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" AddCommand addCommand \u003d new AddCommand(validCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" ModelStub modelStub \u003d new ModelStubWithCourseMate(validCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" AddCommand.MESSAGE_DUPLICATE_COURSE_MATE, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" CourseMate alice \u003d new CourseMateBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate bob \u003d new CourseMateBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" // different courseMate -\u003e returns false","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public Path getContactListFilePath() {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void setContactListFilePath(Path contactListFilePath) {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void addCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void setContactList(ReadOnlyContactList contactList) {","lastModifiedDate":"2024-03-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":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"Ryan-Reno"},"content":" public ReadOnlyContactList getContactList() {","lastModifiedDate":"2024-03-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":"Ryan-Reno"},"content":" public boolean hasCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void deleteCourseMate(CourseMate target) {","lastModifiedDate":"2024-03-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":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate(CourseMate target, CourseMate editedCourseMate) {","lastModifiedDate":"2024-03-12"},{"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":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"ivan24004"},"content":" * Returns the user prefs\u0027 contact list file path.","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"ivan24004"},"content":" public Path getGroupListFilePath() {","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"ivan24004"},"content":" * Sets the user prefs\u0027 contact list file path.","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"ivan24004"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"ivan24004"},"content":" * @param groupListFilePath","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"ivan24004"},"content":" public void setGroupListFilePath(Path groupListFilePath) {","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"ivan24004"},"content":" * Replaces contact list data with the data in {@code groupList}.","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"ivan24004"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"ivan24004"},"content":" * @param groupList","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"ivan24004"},"content":" public void setGroupList(ReadOnlyGroupList groupList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"ivan24004"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"ivan24004"},"content":" * Returns the GroupList","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"ivan24004"},"content":" public ReadOnlyGroupList getGroupList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"ivan24004"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"Ryan-Reno"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"Ryan-Reno"},"content":" public List\u003cCourseMate\u003e findCourseMate(QueryableCourseMate queryableCourseMate) {","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"ivan24004"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"ivan24004"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"ivan24004"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":202,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"ivan24004"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-03-18"},{"lineNumber":204,"author":{"gitId":"ivan24004"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":205,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":206,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":207,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":208,"author":{"gitId":"ivan24004"},"content":" public void deleteGroup(Group target) {","lastModifiedDate":"2024-03-18"},{"lineNumber":209,"author":{"gitId":"ivan24004"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":210,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"ivan24004"},"content":" public Group findGroup(Name name) throws GroupNotFoundException {","lastModifiedDate":"2024-03-18"},{"lineNumber":214,"author":{"gitId":"ivan24004"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":215,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":216,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":218,"author":{"gitId":"ivan24004"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"ivan24004"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":220,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":222,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":223,"author":{"gitId":"Ryan-Reno"},"content":" public ObservableList\u003cCourseMate\u003e getFilteredCourseMateList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":227,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":228,"author":{"gitId":"Ryan-Reno"},"content":" public void updateFilteredCourseMateList(Predicate\u003cCourseMate\u003e predicate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":231,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":232,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":233,"author":{"gitId":"yuhinarita"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-03-16"},{"lineNumber":234,"author":{"gitId":"yuhinarita"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":235,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":236,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":237,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":238,"author":{"gitId":"yuhinarita"},"content":" public void updateFilteredGroupList(Predicate\u003cGroup\u003e predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":239,"author":{"gitId":"yuhinarita"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":240,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":241,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":242,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":243,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":244,"author":{"gitId":"benson1029"},"content":" public CourseMate getRecentlyProcessedCourseMate() {","lastModifiedDate":"2024-03-15"},{"lineNumber":245,"author":{"gitId":"benson1029"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-15"},{"lineNumber":246,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":247,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":248,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":249,"author":{"gitId":"benson1029"},"content":" public void setRecentlyProcessedCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-15"},{"lineNumber":250,"author":{"gitId":"benson1029"},"content":" // does nothing","lastModifiedDate":"2024-03-15"},{"lineNumber":251,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":254,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":255,"author":{"gitId":"Ryan-Reno"},"content":" * A Model stub that contains a single courseMate.","lastModifiedDate":"2024-03-12"},{"lineNumber":256,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":257,"author":{"gitId":"Ryan-Reno"},"content":" private class ModelStubWithCourseMate extends ModelStub {","lastModifiedDate":"2024-03-12"},{"lineNumber":258,"author":{"gitId":"Ryan-Reno"},"content":" private final CourseMate courseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":260,"author":{"gitId":"Ryan-Reno"},"content":" ModelStubWithCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":261,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":262,"author":{"gitId":"Ryan-Reno"},"content":" this.courseMate \u003d courseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":263,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":265,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":266,"author":{"gitId":"Ryan-Reno"},"content":" public boolean hasCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":267,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":268,"author":{"gitId":"Ryan-Reno"},"content":" return this.courseMate.isSameCourseMate(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":270,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":272,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":273,"author":{"gitId":"Ryan-Reno"},"content":" * A Model stub that always accept the courseMate being added.","lastModifiedDate":"2024-03-12"},{"lineNumber":274,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":275,"author":{"gitId":"Ryan-Reno"},"content":" private class ModelStubAcceptingCourseMateAdded extends ModelStub {","lastModifiedDate":"2024-03-12"},{"lineNumber":276,"author":{"gitId":"Ryan-Reno"},"content":" final ArrayList\u003cCourseMate\u003e courseMatesAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":278,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":279,"author":{"gitId":"Ryan-Reno"},"content":" public boolean hasCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":280,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":281,"author":{"gitId":"Ryan-Reno"},"content":" return courseMatesAdded.stream().anyMatch(courseMate::isSameCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":284,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":285,"author":{"gitId":"Ryan-Reno"},"content":" public void addCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":286,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":287,"author":{"gitId":"Ryan-Reno"},"content":" courseMatesAdded.add(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":290,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":291,"author":{"gitId":"Ryan-Reno"},"content":" public ReadOnlyContactList getContactList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":292,"author":{"gitId":"Ryan-Reno"},"content":" return new ContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":294,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"yuhinarita":12,"Ryan-Reno":53,"benson1029":11,"-":159,"ivan24004":61}},{"path":"src/test/java/seedu/address/logic/commands/AddMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_NAME_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_QUERYABLE_SET_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_QUERYABLE_SET_2;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_UNQUERYABLE_SET_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.getTypicalGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" * {@code AddMemberCommand}.","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"public class AddMemberCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" private final Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), getTypicalGroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" private final Model emptyGroupListModel \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" public void constructor_nullParameters_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" new AddMemberCommand(null, null));","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public void execute_nullParameters_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" AddMemberCommand addMemberCommand \u003d new AddMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" addMemberCommand.execute(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" public void execute_groupNotInList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" AddMemberCommand addMemberCommand \u003d new AddMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" assertThrows(CommandException.class, () -\u003e addMemberCommand.execute(emptyGroupListModel));","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" public void execute_groupInListMembersNotInList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" AddMemberCommand addMemberCommand \u003d new AddMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_UNQUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" assertThrows(CommandException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" addMemberCommand.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" public void execute_groupInListMembersNotInGroup_runsNormally() {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" AddMemberCommand addMemberCommand \u003d new AddMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_2);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" assertTrue(model.hasGroup(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e addMemberCommand.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e new DeleteMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_2));","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" public void execute_groupInListMemberInGroup_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" AddMemberCommand addMemberCommand \u003d new AddMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" assertThrows(CommandException.class, () -\u003e addMemberCommand.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":71}},{"path":"src/test/java/seedu/address/logic/commands/AddSkillCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_ADDSKILL_CPP_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_ADDSKILL_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertRecentlyProcessedCourseMateEdited;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showAllCourseMates;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showCourseMateAtIndex;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand.AddSkillDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.AddSkillDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" * Contains integration tests (interaction with the Model) and unit tests for AddSkillCommand.","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":"public class AddSkillCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":" private Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" public void execute_singleSkillUnfilteredList_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":" Index indexLastCourseMate \u003d Index.fromOneBased(model.getFilteredCourseMateList().size());","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" CourseMate lastCourseMate \u003d model.getFilteredCourseMateList().get(indexLastCourseMate.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" CourseMateBuilder courseMateInList \u003d new CourseMateBuilder(lastCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" CourseMate editedCourseMate \u003d courseMateInList.withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor descriptor \u003d new AddSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" AddSkillCommand addSkillCommand \u003d new AddSkillCommand(new QueryableCourseMate(indexLastCourseMate), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" String expectedMessage \u003d AddSkillCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"tzaph"},"content":" expectedModel.setCourseMate(lastCourseMate, editedCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"tzaph"},"content":" assertCommandSuccess(addSkillCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, editedCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" CourseMate courseMateInFilteredList \u003d model.getFilteredCourseMateList()","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":" .get(INDEX_FIRST_COURSE_MATE.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":" CourseMate editedCourseMate \u003d new CourseMateBuilder(courseMateInFilteredList)","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":" AddSkillCommand addSkillCommand \u003d new AddSkillCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE),","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":" new AddSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build());","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" String expectedMessage \u003d AddSkillCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"tzaph"},"content":" expectedModel.setCourseMate(model.getFilteredCourseMateList().get(0), editedCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"tzaph"},"content":" assertCommandSuccess(addSkillCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, editedCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_similarCourseMates() {","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" showAllCourseMates(model, new Name(\"a\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" AddSkillCommand addSkillCommand \u003d new AddSkillCommand(new QueryableCourseMate(new Name(\"a\")),","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":" new AddSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build());","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" String expectedMessage \u003d String.format(Messages.MESSAGE_SIMILAR_COURSE_MATE_NAME, 4);","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(\"a\");","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandSuccess(addSkillCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"tzaph"},"content":" public void execute_invalidCourseMateIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"tzaph"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredCourseMateList().size() + 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor descriptor \u003d new AddSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"tzaph"},"content":" AddSkillCommand addSkillCommand \u003d new AddSkillCommand(new QueryableCourseMate(outOfBoundIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"tzaph"},"content":" assertCommandFailure(addSkillCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"tzaph"},"content":" public void execute_invalidCourseMateNameUnfilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"tzaph"},"content":" Name name \u003d new Name(\"Bob\");","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor descriptor \u003d new AddSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"tzaph"},"content":" AddSkillCommand addSkillCommand \u003d new AddSkillCommand(new QueryableCourseMate(name), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"tzaph"},"content":" assertCommandFailure(addSkillCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"tzaph"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"tzaph"},"content":" * but smaller than size of contact list","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"tzaph"},"content":" public void execute_invalidCourseMateIndexFilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"tzaph"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"tzaph"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"tzaph"},"content":" // ensures that outOfBoundIndex is still in bounds of contact list","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"tzaph"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getContactList().getCourseMateList().size());","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"tzaph"},"content":" AddSkillCommand addSkillCommand \u003d new AddSkillCommand(new QueryableCourseMate(outOfBoundIndex),","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"tzaph"},"content":" new AddSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build());","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"tzaph"},"content":" assertCommandFailure(addSkillCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"tzaph"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"tzaph"},"content":" final AddSkillCommand standardCommand \u003d new AddSkillCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"tzaph"},"content":" new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), DESC_ADDSKILL_JAVA);","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"tzaph"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"tzaph"},"content":" AddSkillCommand.AddSkillDescriptor copyDescriptor \u003d new AddSkillDescriptor(DESC_ADDSKILL_JAVA);","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"tzaph"},"content":" AddSkillCommand commandWithSameValues \u003d new AddSkillCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"tzaph"},"content":" new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), copyDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"tzaph"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"tzaph"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"tzaph"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"tzaph"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"tzaph"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"tzaph"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"tzaph"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"tzaph"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"tzaph"},"content":" assertFalse(standardCommand.equals(new AddSkillCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"tzaph"},"content":" new QueryableCourseMate(INDEX_SECOND_COURSE_MATE), DESC_ADDSKILL_JAVA)));","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"tzaph"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"tzaph"},"content":" assertFalse(standardCommand.equals(","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"tzaph"},"content":" new AddSkillCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), DESC_ADDSKILL_CPP_CSHARP)));","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"tzaph"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"tzaph"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor addSkillDescriptor \u003d new AddSkillDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"tzaph"},"content":" AddSkillCommand addSkillCommand \u003d new AddSkillCommand(new QueryableCourseMate(index), addSkillDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"tzaph"},"content":" String expected \u003d AddSkillCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"tzaph"},"content":" + \"{index\u003d\" + index + \", addSkillDescriptor\u003d\"","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"tzaph"},"content":" + addSkillDescriptor + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"tzaph"},"content":" assertEquals(expected, addSkillCommand.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Ryan-Reno":20,"tzaph":160}},{"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":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_emptyContactList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel, false);","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_nonEmptyContactList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" Model expectedModel \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.setContactList(new ContactList());","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel, false);","lastModifiedDate":"2024-03-15"},{"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":{"Ryan-Reno":5,"benson1029":2,"-":23,"ivan24004":3}},{"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":"-"},"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":"benson1029"},"content":" + \", exit\u003d\" + commandResult.isExit() + \", showCourseMate\u003d\" + commandResult.isShowCourseMate() + \"}\";","lastModifiedDate":"2024-03-15"},{"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":{"benson1029":1,"-":62}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"benson1029"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.AddSkillDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.DeleteSkillDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.EditCourseMateDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"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":"tzaph"},"content":" public static final String VALID_SKILL_CPP \u003d \"C++\";","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" public static final String VALID_SKILL_JAVA \u003d \"Java\";","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":" public static final String VALID_SKILL_CSHARP \u003d \"C#\";","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" public static final String INVALID_NAME_AMPERSAND \u003d \"James\u0026\";","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" public static final String INVALID_PHONE_ALPHABET \u003d \"911a\";","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" public static final String INVALID_EMAIL_MISSING_AT \u003d \"bob!yahoo\";","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + \" \" + VALID_NAME_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + \" \" + VALID_NAME_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + \" \" + VALID_PHONE_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + \" \" + VALID_PHONE_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + \" \" + VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + \" \" + VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" public static final String SKILL_DESC_CPP \u003d \" \" + PREFIX_SKILL + \" \" + VALID_SKILL_CPP;","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":" public static final String SKILL_DESC_CSHARP \u003d \" \" + PREFIX_SKILL + \" \" + VALID_SKILL_CSHARP;","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" public static final String SKILL_DESC_JAVA \u003d \" \" + PREFIX_SKILL + \" \" + VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \" \" + INVALID_NAME_AMPERSAND;","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \" \" + INVALID_PHONE_ALPHABET;","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"tzaph"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \" \" + INVALID_EMAIL_MISSING_AT;","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" public static final EditCommand.EditCourseMateDescriptor DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" public static final EditCommand.EditCourseMateDescriptor DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" public static final AddSkillCommand.AddSkillDescriptor DESC_ADDSKILL_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" public static final AddSkillCommand.AddSkillDescriptor DESC_ADDSKILL_CPP_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" public static final DeleteSkillCommand.DeleteSkillDescriptor DESC_DELSKILL_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":" public static final DeleteSkillCommand.DeleteSkillDescriptor DESC_DELSKILL_CPP_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"Ryan-Reno"},"content":" DESC_AMY \u003d new EditCourseMateDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"yuhinarita"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":" DESC_BOB \u003d new EditCourseMateDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"yuhinarita"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_JAVA, VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":" DESC_ADDSKILL_JAVA \u003d new AddSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"tzaph"},"content":" DESC_ADDSKILL_CPP_CSHARP \u003d new AddSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_CPP).withSkills(VALID_SKILL_CSHARP).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"tzaph"},"content":" DESC_DELSKILL_JAVA \u003d new DeleteSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"tzaph"},"content":" DESC_DELSKILL_CPP_CSHARP \u003d new DeleteSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_CPP).withSkills(VALID_SKILL_CSHARP).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"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":"benson1029"},"content":" Model expectedModel, boolean showCourseMate) {","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"benson1029"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage, false, false, showCourseMate);","lastModifiedDate":"2024-03-15"},{"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":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":114,"author":{"gitId":"benson1029"},"content":" * Confirms that the {@code recentlyProcessedCourseMate} in the model is edited with {@code editedCourseMate}.","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"benson1029"},"content":" public static void assertRecentlyProcessedCourseMateEdited(Model model, CourseMate editedCourseMate) {","lastModifiedDate":"2024-03-15"},{"lineNumber":117,"author":{"gitId":"benson1029"},"content":" assertEquals(editedCourseMate, model.getRecentlyProcessedCourseMate());","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"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":"Ryan-Reno"},"content":" * - the contact list, filtered courseMate list and selected courseMate in {@code actualModel} remain unchanged","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" ContactList expectedContactList \u003d new ContactList(actualModel.getContactList());","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredCourseMateList());","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" assertEquals(expectedContactList, actualModel.getContactList());","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredCourseMateList());","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"author":{"gitId":"Ryan-Reno"},"content":" * Updates {@code model}\u0027s filtered list to show only the courseMate at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"Ryan-Reno"},"content":" * {@code model}\u0027s contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":140,"author":{"gitId":"Ryan-Reno"},"content":" public static void showCourseMateAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredCourseMateList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":143,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMate \u003d model.getFilteredCourseMateList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"Ryan-Reno"},"content":" final String[] splitName \u003d courseMate.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"benson1029"},"content":" model.updateFilteredCourseMateList(new ContainsKeywordPredicate(splitName[0]));","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":147,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(1, model.getFilteredCourseMateList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"Ryan-Reno"},"content":" * Updates {@code model}\u0027s filtered list to show all coursemates with matching {@code targetName} in the","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"Ryan-Reno"},"content":" * {@code model}\u0027s contact list.","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"Ryan-Reno"},"content":" public static void showAllCourseMates(Model model, Name targetName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e courseMate \u003d model.findCourseMate(new QueryableCourseMate(targetName));","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"Ryan-Reno"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"Ryan-Reno"},"content":" targetName.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"Ryan-Reno"},"content":" model.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"yuhinarita":2,"Ryan-Reno":32,"benson1029":11,"tzaph":34,"-":82}},{"path":"src/test/java/seedu/address/logic/commands/CreateGroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_NAME_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_QUERYABLE_SET_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_UNQUERYABLE_SET_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.getTypicalGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" * {@code CreateGroupCommand}.","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":"public class CreateGroupCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" private final Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), getTypicalGroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" private final Model emptyGroupListModel \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" public void constructor_nullParameters_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" new CreateGroupCommand(null, null));","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" public void execute_nullParameters_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" CreateGroupCommand createGroupCommand \u003d new CreateGroupCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" createGroupCommand.execute(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" public void execute_groupInList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" CreateGroupCommand createGroupCommand \u003d new CreateGroupCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" assertTrue(model.hasGroup(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" assertThrows(CommandException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" createGroupCommand.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" public void execute_groupNotInList_runsNormally() {","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" CreateGroupCommand createGroupCommand \u003d new CreateGroupCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e createGroupCommand.execute(emptyGroupListModel));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" public void execute_membersNotInList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" CreateGroupCommand createGroupCommand \u003d new CreateGroupCommand(SAMPLE_GROUP_NAME_1, SAMPLE_UNQUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" assertThrows(CommandException.class, () -\u003e createGroupCommand.execute(emptyGroupListModel));","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":63}},{"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":"benson1029"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertRecentlyProcessedCourseMateEdited;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showAllCourseMates;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showCourseMateAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"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.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" private Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMateToDelete \u003d model.getFilteredCourseMateList().get(INDEX_FIRST_COURSE_MATE.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE));","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"benson1029"},"content":" String expectedMessage \u003d DeleteCommand.MESSAGE_DELETE_COURSE_MATE_SUCCESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.deleteCourseMate(courseMateToDelete);","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, courseMateToDelete);","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_similarCourseMates() {","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" showAllCourseMates(model, new Name(\"a\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new QueryableCourseMate(new Name(\"a\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" String expectedMessage \u003d String.format(Messages.MESSAGE_SIMILAR_COURSE_MATE_NAME, 4);","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(\"a\");","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredCourseMateList().size() + 1);","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new QueryableCourseMate(outOfBoundIndex));","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_invalidNameUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" Name name \u003d new Name(\"Alice Paulines\");","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new QueryableCourseMate(name));","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-20"},{"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_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMateToDelete \u003d model.getFilteredCourseMateList().get(INDEX_FIRST_COURSE_MATE.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE));","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"benson1029"},"content":" String expectedMessage \u003d DeleteCommand.MESSAGE_DELETE_COURSE_MATE_SUCCESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"ivan24004"},"content":" Model expectedModel \u003d new ModelManager(model.getContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.deleteCourseMate(courseMateToDelete);","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Ryan-Reno"},"content":" showNoCourseMate(expectedModel);","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":98,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-15"},{"lineNumber":99,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, courseMateToDelete);","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getContactList().getCourseMateList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new QueryableCourseMate(outOfBoundIndex));","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE));","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(new QueryableCourseMate(INDEX_SECOND_COURSE_MATE));","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":125,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE));","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":134,"author":{"gitId":"Ryan-Reno"},"content":" // different courseMate -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new QueryableCourseMate(targetIndex));","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"Ryan-Reno"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{queryableCourseMateIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":149,"author":{"gitId":"Ryan-Reno"},"content":" private void showNoCourseMate(Model model) {","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"Ryan-Reno"},"content":" model.updateFilteredCourseMateList(p -\u003e false);","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":152,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(model.getFilteredCourseMateList().isEmpty());","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Ryan-Reno":55,"benson1029":9,"-":86,"ivan24004":4}},{"path":"src/test/java/seedu/address/logic/commands/DeleteGroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_NAME_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.getTypicalGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"public class DeleteGroupCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" private final Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), getTypicalGroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" private final Model emptyGroupListModel \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" public void constructor_nullParameters_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" new DeleteGroupCommand(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" public void execute_nullParameters_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" DeleteGroupCommand deleteGroupCommand \u003d new DeleteGroupCommand(SAMPLE_GROUP_NAME_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" deleteGroupCommand.execute(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public void execute_groupInList_runsNormally() {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" DeleteGroupCommand deleteGroupCommand \u003d new DeleteGroupCommand(SAMPLE_GROUP_NAME_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" assertTrue(model.hasGroup(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e deleteGroupCommand.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" public void execute_groupNotInList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" DeleteGroupCommand deleteGroupCommand \u003d new DeleteGroupCommand(SAMPLE_GROUP_NAME_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" assertThrows(CommandException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" deleteGroupCommand.execute(emptyGroupListModel));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":50}},{"path":"src/test/java/seedu/address/logic/commands/DeleteMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"public class DeleteMemberCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" private DeleteMemberCommandParser parser \u003d new DeleteMemberCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" public void parse_validArgs_returnsDeleteMemberCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" Name groupName1 \u003d new Name(\"group 1\");","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" Set\u003cQueryableCourseMate\u003e courseMates1 \u003d new HashSet\u003c\u003e(List.of(","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" new QueryableCourseMate(new Name(\"Bob\"))));","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" DeleteMemberCommand targetCommand \u003d new DeleteMemberCommand(groupName1, courseMates1);","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" assertParseSuccess(parser, \"group 1 -cm Bob\", targetCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" Name groupName2 \u003d new Name(\"group 1\");","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" Set\u003cQueryableCourseMate\u003e courseMates2 \u003d new HashSet\u003c\u003e(List.of(","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" new QueryableCourseMate(new Name(\"Bob\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" new QueryableCourseMate(new Name(\"Alice\"))));","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" assertParseSuccess(parser, \"group 1 -cm Bob -cm Alice\",","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" new DeleteMemberCommand(groupName2, courseMates2));","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public void parse_invalidArgs_returnsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" assertParseFailure(parser, \"group 1\",","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" assertParseFailure(parser, \"group 1 -cm\",","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" assertParseFailure(parser, \"gr@up 1 -cm Bob\",","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":46}},{"path":"src/test/java/seedu/address/logic/commands/DeleteMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_NAME_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_QUERYABLE_SET_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_QUERYABLE_SET_3;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_UNQUERYABLE_SET_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.getTypicalGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" * {@code DeleteMemberCommand}.","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"public class DeleteMemberCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" private final Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), getTypicalGroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" private final Model emptyGroupListModel \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" public void constructor_nullParameters_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" new DeleteMemberCommand(null, null));","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public void execute_nullParameters_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" deleteMemberCommand.execute(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" public void execute_groupNotInList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" DeleteMemberCommand deleteMemberCommand \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" new DeleteMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" assertThrows(CommandException.class, () -\u003e deleteMemberCommand.execute(emptyGroupListModel));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" public void execute_groupInListMembersNotInList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" DeleteMemberCommand deleteMemberCommand \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" new DeleteMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_UNQUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" assertThrows(CommandException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" deleteMemberCommand.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" public void execute_groupInListMembersNotInGroup_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" DeleteMemberCommand deleteMemberCommand \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" new DeleteMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_3);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" assertTrue(model.hasGroup(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" assertThrows(CommandException.class, () -\u003e deleteMemberCommand.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" public void execute_groupInListMemberInGroup_runsNormally() {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" DeleteMemberCommand deleteMemberCommand \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" new DeleteMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e deleteMemberCommand.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":" new AddMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1).execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":76}},{"path":"src/test/java/seedu/address/logic/commands/DeleteSkillCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_DELSKILL_CPP_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_DELSKILL_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertRecentlyProcessedCourseMateEdited;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showAllCourseMates;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showCourseMateAtIndex;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand.DeleteSkillDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.DeleteSkillDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" * Contains integration tests (interaction with the Model) and unit tests for DeleteSkillCommand.","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":"public class DeleteSkillCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":" private Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" public void execute_singleSkillUnfilteredList_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":" CourseMate courseMateToEdit \u003d model.getFilteredCourseMateList().get(INDEX_FIRST_COURSE_MATE.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" CourseMateBuilder courseMateInList \u003d new CourseMateBuilder(courseMateToEdit);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" CourseMate editedCourseMate \u003d courseMateInList.removeSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor descriptor \u003d new DeleteSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand deleteSkillCommand \u003d new DeleteSkillCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" String expectedMessage \u003d DeleteSkillCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"tzaph"},"content":" expectedModel.setCourseMate(courseMateToEdit, editedCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"tzaph"},"content":" assertCommandSuccess(deleteSkillCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, editedCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" CourseMate courseMateInFilteredList \u003d model.getFilteredCourseMateList()","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":" .get(INDEX_FIRST_COURSE_MATE.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":" CourseMate editedCourseMate \u003d new CourseMateBuilder(courseMateInFilteredList)","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" .removeSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand deleteSkillCommand \u003d new DeleteSkillCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE),","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":" new DeleteSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build());","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" String expectedMessage \u003d DeleteSkillCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"tzaph"},"content":" expectedModel.setCourseMate(model.getFilteredCourseMateList().get(0), editedCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"tzaph"},"content":" assertCommandSuccess(deleteSkillCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, editedCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_similarCourseMates() {","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" showAllCourseMates(model, new Name(\"a\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" DeleteSkillCommand deleteSkillCommand \u003d new DeleteSkillCommand(new QueryableCourseMate(new Name(\"a\")),","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":" new DeleteSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build());","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" String expectedMessage \u003d String.format(Messages.MESSAGE_SIMILAR_COURSE_MATE_NAME, 4);","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(\"a\");","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandSuccess(deleteSkillCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"Ryan-Reno"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"tzaph"},"content":" public void execute_invalidCourseMateIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"tzaph"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredCourseMateList().size() + 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor descriptor \u003d new DeleteSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand deleteSkillCommand \u003d new DeleteSkillCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"tzaph"},"content":" new QueryableCourseMate(outOfBoundIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"tzaph"},"content":" assertCommandFailure(deleteSkillCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"tzaph"},"content":" public void execute_invalidCourseMateNameUnfilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"tzaph"},"content":" Name name \u003d new Name(\"Bob\");","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor descriptor \u003d new DeleteSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand deleteSkillCommand \u003d new DeleteSkillCommand(new QueryableCourseMate(name), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"tzaph"},"content":" assertCommandFailure(deleteSkillCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"tzaph"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"tzaph"},"content":" * but smaller than size of contact list","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"tzaph"},"content":" public void execute_invalidCourseMateIndexFilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"tzaph"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"tzaph"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"tzaph"},"content":" // ensures that outOfBoundIndex is still in bounds of contact list","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"tzaph"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getContactList().getCourseMateList().size());","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand deleteSkillCommand \u003d new DeleteSkillCommand(new QueryableCourseMate(outOfBoundIndex),","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"tzaph"},"content":" new DeleteSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build());","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"tzaph"},"content":" assertCommandFailure(deleteSkillCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"tzaph"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"tzaph"},"content":" final DeleteSkillCommand standardCommand \u003d new DeleteSkillCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"tzaph"},"content":" new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), DESC_DELSKILL_JAVA);","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"tzaph"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand.DeleteSkillDescriptor copyDescriptor \u003d new DeleteSkillDescriptor(DESC_DELSKILL_JAVA);","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand commandWithSameValues \u003d new DeleteSkillCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"tzaph"},"content":" new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), copyDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"tzaph"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"tzaph"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"tzaph"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"tzaph"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"tzaph"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"tzaph"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"tzaph"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"tzaph"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"tzaph"},"content":" assertFalse(standardCommand.equals(new DeleteSkillCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"tzaph"},"content":" new QueryableCourseMate(INDEX_SECOND_COURSE_MATE), DESC_DELSKILL_JAVA)));","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"tzaph"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"tzaph"},"content":" assertFalse(standardCommand.equals(","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"tzaph"},"content":" new DeleteSkillCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), DESC_DELSKILL_CPP_CSHARP)));","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"tzaph"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"tzaph"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor deleteSkillDescriptor \u003d new DeleteSkillDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand deleteSkillCommand \u003d new DeleteSkillCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"tzaph"},"content":" new QueryableCourseMate(index), deleteSkillDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"tzaph"},"content":" String expected \u003d DeleteSkillCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"tzaph"},"content":" + \"{index\u003d\" + index + \", deleteSkillDescriptor\u003d\"","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"tzaph"},"content":" + deleteSkillDescriptor + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"tzaph"},"content":" assertEquals(expected, deleteSkillCommand.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Ryan-Reno":19,"tzaph":162}},{"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":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-12"},{"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":"benson1029"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertRecentlyProcessedCourseMateEdited;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showAllCourseMates;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showCourseMateAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.logic.commands.EditCommand.EditCourseMateDescriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-18"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.EditCourseMateDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" private Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"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":"Ryan-Reno"},"content":" CourseMate editedCourseMate \u003d new CourseMateBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand.EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder(editedCourseMate).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"benson1029"},"content":" String expectedMessage \u003d EditCommand.MESSAGE_EDIT_COURSE_MATE_SUCCESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.setCourseMate(model.getFilteredCourseMateList().get(0), editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, editedCourseMate);","lastModifiedDate":"2024-03-15"},{"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":"Ryan-Reno"},"content":" Index indexLastCourseMate \u003d Index.fromOneBased(model.getFilteredCourseMateList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate lastCourseMate \u003d model.getFilteredCourseMateList().get(indexLastCourseMate.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" CourseMateBuilder courseMateInList \u003d new CourseMateBuilder(lastCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate editedCourseMate \u003d courseMateInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Ryan-Reno"},"content":" .withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Ryan-Reno"},"content":" .withPhone(VALID_PHONE_BOB).withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(indexLastCourseMate), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"benson1029"},"content":" String expectedMessage \u003d EditCommand.MESSAGE_EDIT_COURSE_MATE_SUCCESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.setCourseMate(lastCourseMate, editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":79,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, editedCourseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), new EditCourseMateDescriptor());","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate editedCourseMate \u003d model.getFilteredCourseMateList().get(INDEX_FIRST_COURSE_MATE.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"benson1029"},"content":" String expectedMessage \u003d EditCommand.MESSAGE_EDIT_COURSE_MATE_SUCCESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"ivan24004"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, editedCourseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMateInFilteredList \u003d model.getFilteredCourseMateList()","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"Ryan-Reno"},"content":" .get(INDEX_FIRST_COURSE_MATE.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate editedCourseMate \u003d new CourseMateBuilder(courseMateInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE),","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" new EditCourseMateDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":108,"author":{"gitId":"benson1029"},"content":" String expectedMessage \u003d EditCommand.MESSAGE_EDIT_COURSE_MATE_SUCCESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":110,"author":{"gitId":"ivan24004"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"ivan24004"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.setCourseMate(model.getFilteredCourseMateList().get(0), editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":114,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, editedCourseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_similarCourseMates() {","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"Ryan-Reno"},"content":" showAllCourseMates(model, new Name(\"a\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(new Name(\"a\")),","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"Ryan-Reno"},"content":" new EditCourseMateDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"Ryan-Reno"},"content":" String expectedMessage \u003d String.format(Messages.MESSAGE_SIMILAR_COURSE_MATE_NAME, 4);","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"Ryan-Reno"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"Ryan-Reno"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"Ryan-Reno"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(\"a\");","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"Ryan-Reno"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_duplicateCourseMateUnfilteredList_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate firstCourseMate \u003d model.getFilteredCourseMateList().get(INDEX_FIRST_COURSE_MATE.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder(firstCourseMate).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(INDEX_SECOND_COURSE_MATE), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":141,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_duplicateCourseMateFilteredList_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"Ryan-Reno"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"Ryan-Reno"},"content":" // edit courseMate in filtered list into a duplicate in contact list","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMateInList \u003d model.getContactList().getCourseMateList()","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"Ryan-Reno"},"content":" .get(INDEX_SECOND_COURSE_MATE.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE),","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"Ryan-Reno"},"content":" new EditCourseMateDescriptorBuilder(courseMateInList).build());","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":155,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":160,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_invalidCourseMateIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"Ryan-Reno"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredCourseMateList().size() + 1);","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(outOfBoundIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":165,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_invalidCourseMateNameUnfilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"Ryan-Reno"},"content":" Name name \u003d new Name(\"Bob\");","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(name), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"Ryan-Reno"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":181,"author":{"gitId":"Ryan-Reno"},"content":" * but smaller than size of contact list","lastModifiedDate":"2024-03-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":184,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_invalidCourseMateIndexFilteredList_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":185,"author":{"gitId":"Ryan-Reno"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"Ryan-Reno"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":187,"author":{"gitId":"Ryan-Reno"},"content":" // ensures that outOfBoundIndex is still in bounds of contact list","lastModifiedDate":"2024-03-12"},{"lineNumber":188,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getContactList().getCourseMateList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":190,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(outOfBoundIndex),","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"Ryan-Reno"},"content":" new EditCourseMateDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":193,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":194,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":199,"author":{"gitId":"Ryan-Reno"},"content":" final EditCommand standardCommand \u003d new EditCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"Ryan-Reno"},"content":" new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), DESC_AMY);","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":203,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand.EditCourseMateDescriptor copyDescriptor \u003d new EditCourseMateDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":205,"author":{"gitId":"Ryan-Reno"},"content":" new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), copyDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":218,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(standardCommand.equals(new EditCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":219,"author":{"gitId":"Ryan-Reno"},"content":" new QueryableCourseMate(INDEX_SECOND_COURSE_MATE), DESC_AMY)));","lastModifiedDate":"2024-03-20"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":222,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(standardCommand.equals(","lastModifiedDate":"2024-03-20"},{"lineNumber":223,"author":{"gitId":"Ryan-Reno"},"content":" new EditCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), DESC_BOB)));","lastModifiedDate":"2024-03-20"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":229,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor editCourseMateDescriptor \u003d new EditCourseMateDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":230,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(index), editCourseMateDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":231,"author":{"gitId":"Ryan-Reno"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editCourseMateDescriptor\u003d\"","lastModifiedDate":"2024-03-12"},{"lineNumber":232,"author":{"gitId":"Ryan-Reno"},"content":" + editCourseMateDescriptor + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":233,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"Ryan-Reno":98,"benson1029":17,"-":111,"ivan24004":10}},{"path":"src/test/java/seedu/address/logic/commands/EditCourseMateDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"import seedu.address.logic.commands.EditCommand.EditCourseMateDescriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.EditCourseMateDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"public class EditCourseMateDescriptorTest {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" EditCourseMateDescriptor descriptorWithSameValues \u003d new EditCourseMateDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" EditCommand.EditCourseMateDescriptor editedAmy \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" new EditCourseMateDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" editedAmy \u003d new EditCourseMateDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" editedAmy \u003d new EditCourseMateDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" // different skills -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" editedAmy \u003d new EditCourseMateDescriptorBuilder(DESC_AMY).withSkills(VALID_SKILL_JAVA).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":"","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":"Ryan-Reno"},"content":" EditCommand.EditCourseMateDescriptor editCourseMateDescriptor \u003d new EditCommand.EditCourseMateDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" String expected \u003d EditCommand.EditCourseMateDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" + editCourseMateDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" + editCourseMateDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"yuhinarita"},"content":" + editCourseMateDescriptor.getEmail().orElse(null) + \", skills\u003d\"","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" + editCourseMateDescriptor.getSkills().orElse(null) + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expected, editCourseMateDescriptor.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"yuhinarita":1,"Ryan-Reno":17,"-":48}},{"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":"Ryan-Reno"},"content":"import static seedu.address.logic.Messages.MESSAGE_COURSE_MATES_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.CARL;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.FIONA;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-12"},{"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":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-18"},{"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":"benson1029"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-17"},{"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":"ivan24004"},"content":" private Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"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":"benson1029"},"content":" ContainsKeywordPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"benson1029"},"content":" new ContainsKeywordPredicate(\"first\");","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"benson1029"},"content":" new ContainsKeywordPredicate(\"second\");","lastModifiedDate":"2024-03-17"},{"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":"Ryan-Reno"},"content":" // different courseMate -\u003e returns false","lastModifiedDate":"2024-03-12"},{"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":"benson1029"},"content":" public void execute_nonMatchingKeywords_noCourseMateFound() {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" String expectedMessage \u003d String.format(MESSAGE_COURSE_MATES_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate predicate \u003d preparePredicate(\"foo bar\");","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel, false);","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(Collections.emptyList(), model.getFilteredCourseMateList());","lastModifiedDate":"2024-03-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":"benson1029"},"content":" public void execute_commonSubstring_multipleCourseMatesFound() {","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"benson1029"},"content":" String expectedMessage \u003d String.format(MESSAGE_COURSE_MATES_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate predicate \u003d preparePredicate(\"z\");","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel, false);","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"benson1029"},"content":" assertEquals(Arrays.asList(CARL, FIONA), model.getFilteredCourseMateList());","lastModifiedDate":"2024-03-17"},{"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":"benson1029"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(\"keyword\");","lastModifiedDate":"2024-03-17"},{"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":"benson1029"},"content":" * Parses {@code userInput} into a {@code ContainsKeywordsPredicate}.","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"benson1029"},"content":" private ContainsKeywordPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"benson1029"},"content":" return new ContainsKeywordPredicate(userInput.trim());","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Ryan-Reno":9,"benson1029":17,"-":62,"ivan24004":3}},{"path":"src/test/java/seedu/address/logic/commands/FindGroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.logic.Messages.MESSAGE_GROUPS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_1;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_2;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_3;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.testutil.TypicalGroups.getTypicalGroupList;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"yuhinarita"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.ContainsGroupKeywordPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" * Contains integration tests (interaction with the Model) for {@code FindGroupCommand}.","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"yuhinarita"},"content":"public class FindGroupCommandTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"yuhinarita"},"content":" private Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), getTypicalGroupList());","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"yuhinarita"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), getTypicalGroupList());","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"yuhinarita"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"yuhinarita"},"content":" public void equals() {","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"yuhinarita"},"content":" ContainsGroupKeywordPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"yuhinarita"},"content":" new ContainsGroupKeywordPredicate(\"first\");","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"yuhinarita"},"content":" ContainsGroupKeywordPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"yuhinarita"},"content":" new ContainsGroupKeywordPredicate(\"second\");","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"yuhinarita"},"content":" FindGroupCommand findFirstCommand \u003d new FindGroupCommand(firstPredicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"yuhinarita"},"content":" FindGroupCommand findSecondCommand \u003d new FindGroupCommand(secondPredicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"yuhinarita"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"yuhinarita"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"yuhinarita"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"yuhinarita"},"content":" FindGroupCommand findFirstCommandCopy \u003d new FindGroupCommand(firstPredicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"yuhinarita"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"yuhinarita"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"yuhinarita"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"yuhinarita"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"yuhinarita"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"yuhinarita"},"content":" // different groups -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"yuhinarita"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"yuhinarita"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"yuhinarita"},"content":" public void execute_nonMatchingKeywords_noGroupFound() {","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"yuhinarita"},"content":" String expectedMessage \u003d String.format(MESSAGE_GROUPS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"yuhinarita"},"content":" ContainsGroupKeywordPredicate predicate \u003d preparePredicate(\"foo bar\");","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"yuhinarita"},"content":" FindGroupCommand command \u003d new FindGroupCommand(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"yuhinarita"},"content":" expectedModel.updateFilteredGroupList(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"yuhinarita"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel, false);","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"yuhinarita"},"content":" assertEquals(Collections.emptyList(), model.getFilteredGroupList());","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"yuhinarita"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"yuhinarita"},"content":" public void execute_commonSubstring_multipleGroupsFound() {","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"yuhinarita"},"content":" String expectedMessage \u003d String.format(MESSAGE_GROUPS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"yuhinarita"},"content":" ContainsGroupKeywordPredicate predicate \u003d preparePredicate(\"Group\");","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"yuhinarita"},"content":" FindGroupCommand command \u003d new FindGroupCommand(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"yuhinarita"},"content":" expectedModel.updateFilteredGroupList(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"yuhinarita"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel, false);","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"yuhinarita"},"content":" assertEquals(Arrays.asList(SAMPLE_GROUP_1, SAMPLE_GROUP_2, SAMPLE_GROUP_3), model.getFilteredGroupList());","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"yuhinarita"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"yuhinarita"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"yuhinarita"},"content":" ContainsGroupKeywordPredicate predicate \u003d new ContainsGroupKeywordPredicate(\"keyword\");","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"yuhinarita"},"content":" FindGroupCommand findGroupCommand \u003d new FindGroupCommand(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"yuhinarita"},"content":" String expected \u003d FindGroupCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"yuhinarita"},"content":" assertEquals(expected, findGroupCommand.toString());","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"yuhinarita"},"content":" * Parses {@code userInput} into a {@code ContainsKeywordsPredicate}.","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"yuhinarita"},"content":" private ContainsGroupKeywordPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"yuhinarita"},"content":" return new ContainsGroupKeywordPredicate(userInput.trim());","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"yuhinarita":92}},{"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":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showCourseMateAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"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":"ivan24004"},"content":"import seedu.address.model.GroupList;","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":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" expectedModel \u003d new ModelManager(model.getContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel, false);","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel, false);","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Ryan-Reno":4,"benson1029":2,"-":31,"ivan24004":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.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_AMPERSAND;","lastModifiedDate":"2024-03-18"},{"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.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_CPP;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_CSHARP;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_JAVA;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_CPP;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_CSHARP;","lastModifiedDate":"2024-03-19"},{"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":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":" CourseMate expectedCourseMate \u003d new CourseMateBuilder(BOB).withSkills(VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" + SKILL_DESC_CPP, new AddCommand(expectedCourseMate));","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" // multiple skills - all accepted","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate expectedCourseMateMultipleSkills \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" new CourseMateBuilder(BOB).withSkills(VALID_SKILL_CPP, VALID_SKILL_CSHARP).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":" VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" + SKILL_DESC_CSHARP + SKILL_DESC_CPP,","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" new AddCommand(expectedCourseMateMultipleSkills));","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" public void parse_repeatedNonSkillValue_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":" String validExpectedCourseMateString \u003d VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" + SKILL_DESC_CPP;","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, validExpectedCourseMateString + PHONE_DESC_AMY,","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, validExpectedCourseMateString + EMAIL_DESC_AMY,","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":" validExpectedCourseMateString + PHONE_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"yuhinarita"},"content":" + EMAIL_DESC_AMY + NAME_DESC_AMY + validExpectedCourseMateString,","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"tzaph"},"content":" + EMAIL_DESC_BOB + SKILL_DESC_CPP,","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, VALID_NAME_BOB + INVALID_PHONE_DESC + PHONE_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"tzaph"},"content":" + EMAIL_DESC_BOB + SKILL_DESC_CPP,","lastModifiedDate":"2024-03-19"},{"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":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"tzaph"},"content":" + INVALID_EMAIL_DESC + SKILL_DESC_CPP,","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + INVALID_PHONE_DESC","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"tzaph"},"content":" + EMAIL_DESC_BOB + SKILL_DESC_CPP,","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" // zero skills","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate expectedCourseMate \u003d new CourseMateBuilder(AMY).withSkills().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, VALID_NAME_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"Ryan-Reno"},"content":" new AddCommand(expectedCourseMate));","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":117,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, VALID_NAME_BOB + EMAIL_DESC_BOB + VALID_PHONE_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":121,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":124,"author":{"gitId":"tzaph"},"content":" // all prefixes missing, all counted as name","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"yuhinarita"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB,","lastModifiedDate":"2024-03-15"},{"lineNumber":126,"author":{"gitId":"tzaph"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"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_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":131,"author":{"gitId":"tzaph"},"content":" // missing name","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, PHONE_DESC_BOB + EMAIL_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"tzaph"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":136,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, INVALID_NAME_AMPERSAND + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"tzaph"},"content":" + SKILL_DESC_JAVA + SKILL_DESC_CPP, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, VALID_NAME_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"tzaph"},"content":" + SKILL_DESC_JAVA + SKILL_DESC_CPP, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"tzaph"},"content":" + SKILL_DESC_JAVA + SKILL_DESC_CPP, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, INVALID_NAME_AMPERSAND + PHONE_DESC_BOB + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"yuhinarita":2,"Ryan-Reno":16,"tzaph":41,"-":92}},{"path":"src/test/java/seedu/address/logic/parser/AddMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"public class AddMemberCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" private AddMemberCommandParser parser \u003d new AddMemberCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" public void parse_validArgs_returnsAddMemberCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" Name groupName1 \u003d new Name(\"group 1\");","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" Set\u003cQueryableCourseMate\u003e courseMates1 \u003d new HashSet\u003c\u003e(List.of(","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" new QueryableCourseMate(new Name(\"Bob\"))));","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" AddMemberCommand targetCommand \u003d new AddMemberCommand(groupName1, courseMates1);","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" assertParseSuccess(parser, \"group 1 -cm Bob\", targetCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" Name groupName2 \u003d new Name(\"group 1\");","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" Set\u003cQueryableCourseMate\u003e courseMates2 \u003d new HashSet\u003c\u003e(List.of(","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" new QueryableCourseMate(new Name(\"Bob\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" new QueryableCourseMate(new Name(\"Alice\"))));","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" assertParseSuccess(parser, \"group 1 -cm Bob -cm Alice\",","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" new AddMemberCommand(groupName2, courseMates2));","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public void parse_invalidArgs_returnsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" assertParseFailure(parser, \"group 1\",","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" assertParseFailure(parser, \"group 1 -cm\",","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" assertParseFailure(parser, \"gr@up 1 -cm Bob\",","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":46}},{"path":"src/test/java/seedu/address/logic/parser/AddSkillCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_CPP;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_CPP;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand.AddSkillDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.AddSkillDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":"public class AddSkillCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":" private static final String SKILL_EMPTY \u003d \" \" + PREFIX_SKILL;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"tzaph"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSkillCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":" private AddSkillCommandParser parser \u003d new AddSkillCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":" // no index specified","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, SKILL_DESC_CPP, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" // no field specified","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#1\", AddSkillCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" // no index and no field specified","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" // negative index","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#-5\" + SKILL_DESC_CPP, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" // zero index","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#0\" + SKILL_DESC_JAVA, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#1 -i string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"tzaph"},"content":" public void parse_singleSkill_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":" Index targetIndex \u003d INDEX_THIRD_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_DESC_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor descriptor \u003d new AddSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_CSHARP).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" AddSkillCommand expectedCommand \u003d new AddSkillCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":" public void parse_multipleSkills_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" Index targetIndex \u003d INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_DESC_CPP + SKILL_DESC_CSHARP + SKILL_DESC_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor descriptor \u003d new AddSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_CSHARP, VALID_SKILL_JAVA, VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"tzaph"},"content":" AddSkillCommand expectedCommand \u003d new AddSkillCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"tzaph"},"content":" public void parse_duplicateSkills_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"tzaph"},"content":" Index targetIndex \u003d INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"tzaph"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_DESC_CPP + SKILL_DESC_CPP + SKILL_DESC_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor descriptor \u003d new AddSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_JAVA, VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"tzaph"},"content":" AddSkillCommand expectedCommand \u003d new AddSkillCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"tzaph"},"content":" public void parse_emptySkill_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"tzaph"},"content":" Index targetIndex \u003d INDEX_THIRD_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"tzaph"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_EMPTY;","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor descriptor \u003d new AddSkillDescriptorBuilder().withSkills().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"tzaph"},"content":" AddSkillCommand expectedCommand \u003d new AddSkillCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"tzaph":106}},{"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":"Ryan-Reno"},"content":" String argsString \u003d \" some random string /s skill with leading and trailing spaces \";","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":1,"-":149}},{"path":"src/test/java/seedu/address/logic/parser/CreateGroupCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.CreateGroupCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" * Contains unit tests for CreateGroupCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"public class CreateGroupCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" private CreateGroupCommandParser parser \u003d new CreateGroupCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" public void parse_validArgs_returnsCreateGroupCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" Name groupName \u003d new Name(\"group 1\");","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" Set\u003cQueryableCourseMate\u003e courseMates \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" new HashSet\u003c\u003e(List.of(new QueryableCourseMate(new Name(\"Bob\"))));","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" CreateGroupCommand targetCommand \u003d new CreateGroupCommand(groupName, courseMates);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" assertParseSuccess(parser, \"group 1 -cm Bob\", targetCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" assertParseSuccess(parser, \"group 1\", new CreateGroupCommand(groupName, new HashSet\u003c\u003e()));","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":32}},{"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":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":" assertParseSuccess(parser, \"#1\", new DeleteCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" new QueryableCourseMate(INDEX_FIRST_COURSE_MATE)));","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, \"#-1\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"Ryan-Reno":5,"-":29}},{"path":"src/test/java/seedu/address/logic/parser/DeleteGroupCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.DeleteGroupCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":" * Contains unit tests for DeleteGroupCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"public class DeleteGroupCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":" private DeleteGroupCommandParser parser \u003d new DeleteGroupCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" public void parse_validArgs_returnsDeleteGroupCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" Name groupName \u003d new Name(\"group 1\");","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" DeleteGroupCommand targetCommand \u003d new DeleteGroupCommand(groupName);","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" assertParseSuccess(parser, \"group 1\", targetCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":23}},{"path":"src/test/java/seedu/address/logic/parser/DeleteSkillCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_CPP;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_CPP;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand.DeleteSkillDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.DeleteSkillDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":"public class DeleteSkillCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":" private static final String SKILL_EMPTY \u003d \" \" + PREFIX_SKILL;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"tzaph"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSkillCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":" private DeleteSkillCommandParser parser \u003d new DeleteSkillCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":" // no index specified","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, SKILL_DESC_CPP, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" // no field specified","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#1\", DeleteSkillCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" // no index and no field specified","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" // negative index","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#-5\" + SKILL_DESC_CPP, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" // zero index","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#0\" + SKILL_DESC_JAVA, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#1 -i string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"tzaph"},"content":" public void parse_singleSkill_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":" Index targetIndex \u003d INDEX_THIRD_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_DESC_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor descriptor \u003d new DeleteSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_CSHARP).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand expectedCommand \u003d new DeleteSkillCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":" public void parse_multipleSkills_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" Index targetIndex \u003d INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_DESC_CPP + SKILL_DESC_CSHARP + SKILL_DESC_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor descriptor \u003d new DeleteSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_CSHARP, VALID_SKILL_JAVA, VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand expectedCommand \u003d new DeleteSkillCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"tzaph"},"content":" public void parse_duplicateSkills_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"tzaph"},"content":" Index targetIndex \u003d INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"tzaph"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_DESC_CPP + SKILL_DESC_CPP;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor descriptor \u003d new DeleteSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand expectedCommand \u003d new DeleteSkillCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"tzaph"},"content":" public void parse_emptySkill_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"tzaph"},"content":" Index targetIndex \u003d INDEX_THIRD_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"tzaph"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_EMPTY;","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor descriptor \u003d new DeleteSkillDescriptorBuilder().withSkills().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand expectedCommand \u003d new DeleteSkillCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Ryan-Reno":2,"tzaph":106}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_CPP;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_JAVA;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_CPP;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.logic.commands.EditCommand.EditCourseMateDescriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.EditCourseMateDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" private static final String SKILL_EMPTY \u003d \" \" + PREFIX_SKILL;","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" // no field specified using name","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, VALID_NAME_AMY, EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" // no field specified using index","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, \"#1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","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_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, \"#-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, \"#0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, \"#1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, \"#1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, \"#1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, \"#1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, \"#1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_PHONE_AMY,","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" Index targetIndex \u003d INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + PHONE_DESC_BOB + SKILL_DESC_JAVA","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"tzaph"},"content":" + EMAIL_DESC_AMY + NAME_DESC_AMY + SKILL_DESC_CPP;","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"yuhinarita"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_JAVA, VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand expectedCommand \u003d new EditCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","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_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"Ryan-Reno"},"content":" Index targetIndex \u003d INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"Ryan-Reno"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand expectedCommand \u003d new EditCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"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 parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"Ryan-Reno"},"content":" Index targetIndex \u003d INDEX_THIRD_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"Ryan-Reno"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand expectedCommand \u003d new EditCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"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":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"Ryan-Reno"},"content":" userInput \u003d \"#\" + targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"Ryan-Reno"},"content":" descriptor \u003d new EditCourseMateDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"Ryan-Reno"},"content":" expectedCommand \u003d new EditCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"Ryan-Reno"},"content":" userInput \u003d \"#\" + targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"Ryan-Reno"},"content":" descriptor \u003d new EditCourseMateDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"Ryan-Reno"},"content":" expectedCommand \u003d new EditCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":" // skills","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"tzaph"},"content":" userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_DESC_CPP;","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"tzaph"},"content":" descriptor \u003d new EditCourseMateDescriptorBuilder().withSkills(VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"Ryan-Reno"},"content":" expectedCommand \u003d new EditCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"Ryan-Reno"},"content":" // AddCommandParserTest#parse_repeatedNonSkillValue_failure()","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"Ryan-Reno"},"content":" Index targetIndex \u003d INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"Ryan-Reno"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"Ryan-Reno"},"content":" userInput \u003d \"#\" + targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"Ryan-Reno"},"content":" userInput \u003d \"#\" + targetIndex.getOneBased() + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"tzaph"},"content":" + SKILL_DESC_CPP + PHONE_DESC_AMY + EMAIL_DESC_AMY + SKILL_DESC_CPP","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"yuhinarita"},"content":" + PHONE_DESC_BOB + EMAIL_DESC_BOB + SKILL_DESC_JAVA;","lastModifiedDate":"2024-03-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"yuhinarita"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL));","lastModifiedDate":"2024-03-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":165,"author":{"gitId":"Ryan-Reno"},"content":" userInput \u003d \"#\" + targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"yuhinarita"},"content":" + INVALID_PHONE_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"yuhinarita"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL));","lastModifiedDate":"2024-03-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"Ryan-Reno"},"content":" public void parse_resetSkills_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"Ryan-Reno"},"content":" Index targetIndex \u003d INDEX_THIRD_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"Ryan-Reno"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_EMPTY;","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":177,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder().withSkills().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand expectedCommand \u003d new EditCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"yuhinarita":5,"Ryan-Reno":55,"tzaph":7,"-":115}},{"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 org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"benson1029"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"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":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"benson1029"},"content":" new FindCommand(new ContainsKeywordPredicate(\"Alice Bob\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"benson1029":2,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/FindGroupCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.logic.commands.FindGroupCommand;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.ContainsGroupKeywordPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"content":"public class FindGroupCommandParserTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"yuhinarita"},"content":" private FindGroupCommandParser parser \u003d new FindGroupCommandParser();","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"yuhinarita"},"content":" public void parse_validArgs_returnsFindGroupCommand() {","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" FindGroupCommand expectedFindGroupCommand \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" new FindGroupCommand(new ContainsGroupKeywordPredicate(\"CS2101 G01\"));","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"yuhinarita"},"content":" assertParseSuccess(parser, \"CS2101 G01\", expectedFindGroupCommand);","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"yuhinarita"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":" assertParseSuccess(parser, \" \\n CS2101 \\n \\t G01 \\t\", expectedFindGroupCommand);","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"yuhinarita":33}},{"path":"src/test/java/seedu/address/logic/parser/MatchMateParserTest.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":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.CreateGroupCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","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":"benson1029"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.AddSkillDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.DeleteSkillDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.EditCourseMateDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":"public class MatchMateParserTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" private final MatchMateParser parser \u003d new MatchMateParser();","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMate \u003d new CourseMateBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(CourseMateUtil.getAddCommand(courseMate));","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(new AddCommand(courseMate), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" public void parseCommand_addSkill() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" CourseMate courseMate \u003d new CourseMateBuilder().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":" AddSkillCommand.AddSkillDescriptor descriptor \u003d new AddSkillDescriptorBuilder(courseMate).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" AddSkillCommand command \u003d (AddSkillCommand) parser.parseCommand(AddSkillCommand.COMMAND_WORD + \" #\"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" + INDEX_FIRST_COURSE_MATE.getOneBased() + \" \"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":" + CourseMateUtil.getAddSkillDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" assertEquals(new AddSkillCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), descriptor), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","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_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand.COMMAND_WORD + \" #\" + INDEX_FIRST_COURSE_MATE.getOneBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(new DeleteCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE)), command);","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":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" public void parseCommand_deleteSkill() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":" CourseMate courseMate \u003d new CourseMateBuilder().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand.DeleteSkillDescriptor descriptor \u003d new DeleteSkillDescriptorBuilder(courseMate).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand command \u003d (DeleteSkillCommand) parser.parseCommand(DeleteSkillCommand.COMMAND_WORD + \" #\"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" + INDEX_FIRST_COURSE_MATE.getOneBased() + \" \"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":" + CourseMateUtil.getDeleteSkillDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":" assertEquals(new DeleteSkillCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), descriptor), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMate \u003d new CourseMateBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand.EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder(courseMate).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" #\"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" + INDEX_FIRST_COURSE_MATE.getOneBased() + \" \"","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" + CourseMateUtil.getEditCourseMateDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(new EditCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), descriptor), command);","lastModifiedDate":"2024-03-20"},{"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_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","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_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"benson1029"},"content":" String keyword \u003d \"foo bar baz\";","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"benson1029"},"content":" FindCommand.COMMAND_WORD + \" \" + keyword);","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"benson1029"},"content":" assertEquals(new FindCommand(new ContainsKeywordPredicate(keyword)), command);","lastModifiedDate":"2024-03-17"},{"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_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"ivan24004"},"content":" public void parseCommand_createGroup() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"ivan24004"},"content":" assertTrue(parser.parseCommand(CreateGroupCommand.COMMAND_WORD + \" CS2103T Group\")","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"ivan24004"},"content":" instanceof CreateGroupCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"ivan24004"},"content":" public void parseCommand_addMember() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"ivan24004"},"content":" assertTrue(parser.parseCommand(AddMemberCommand.COMMAND_WORD + \" CS2103T Group -cm John Doe\")","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"ivan24004"},"content":" instanceof AddMemberCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"ivan24004"},"content":" public void parseCommand_deleteMember() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"ivan24004"},"content":" assertTrue(parser.parseCommand(DeleteMemberCommand.COMMAND_WORD + \" CS2103T Group -cm John Doe\")","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"ivan24004"},"content":" instanceof DeleteMemberCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":139,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"tzaph"},"content":" public void parseCommand_noSpaceAfterPrefix_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"tzaph"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"tzaph"},"content":" -\u003e parser.parseCommand(\"add Amy Bee -p11111111 -e amy@example.com\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Ryan-Reno":17,"benson1029":4,"tzaph":30,"-":75,"ivan24004":23}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","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":"tzaph"},"content":" private static final String VALID_SKILL_1 \u003d \"C++\";","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" private static final String VALID_SKILL_2 \u003d \"Python\";","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"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 parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"Ryan-Reno"},"content":" public void parseSkill_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSkill(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"Ryan-Reno"},"content":" public void parseSkill_validValueWithoutWhitespace_returnsSkill() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"Ryan-Reno"},"content":" Skill expectedSkill \u003d new Skill(VALID_SKILL_1);","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedSkill, ParserUtil.parseSkill(VALID_SKILL_1));","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"Ryan-Reno"},"content":" public void parseSkill_validValueWithWhitespace_returnsTrimmedSkill() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"Ryan-Reno"},"content":" String skillWithWhitespace \u003d WHITESPACE + VALID_SKILL_1 + WHITESPACE;","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"Ryan-Reno"},"content":" Skill expectedSkill \u003d new Skill(VALID_SKILL_1);","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedSkill, ParserUtil.parseSkill(skillWithWhitespace));","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"Ryan-Reno"},"content":" public void parseSkills_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSkills(null));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void parseSkills_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(ParserUtil.parseSkills(Collections.emptyList()).isEmpty());","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void parseSkills_collectionWithValidSkills_returnsSkillSet() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"Ryan-Reno"},"content":" Set\u003cSkill\u003e actualSkillSet \u003d ParserUtil.parseSkills(Arrays.asList(VALID_SKILL_1, VALID_SKILL_2));","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"Ryan-Reno"},"content":" Set\u003cSkill\u003e expectedSkillSet \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"Ryan-Reno"},"content":" new HashSet\u003cSkill\u003e(Arrays.asList(new Skill(VALID_SKILL_1), new Skill(VALID_SKILL_2)));","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":136,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedSkillSet, actualSkillSet);","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"ivan24004"},"content":" public void parseQueryableCourseMate_emptyString_throwsError() {","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"ivan24004"},"content":" assertThrows(ParseException.class, () -\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"ivan24004"},"content":" ParserUtil.parseQueryableCourseMate(\"\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"ivan24004"},"content":" public void parseQueryableCourseMate_garbageIndex_throwsError() {","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"ivan24004"},"content":" assertThrows(ParseException.class, () -\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"ivan24004"},"content":" ParserUtil.parseQueryableCourseMate(\"#ABC\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"ivan24004"},"content":" public void parseQueryableCourseMate_normalIndex_returnsIndexQueryableCourseMate() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"ivan24004"},"content":" assertTrue(ParserUtil.parseQueryableCourseMate(\"#123\").isIndex());","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"ivan24004"},"content":" public void parseQueryableCourseMate_normalName_returnsNameQueryableCourseMate() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"ivan24004"},"content":" assertTrue(ParserUtil.parseQueryableCourseMate(\"John Doe\").isName());","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"Ryan-Reno":23,"tzaph":1,"-":121,"ivan24004":15}},{"path":"src/test/java/seedu/address/model/ContactListTest.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":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.ALICE;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-12"},{"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":"yuhinarita"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.exceptions.DuplicateCourseMateException;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":"public class ContactListTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" private final ContactList contactList \u003d new ContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(Collections.emptyList(), contactList.getCourseMateList());","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e contactList.resetData(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" public void resetData_withValidReadOnlyContactList_replacesData() {","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" ContactList newData \u003d getTypicalContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" contactList.resetData(newData);","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(newData, contactList);","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" public void resetData_withDuplicateCourseMates_throwsDuplicateCourseMateException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" // Two courseMates with the same identity fields","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate editedAlice \u003d new CourseMateBuilder(ALICE)","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"yuhinarita"},"content":" .withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e newCourseMates \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"yuhinarita"},"content":" List\u003cGroup\u003e newGroups \u003d Arrays.asList(new Group(new Name(\"Grp1\"), Set.of(ALICE)));","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"yuhinarita"},"content":" ContactListStub newData \u003d new ContactListStub(newCourseMates, newGroups);","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(DuplicateCourseMateException.class, () -\u003e contactList.resetData(newData));","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" public void hasCourseMate_nullCourseMate_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e contactList.hasCourseMate(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" public void hasCourseMate_courseMateNotInAContactList_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(contactList.hasCourseMate(ALICE));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void hasCourseMate_courseMateInContactList_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" contactList.addCourseMate(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(contactList.hasCourseMate(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":" public void hasCourseMate_courseMateWithSameIdentityFieldsInContactList_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" contactList.addCourseMate(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate editedAlice \u003d new CourseMateBuilder(ALICE)","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"yuhinarita"},"content":" .withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(contactList.hasCourseMate(editedAlice));","lastModifiedDate":"2024-03-12"},{"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":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" public void getCourseMateList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e contactList.getCourseMateList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"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":"Ryan-Reno"},"content":" String expected \u003d ContactList.class.getCanonicalName()","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" + \"{courseMates\u003d\" + contactList.getCourseMateList() + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expected, contactList.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"Ryan-Reno"},"content":" * A stub ReadOnlyContactList whose courseMates list can violate interface constraints.","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":" private static class ContactListStub implements ReadOnlyContactList {","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":" private final ObservableList\u003cCourseMate\u003e courseMates \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"yuhinarita"},"content":" private final ObservableList\u003cGroup\u003e groups \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"yuhinarita"},"content":" ContactListStub(Collection\u003cCourseMate\u003e courseMates, Collection\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":" this.courseMates.setAll(courseMates);","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"yuhinarita"},"content":" this.groups.setAll(groups);","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":" public ObservableList\u003cCourseMate\u003e getCourseMateList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Ryan-Reno"},"content":" return courseMates;","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"yuhinarita":11,"Ryan-Reno":41,"-":63}},{"path":"src/test/java/seedu/address/model/GroupListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.getTypicalGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":" * Unit tests for the {@code GroupList} class.","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"public class GroupListTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" private final GroupList groupList \u003d new GroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e groupList.resetData(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" public void resetData_withValidReadOnlyGroupList_replacesData() {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" GroupList newData \u003d getTypicalGroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" groupList.resetData(newData);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" assertEquals(newData, groupList);","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" public void hasGroup_groupInGroupList_returnsTrue() {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" groupList.addGroup(SAMPLE_GROUP_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" assertTrue(groupList.hasGroup(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" public void getGroupList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e groupList.getGroupList().remove(0));","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":39}},{"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":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-03-19"},{"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":"benson1029"},"content":"import static org.junit.jupiter.api.Assertions.assertNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_COURSE_MATES;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.ALICE;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.BENSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":15,"author":{"gitId":"-"},"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":"ivan24004"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"benson1029"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.ContactListBuilder;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" assertEquals(new ContactList(), new ContactList(modelManager.getContactList()));","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" userPrefs.setContactListFilePath(Paths.get(\"contact/list/file/path\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" userPrefs.setContactListFilePath(Paths.get(\"new/contact/list/file/path\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","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":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.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":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" public void setContactListFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setContactListFilePath(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" public void setContactListFilePath_validPath_setsContactListFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":" Path path \u003d Paths.get(\"contact/list/file/path\");","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":" modelManager.setContactListFilePath(path);","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(path, modelManager.getContactListFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":" public void hasCourseMate_nullCourseMate_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasCourseMate(null));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void hasCourseMate_courseMateNotInContactList_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(modelManager.hasCourseMate(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" public void hasCourseMate_courseMateInContactList_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":" modelManager.addCourseMate(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(modelManager.hasCourseMate(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"ivan24004"},"content":" public void findCourseMate_byNameCourseMateInContactList_doesNotThrow() {","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":" modelManager.addCourseMate(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e modelManager.findCourseMate(new QueryableCourseMate(ALICE.getName())));","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"ivan24004"},"content":" public void findCourseMate_byNameCourseMateNotInContactList_throwsError() {","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":" assertThrows(RuntimeException.class, () -\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"ivan24004"},"content":" modelManager.findCourseMate(new QueryableCourseMate(new Name(\"RANDOM_STRING_12KAJ@\"))));","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"ivan24004"},"content":" public void findCourseMate_byIndexCourseMateNotInContactList_throwsError() {","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"ivan24004"},"content":" assertThrows(RuntimeException.class, () -\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"ivan24004"},"content":" modelManager.findCourseMate(new QueryableCourseMate(Index.fromZeroBased(0))));","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":114,"author":{"gitId":"Ryan-Reno"},"content":" public void getFilteredCourseMateList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredCourseMateList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"benson1029"},"content":" public void getRecentlyProcessedCourseMate_newModelManager_returnsNull() {","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"benson1029"},"content":" assertNull(modelManager.getRecentlyProcessedCourseMate());","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"benson1029"},"content":" public void setRecentlyProcessedCourseMate_setToAlice_returnsAlice() {","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"benson1029"},"content":" modelManager.setRecentlyProcessedCourseMate(ALICE);","lastModifiedDate":"2024-03-15"},{"lineNumber":126,"author":{"gitId":"benson1029"},"content":" assertEquals(ALICE, modelManager.getRecentlyProcessedCourseMate());","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":128,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":129,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":130,"author":{"gitId":"benson1029"},"content":" public void setRecentlyProcessedCourseMate_nullCourseMate_returnsNull() {","lastModifiedDate":"2024-03-15"},{"lineNumber":131,"author":{"gitId":"benson1029"},"content":" modelManager.setRecentlyProcessedCourseMate(null);","lastModifiedDate":"2024-03-15"},{"lineNumber":132,"author":{"gitId":"benson1029"},"content":" assertNull(modelManager.getRecentlyProcessedCourseMate());","lastModifiedDate":"2024-03-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":137,"author":{"gitId":"Ryan-Reno"},"content":" ContactList contactList \u003d new ContactListBuilder().withCourseMate(ALICE).withCourseMate(BENSON).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"Ryan-Reno"},"content":" ContactList differentContactList \u003d new ContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"ivan24004"},"content":" GroupList groupList \u003d new GroupList();","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"ivan24004"},"content":" modelManager \u003d new ModelManager(contactList, userPrefs, groupList);","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"ivan24004"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(contactList, userPrefs, groupList);","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":156,"author":{"gitId":"Ryan-Reno"},"content":" // different contactList -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"ivan24004"},"content":" assertFalse(modelManager.equals(new ModelManager(differentContactList, userPrefs, groupList)));","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":160,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":161,"author":{"gitId":"benson1029"},"content":" modelManager.updateFilteredCourseMateList(new ContainsKeywordPredicate(String.join(\" \", keywords)));","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"ivan24004"},"content":" assertFalse(modelManager.equals(new ModelManager(contactList, userPrefs, groupList)));","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":165,"author":{"gitId":"Ryan-Reno"},"content":" modelManager.updateFilteredCourseMateList(PREDICATE_SHOW_ALL_COURSE_MATES);","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":168,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":169,"author":{"gitId":"Ryan-Reno"},"content":" differentUserPrefs.setContactListFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"ivan24004"},"content":" assertFalse(modelManager.equals(new ModelManager(contactList, differentUserPrefs, groupList)));","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"Ryan-Reno":27,"benson1029":18,"-":100,"ivan24004":27}},{"path":"src/test/java/seedu/address/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class UserPrefsTest {","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":" UserPrefs userPref \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e userPref.setGuiSettings(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" public void setContactListFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setContactListFilePath(null));","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":2,"-":19}},{"path":"src/test/java/seedu/address/model/coursemate/ContainsKeywordPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"benson1029"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"benson1029"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"benson1029"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"benson1029"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"benson1029"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"benson1029"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"benson1029"},"content":"public class ContainsKeywordPredicateTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"benson1029"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"benson1029"},"content":" String firstPredicateKeyword \u003d \"first\";","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"benson1029"},"content":" String secondPredicateKeyword \u003d \"first second\";","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate firstPredicate \u003d new ContainsKeywordPredicate(firstPredicateKeyword);","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate secondPredicate \u003d new ContainsKeywordPredicate(secondPredicateKeyword);","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"benson1029"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"benson1029"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"benson1029"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate firstPredicateCopy \u003d new ContainsKeywordPredicate(firstPredicateKeyword);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"benson1029"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"benson1029"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"benson1029"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"benson1029"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"benson1029"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"benson1029"},"content":" // different courseMate -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"benson1029"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":" public void test_containsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"benson1029"},"content":" // One word","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(\"Alice\");","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"benson1029"},"content":" assertTrue(predicate.test(new CourseMateBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"benson1029"},"content":" // Multiple words","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"benson1029"},"content":" predicate \u003d new ContainsKeywordPredicate(\"Alice Bob\");","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"benson1029"},"content":" assertTrue(predicate.test(new CourseMateBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"benson1029"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"benson1029"},"content":" predicate \u003d new ContainsKeywordPredicate(\"aLIce bOB\");","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"benson1029"},"content":" assertTrue(predicate.test(new CourseMateBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"benson1029"},"content":" // Empty keyword","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"benson1029"},"content":" predicate \u003d new ContainsKeywordPredicate(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"benson1029"},"content":" assertTrue(predicate.test(new CourseMateBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"benson1029"},"content":" // Keyword matches skills","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"benson1029"},"content":" predicate \u003d new ContainsKeywordPredicate(\"Java\");","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"benson1029"},"content":" assertTrue(predicate.test(new CourseMateBuilder().withSkills(\"Java\").build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"benson1029"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"benson1029"},"content":" // Only partial keywords","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(\"Bob Carol\");","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"benson1029"},"content":" assertFalse(predicate.test(new CourseMateBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"benson1029"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"benson1029"},"content":" predicate \u003d new ContainsKeywordPredicate(\"Carol\");","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"benson1029"},"content":" assertFalse(predicate.test(new CourseMateBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"benson1029"},"content":" // A substring of a skill","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"benson1029"},"content":" predicate \u003d new ContainsKeywordPredicate(\"Jav\");","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"benson1029"},"content":" assertFalse(predicate.test(new CourseMateBuilder().withSkills(\"Java\").build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"benson1029"},"content":" // Keywords match phone and email, but does not match name","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"benson1029"},"content":" predicate \u003d new ContainsKeywordPredicate(\"12345 alice@email.com\");","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"benson1029"},"content":" assertFalse(predicate.test(new CourseMateBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"benson1029"},"content":" .withEmail(\"alice@email.com\").build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"benson1029"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"benson1029"},"content":" String keyword \u003d \"keyword1 keyword2\";","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(keyword);","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"benson1029"},"content":" String expected \u003d ContainsKeywordPredicate.class.getCanonicalName() + \"{keyword\u003d\" + keyword + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"benson1029"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"benson1029":89}},{"path":"src/test/java/seedu/address/model/coursemate/CourseMateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_CPP;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.ALICE;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.BOB;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"public class CourseMateTest {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" CourseMate courseMate \u003d new CourseMateBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e courseMate.getSkills().remove(0));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void isSameCourseMate() {","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(ALICE.isSameCourseMate(ALICE));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" assertFalse(ALICE.isSameCourseMate(null));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" CourseMate editedAlice \u003d new CourseMateBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"yuhinarita"},"content":" .withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(ALICE.isSameCourseMate(editedAlice));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" editedAlice \u003d new CourseMateBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(ALICE.isSameCourseMate(editedAlice));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" CourseMate editedBob \u003d new CourseMateBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(BOB.isSameCourseMate(editedBob));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" editedBob \u003d new CourseMateBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(BOB.isSameCourseMate(editedBob));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" CourseMate aliceCopy \u003d new CourseMateBuilder(ALICE).build();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" // different courseMate -\u003e returns false","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" CourseMate editedAlice \u003d new CourseMateBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" editedAlice \u003d new CourseMateBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" editedAlice \u003d new CourseMateBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" // different skills -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"tzaph"},"content":" editedAlice \u003d new CourseMateBuilder(ALICE).withSkills(VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-19"},{"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":"Ryan-Reno"},"content":" String expected \u003d CourseMate.class.getCanonicalName()","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"yuhinarita"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", skills\u003d\" + ALICE.getSkills() + \"}\";","lastModifiedDate":"2024-03-15"},{"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":{"yuhinarita":2,"Ryan-Reno":27,"tzaph":2,"-":65}},{"path":"src/test/java/seedu/address/model/coursemate/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"Ryan-Reno":1,"-":87}},{"path":"src/test/java/seedu/address/model/coursemate/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"Ryan-Reno":1,"-":59}},{"path":"src/test/java/seedu/address/model/coursemate/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"Ryan-Reno":1,"-":59}},{"path":"src/test/java/seedu/address/model/coursemate/QueryableCourseMateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"public class QueryableCourseMateTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" public void constructor_indexNull_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e new QueryableCourseMate((Index) null));","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" public void constructor_nameNull_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e new QueryableCourseMate((Name) null));","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" public void isName_nameObject_returnsTrue() {","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" Name name \u003d new Name(\"John Doe\");","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate queryableCourseMate \u003d new QueryableCourseMate(name);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" assertTrue(queryableCourseMate.isName());","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" assertEquals(queryableCourseMate.getName(), name);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" public void isIndex_nameObject_returnsFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate queryableCourseMate \u003d new QueryableCourseMate(new Name(\"John Doe\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" assertFalse(queryableCourseMate.isIndex());","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" public void isName_indexObject_returnsFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate queryableCourseMate \u003d new QueryableCourseMate(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" assertFalse(queryableCourseMate.isName());","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" public void isIndex_indexObject_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate queryableCourseMate \u003d new QueryableCourseMate(index);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" assertTrue(queryableCourseMate.isIndex());","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" assertEquals(queryableCourseMate.getIndex(), index);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate indexZero1 \u003d new QueryableCourseMate(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate indexZero2 \u003d new QueryableCourseMate(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate indexOne \u003d new QueryableCourseMate(Index.fromZeroBased(1));","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate hello1 \u003d new QueryableCourseMate(new Name(\"Hello\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate hello2 \u003d new QueryableCourseMate(new Name(\"Hello\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate hi \u003d new QueryableCourseMate(new Name(\"Hi\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" assertEquals(indexZero1, indexZero2);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" assertEquals(indexZero2, indexZero1);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" assertNotEquals(indexZero1, indexOne);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" assertNotEquals(indexZero1, hello1);","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" assertEquals(hello1, hello2);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" assertEquals(hello2, hello1);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" assertNotEquals(hi, hello1);","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" assertNotEquals(hello1, indexOne);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"ivan24004":73}},{"path":"src/test/java/seedu/address/model/coursemate/UniqueCourseMateListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.ALICE;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.exceptions.DuplicateCourseMateException;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"public class UniqueCourseMateListTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" private final UniqueCourseMateList uniqueCourseMateList \u003d new UniqueCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" public void contains_nullCourseMate_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCourseMateList.contains(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" public void contains_courseMateNotInList_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(uniqueCourseMateList.contains(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" public void contains_courseMateInList_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(uniqueCourseMateList.contains(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" public void contains_courseMateWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate editedAlice \u003d new CourseMateBuilder(ALICE)","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"yuhinarita"},"content":" .withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(uniqueCourseMateList.contains(editedAlice));","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" public void add_nullCourseMate_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCourseMateList.add(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" public void add_duplicateCourseMate_throwsDuplicateCourseMateException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(DuplicateCourseMateException.class, () -\u003e uniqueCourseMateList.add(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" public void findCourseMate_courseMateDoesNotExist_throwsCourseMateNotFoundException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" assertThrows(CourseMateNotFoundException.class, () -\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" uniqueCourseMateList.findCourseMate(new Name(\"RANDOMSTRINGAJ124AJK\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" public void findCourseMate_courseMateExists_courseMateFound() {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e uniqueCourseMateList.findCourseMate(ALICE.getName()));","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate_nullTargetCourseMate_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCourseMateList.setCourseMate(null, ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate_nullEditedCourseMate_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCourseMateList.setCourseMate(ALICE, null));","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate_targetCourseMateNotInList_throwsCourseMateNotFoundException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(CourseMateNotFoundException.class, () -\u003e uniqueCourseMateList.setCourseMate(ALICE, ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate_editedCourseMateIsSameCourseMate_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.setCourseMate(ALICE, ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" UniqueCourseMateList expectedUniqueCourseMateList \u003d new UniqueCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":" expectedUniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedUniqueCourseMateList, uniqueCourseMateList);","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate_editedCourseMateHasSameIdentity_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate editedAlice \u003d new CourseMateBuilder(ALICE)","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"yuhinarita"},"content":" .withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.setCourseMate(ALICE, editedAlice);","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"Ryan-Reno"},"content":" UniqueCourseMateList expectedUniqueCourseMateList \u003d new UniqueCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":" expectedUniqueCourseMateList.add(editedAlice);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedUniqueCourseMateList, uniqueCourseMateList);","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate_editedCourseMateHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.setCourseMate(ALICE, BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"Ryan-Reno"},"content":" UniqueCourseMateList expectedUniqueCourseMateList \u003d new UniqueCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"Ryan-Reno"},"content":" expectedUniqueCourseMateList.add(BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedUniqueCourseMateList, uniqueCourseMateList);","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate_editedCourseMateHasNonUniqueIdentity_throwsDuplicateCourseMateException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(DuplicateCourseMateException.class, () -\u003e uniqueCourseMateList.setCourseMate(ALICE, BOB));","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"Ryan-Reno"},"content":" public void remove_nullCourseMate_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCourseMateList.remove(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"Ryan-Reno"},"content":" public void remove_courseMateDoesNotExist_throwsCourseMateNotFoundException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(CourseMateNotFoundException.class, () -\u003e uniqueCourseMateList.remove(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"Ryan-Reno"},"content":" public void remove_existingCourseMate_removesCourseMate() {","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.remove(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"Ryan-Reno"},"content":" UniqueCourseMateList expectedUniqueCourseMateList \u003d new UniqueCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedUniqueCourseMateList, uniqueCourseMateList);","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMates_nullUniqueCourseMateList_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.setCourseMates((UniqueCourseMateList) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMates_uniqueCourseMateList_replacesOwnListWithProvidedUniqueCourseMateList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"Ryan-Reno"},"content":" UniqueCourseMateList expectedUniqueCourseMateList \u003d new UniqueCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"Ryan-Reno"},"content":" expectedUniqueCourseMateList.add(BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.setCourseMates(expectedUniqueCourseMateList);","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedUniqueCourseMateList, uniqueCourseMateList);","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMates_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCourseMateList.setCourseMates((List\u003cCourseMate\u003e) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMates_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e courseMateList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.setCourseMates(courseMateList);","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"Ryan-Reno"},"content":" UniqueCourseMateList expectedUniqueCourseMateList \u003d new UniqueCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"Ryan-Reno"},"content":" expectedUniqueCourseMateList.add(BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedUniqueCourseMateList, uniqueCourseMateList);","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMates_listWithDuplicateCourseMates_throwsDuplicateCourseMateException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e listWithDuplicateCourseMates \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(DuplicateCourseMateException.class, () -\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.setCourseMates(listWithDuplicateCourseMates));","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"Ryan-Reno"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":182,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":185,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"Ryan-Reno"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":187,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(uniqueCourseMateList.asUnmodifiableObservableList().toString(), uniqueCourseMateList.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":188,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":189,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"yuhinarita":2,"Ryan-Reno":174,"ivan24004":13}},{"path":"src/test/java/seedu/address/model/group/GroupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_NAME_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_MEMBER_SET_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_MEMBER_SET_2;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" * Unit tests for the {@code Group} class.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"public class GroupTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" public void constructor_nullParameter_throwsErrors() {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" assertThrows(RuntimeException.class, () -\u003e new Group(null, null));","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" assertThrows(RuntimeException.class, () -\u003e new Group(null, SAMPLE_MEMBER_SET_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" assertThrows(RuntimeException.class, () -\u003e new Group(SAMPLE_GROUP_NAME_1, null));","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" assertThrows(RuntimeException.class, () -\u003e new Group(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" public void equals_differentGroupsWithSameName_isSameGroupButNotEquals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" Group group1 \u003d new Group(SAMPLE_GROUP_NAME_1, SAMPLE_MEMBER_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" Group group2 \u003d new Group(SAMPLE_GROUP_NAME_1, SAMPLE_MEMBER_SET_2);","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" assertTrue(group1.isSameGroup(group2));","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" assertNotEquals(group1, group2);","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" public void equals_sameGroupsWithDifferentObjects_isSameGroupAndEquals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" Group group1 \u003d new Group(SAMPLE_GROUP_NAME_1, SAMPLE_MEMBER_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" Group group2 \u003d new Group(SAMPLE_GROUP_NAME_1, SAMPLE_MEMBER_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" assertTrue(group1.isSameGroup(group2));","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" assertEquals(group1, group2);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" public void toString_validGroup_doesNotThrow() {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" Group group \u003d new Group(SAMPLE_GROUP_NAME_1, SAMPLE_MEMBER_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(group::toString);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":49}},{"path":"src/test/java/seedu/address/model/group/UniqueGroupListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_2;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.exceptions.DuplicateGroupException;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.exceptions.GroupNotFoundException;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" * Unit tests for the {@code UniqueGroupList} class.","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"public class UniqueGroupListTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" private final UniqueGroupList uniqueGroupList \u003d new UniqueGroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" public void contains_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.contains(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" public void contains_groupNotInList_returnsFalse() {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" assertFalse(uniqueGroupList.contains(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" public void add_sameGroupTwice_doesNotThrowThenThrows() {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e uniqueGroupList.add(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" assertThrows(DuplicateGroupException.class, () -\u003e uniqueGroupList.add(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" public void setGroup_groupNotInList_throwsGroupNotFoundException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" assertThrows(GroupNotFoundException.class, () -\u003e uniqueGroupList.setGroup(SAMPLE_GROUP_1, SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" public void setGroup_newValueInList_throwsDuplicateGroupException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" uniqueGroupList.add(SAMPLE_GROUP_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" uniqueGroupList.add(SAMPLE_GROUP_2);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" assertThrows(DuplicateGroupException.class, () -\u003e uniqueGroupList.setGroup(SAMPLE_GROUP_1, SAMPLE_GROUP_2));","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" public void setGroup_newValueNotInList_noExceptions() {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" uniqueGroupList.add(SAMPLE_GROUP_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e uniqueGroupList.setGroup(SAMPLE_GROUP_1, SAMPLE_GROUP_2));","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" public void remove_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.remove(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" public void remove_groupNotInList_throwsGroupNotFoundException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" assertThrows(GroupNotFoundException.class, () -\u003e uniqueGroupList.remove(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" public void remove_groupInList_doesNotThrow() {","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" uniqueGroupList.add(SAMPLE_GROUP_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e uniqueGroupList.remove(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" public void setGroups_emptyGroupList_doesNotThrow() {","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e uniqueGroupList.setGroups(new UniqueGroupList()));","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e uniqueGroupList.setGroups(new ArrayList\u003c\u003e()));","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" public void setGroups_groupListWithDuplicates_throwsDuplicateGroupException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":" assertThrows(DuplicateGroupException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" uniqueGroupList.setGroups(new ArrayList\u003c\u003e(Arrays.asList(SAMPLE_GROUP_1, SAMPLE_GROUP_1))));","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":" assertEquals(uniqueGroupList.asUnmodifiableObservableList().toString(), uniqueGroupList.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":90}},{"path":"src/test/java/seedu/address/model/skill/SkillTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"public class SkillTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e new Skill(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Ryan-Reno":13}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedCourseMateTest.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":"Ryan-Reno"},"content":"import static seedu.address.storage.JsonAdaptedCourseMate.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.BENSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"public class JsonAdaptedCourseMateTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","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":"Ryan-Reno"},"content":" private static final List\u003cJsonAdaptedSkill\u003e VALID_SKILLS \u003d BENSON.getSkills().stream()","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" .map(JsonAdaptedSkill::new)","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" public void toModelType_validCourseMateDetails_returnsCourseMate() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" JsonAdaptedCourseMate courseMate \u003d new JsonAdaptedCourseMate(BENSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(BENSON, courseMate.toModelType());","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" JsonAdaptedCourseMate courseMate \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"yuhinarita"},"content":" new JsonAdaptedCourseMate(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_SKILLS);","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(IllegalValueException.class, expectedMessage, courseMate::toModelType);","lastModifiedDate":"2024-03-12"},{"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 toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" JsonAdaptedCourseMate courseMate \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"yuhinarita"},"content":" new JsonAdaptedCourseMate(null, VALID_PHONE, VALID_EMAIL, VALID_SKILLS);","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(IllegalValueException.class, expectedMessage, courseMate::toModelType);","lastModifiedDate":"2024-03-12"},{"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_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" JsonAdaptedCourseMate courseMate \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"yuhinarita"},"content":" new JsonAdaptedCourseMate(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_SKILLS);","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(IllegalValueException.class, expectedMessage, courseMate::toModelType);","lastModifiedDate":"2024-03-12"},{"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_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" JsonAdaptedCourseMate courseMate \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"yuhinarita"},"content":" new JsonAdaptedCourseMate(VALID_NAME, null, VALID_EMAIL, VALID_SKILLS);","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(IllegalValueException.class, expectedMessage, courseMate::toModelType);","lastModifiedDate":"2024-03-12"},{"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_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"Ryan-Reno"},"content":" JsonAdaptedCourseMate courseMate \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"yuhinarita"},"content":" new JsonAdaptedCourseMate(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_SKILLS);","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(IllegalValueException.class, expectedMessage, courseMate::toModelType);","lastModifiedDate":"2024-03-12"},{"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_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" JsonAdaptedCourseMate courseMate \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"yuhinarita"},"content":" new JsonAdaptedCourseMate(VALID_NAME, VALID_PHONE, null, VALID_SKILLS);","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(IllegalValueException.class, expectedMessage, courseMate::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"yuhinarita":6,"Ryan-Reno":23,"-":55}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedGroupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.storage.JsonAdaptedGroup.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"public class JsonAdaptedGroupTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" private static final String VALID_NAME \u003d SAMPLE_GROUP_1.getName().toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" private static final String INVALID_NAME \u003d \"gr@up 1\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" private static final List\u003cJsonAdaptedCourseMate\u003e VALID_MEMBERS \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" SAMPLE_GROUP_1.asUnmodifiableObservableList().stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" .map(JsonAdaptedCourseMate::new)","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" public void toModelType_validGroupDetails_returnsGroup() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" JsonAdaptedGroup group \u003d new JsonAdaptedGroup(SAMPLE_GROUP_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" assertEquals(SAMPLE_GROUP_1, group.toModelType());","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" JsonAdaptedGroup group \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" new JsonAdaptedGroup(INVALID_NAME, VALID_MEMBERS);","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" assertThrows(IllegalValueException.class, expectedMessage, group::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" JsonAdaptedGroup group \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" new JsonAdaptedGroup(null, VALID_MEMBERS);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" assertThrows(IllegalValueException.class, expectedMessage, group::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":45}},{"path":"src/test/java/seedu/address/storage/JsonContactListStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.ALICE;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.HOON;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.IDA;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"public class JsonContactListStorageTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonContactListStorageTest\");","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" @TempDir","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" public Path testFolder;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" public void readContactList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e readContactList(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" private java.util.Optional\u003cReadOnlyContactList\u003e readContactList(String filePath) throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" return new JsonContactListStorage(Paths.get(filePath)).readContactList(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" : null;","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(readContactList(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(DataLoadingException.class, () -\u003e readContactList(\"notJsonFormatContactList.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" public void readContactList_invalidCourseMateContactList_throwDataLoadingException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(DataLoadingException.class, () -\u003e readContactList(\"invalidCourseMateContactList.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" public void readContactList_invalidAndValidCourseMateContactList_throwDataLoadingException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(DataLoadingException.class, () -\u003e readContactList(\"invalidAndValidCourseMateContactList.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" public void readAndSaveContactList_allInOrder_success() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" Path filePath \u003d testFolder.resolve(\"TempContactList.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" ContactList original \u003d getTypicalContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Ryan-Reno"},"content":" JsonContactListStorage jsonContactListStorage \u003d new JsonContactListStorage(filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" // Save in new file and read back","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Ryan-Reno"},"content":" jsonContactListStorage.saveContactList(original, filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Ryan-Reno"},"content":" ReadOnlyContactList readBack \u003d jsonContactListStorage.readContactList(filePath).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(original, new ContactList(readBack));","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":" original.addCourseMate(HOON);","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":" original.removeCourseMate(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":" jsonContactListStorage.saveContactList(original, filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" readBack \u003d jsonContactListStorage.readContactList(filePath).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(original, new ContactList(readBack));","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" // Save and read without specifying file path","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" original.addCourseMate(IDA);","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" jsonContactListStorage.saveContactList(original); // file path not specified","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" readBack \u003d jsonContactListStorage.readContactList().get(); // file path not specified","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(original, new ContactList(readBack));","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" public void saveContactList_nullContactList_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e saveContactList(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" * Saves {@code ContactList} at the specified {@code filePath}.","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"Ryan-Reno"},"content":" private void saveContactList(ReadOnlyContactList contactList, String filePath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Ryan-Reno"},"content":" try {","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":" new JsonContactListStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":" .saveContactList(contactList, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"Ryan-Reno"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"Ryan-Reno"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"Ryan-Reno"},"content":" public void saveContactList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e saveContactList(new ContactList(), null));","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Ryan-Reno":110}},{"path":"src/test/java/seedu/address/storage/JsonGroupListStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_UNINCLUDED_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.getTypicalGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ReadOnlyGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"public class JsonGroupListStorageTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonGroupListStorageTest\");","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" @TempDir","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" public Path testFolder;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" public void readGroupList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e readGroupList(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" private java.util.Optional\u003cReadOnlyGroupList\u003e readGroupList(String filePath) throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" return new JsonGroupListStorage(Paths.get(filePath)).readGroupList(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" : null;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" assertFalse(readGroupList(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" assertThrows(DataLoadingException.class, () -\u003e readGroupList(\"notJsonFormatGroupList.json\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" public void readGroupList_invalidGroupGroupList_throwDataLoadingException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" assertThrows(DataLoadingException.class, () -\u003e readGroupList(\"invalidGroupGroupList.json\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" public void readGroupList_invalidAndValidGroupGroupList_throwDataLoadingException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" assertThrows(DataLoadingException.class, () -\u003e readGroupList(\"invalidAndValidGroupGroupList.json\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" public void readAndSaveGroupList_allInOrder_success() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" Path filePath \u003d testFolder.resolve(\"TempGroupList.json\");","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" GroupList original \u003d getTypicalGroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" JsonGroupListStorage jsonGroupListStorage \u003d new JsonGroupListStorage(filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" // Save in new file and read back","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" jsonGroupListStorage.saveGroupList(original, filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" ReadOnlyGroupList readBack \u003d jsonGroupListStorage.readGroupList(filePath).get();","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" assertEquals(original, new GroupList(readBack));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ivan24004"},"content":" original.addGroup(SAMPLE_UNINCLUDED_GROUP);","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" original.removeGroup(SAMPLE_GROUP_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" jsonGroupListStorage.saveGroupList(original, filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":" readBack \u003d jsonGroupListStorage.readGroupList(filePath).get();","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" assertEquals(original, new GroupList(readBack));","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" // Save and read without specifying file path","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" original.addGroup(SAMPLE_GROUP_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":" jsonGroupListStorage.saveGroupList(original); // file path not specified","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" readBack \u003d jsonGroupListStorage.readGroupList().get(); // file path not specified","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":" assertEquals(original, new GroupList(readBack));","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":" public void saveGroupList_nullGroupList_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e saveGroupList(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ivan24004"},"content":" * Saves {@code GroupList} at the specified {@code filePath}.","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ivan24004"},"content":" private void saveGroupList(ReadOnlyGroupList groupList, String filePath) {","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":" new JsonGroupListStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" .saveGroupList(groupList, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ivan24004"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"ivan24004"},"content":" public void saveGroupList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e saveGroupList(new GroupList(), null));","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":109}},{"path":"src/test/java/seedu/address/storage/JsonSerializableContactListTest.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":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.TypicalCourseMates;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"public class JsonSerializableContactListTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" private static final Path TEST_DATA_FOLDER \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":" Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableContactListTest\");","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" private static final Path TYPICAL_COURSE_MATES_FILE \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":" TEST_DATA_FOLDER.resolve(\"typicalCourseMatesContactList.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" private static final Path INVALID_COURSE_MATES_FILE \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" TEST_DATA_FOLDER.resolve(\"invalidCourseMateContactList.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" private static final Path DUPLICATE_COURSE_MATES_FILE \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" TEST_DATA_FOLDER.resolve(\"duplicateCourseMateContactList.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" public void toModelType_typicalCourseMatesFile_success() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" JsonSerializableContactList dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_COURSE_MATES_FILE,","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" JsonSerializableContactList.class).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" ContactList contactListFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" ContactList typicalCourseMatesContactList \u003d TypicalCourseMates.getTypicalContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(contactListFromFile, typicalCourseMatesContactList);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void toModelType_invalidCourseMateFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" JsonSerializableContactList dataFromFile \u003d JsonUtil.readJsonFile(INVALID_COURSE_MATES_FILE,","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" JsonSerializableContactList.class).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"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":"Ryan-Reno"},"content":" public void toModelType_duplicateCourseMates_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" JsonSerializableContactList dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_COURSE_MATES_FILE,","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" JsonSerializableContactList.class).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(IllegalValueException.class, JsonSerializableContactList.MESSAGE_DUPLICATE_COURSE_MATE,","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"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"}],"authorContributionMap":{"Ryan-Reno":24,"-":27}},{"path":"src/test/java/seedu/address/storage/JsonSerializableGroupListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"public class JsonSerializableGroupListTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":" private static final Path TEST_DATA_FOLDER \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableGroupListTest\");","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" private static final Path INVALID_GROUPS_FILE \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" TEST_DATA_FOLDER.resolve(\"invalidGroupGroupList.json\");","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" private static final Path DUPLICATE_GROUPS_FILE \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" TEST_DATA_FOLDER.resolve(\"duplicateGroupGroupList.json\");","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" public void toModelType_invalidGroupFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" JsonSerializableGroupList dataFromFile \u003d JsonUtil.readJsonFile(INVALID_GROUPS_FILE,","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" JsonSerializableGroupList.class).get();","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" public void toModelType_duplicateGroups_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" JsonSerializableGroupList dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_GROUPS_FILE,","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" JsonSerializableGroupList.class).get();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" assertThrows(IllegalValueException.class, JsonSerializableGroupList.MESSAGE_DUPLICATE_GROUP,","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":35}},{"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":"Ryan-Reno"},"content":" userPrefs.setContactListFilePath(Paths.get(\"contactlist.json\"));","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":1,"-":122}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.getTypicalGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"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":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ReadOnlyGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"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-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" JsonContactListStorage contactListStorage \u003d new JsonContactListStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" JsonGroupListStorage groupListStorage \u003d new JsonGroupListStorage(getTempFilePath(\"groups\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" storageManager \u003d new StorageManager(contactListStorage, userPrefsStorage, groupListStorage);","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"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":"Ryan-Reno"},"content":" public void contactListReadSave() throws Exception {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * {@link JsonContactListStorage} class.","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonContactListStorageTest} class.","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" ContactList original \u003d getTypicalContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" storageManager.saveContactList(original);","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" ReadOnlyContactList retrieved \u003d storageManager.readContactList().get();","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(original, new ContactList(retrieved));","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" public void getContactListFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" assertNotNull(storageManager.getContactListFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":" public void groupListReadSave() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ivan24004"},"content":" /*","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" * {@link JsonGroupListStorage} class.","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonGroupListStorageTest} class.","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":" GroupList original \u003d getTypicalGroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" storageManager.saveGroupList(original);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" ReadOnlyGroupList retrieved \u003d storageManager.readGroupList().get();","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":" assertEquals(original, new GroupList(retrieved));","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" public void getGroupListFilePath() {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":" assertNotNull(storageManager.getGroupListFilePath());","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Ryan-Reno":13,"-":54,"ivan24004":22}},{"path":"src/test/java/seedu/address/testutil/AddSkillDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand.AddSkillDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":" * A utility class to help with building AddSkillDescriptor objects.","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"public class AddSkillDescriptorBuilder {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":" private AddSkillCommand.AddSkillDescriptor descriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":" public AddSkillDescriptorBuilder() {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":" descriptor \u003d new AddSkillDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":" public AddSkillDescriptorBuilder(AddSkillCommand.AddSkillDescriptor descriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":" this.descriptor \u003d new AddSkillCommand.AddSkillDescriptor(descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"tzaph"},"content":" * Returns an {@code AddSkillDescriptor} with fields containing {@code courseMate}\u0027s details","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":" public AddSkillDescriptorBuilder(CourseMate courseMate) {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":" descriptor \u003d new AddSkillCommand.AddSkillDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":" descriptor.setSkills(courseMate.getSkills());","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" * Parses the {@code skills} into a {@code Set\u003cSkill\u003e} and set it to the {@code AddSkillDescriptor}","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":" * that we are building.","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":" public AddSkillDescriptorBuilder withSkills(String... skills) {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e skillSet \u003d Stream.of(skills).map(Skill::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" descriptor.setSkills(skillSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" public AddSkillCommand.AddSkillDescriptor build() {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" return descriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"tzaph":48}},{"path":"src/test/java/seedu/address/testutil/ContactListBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":" * A utility class to help with building ContactList objects.","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":" * {@code ContactList ab \u003d new ContactListBuilder().withCourseMate(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"public class ContactListBuilder {","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":" private ContactList contactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":" public ContactListBuilder() {","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" contactList \u003d new ContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":" public ContactListBuilder(ContactList contactList) {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" this.contactList \u003d contactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" * Adds a new {@code CourseMate} to the {@code ContactList} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" public ContactListBuilder withCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" contactList.addCourseMate(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" public ContactList build() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" return contactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Ryan-Reno":34}},{"path":"src/test/java/seedu/address/testutil/CourseMateBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":" * A utility class to help with building CourseMate objects.","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"public class CourseMateBuilder {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" private Name name;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" private Phone phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" private Email email;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" private Set\u003cSkill\u003e skills;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" * Creates a {@code CourseMateBuilder} with the default details.","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMateBuilder() {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" skills \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" * Initializes the CourseMateBuilder with the data of {@code courseMateToCopy}.","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMateBuilder(CourseMate courseMateToCopy) {","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" name \u003d courseMateToCopy.getName();","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" phone \u003d courseMateToCopy.getPhone();","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" email \u003d courseMateToCopy.getEmail();","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" skills \u003d new HashSet\u003c\u003e(courseMateToCopy.getSkills());","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" * Sets the {@code Name} of the {@code CourseMate} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMateBuilder withName(String name) {","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" * Parses the {@code skills} into a {@code Set\u003cSkill\u003e} and set it to the {@code CourseMate} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMateBuilder withSkills(String ... skills) {","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" this.skills \u003d SampleDataUtil.getSkillSet(skills);","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":" * Parses the {@code skills} into a {@code Set\u003cSkill\u003e} and","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" * remove it from the {@code CourseMate} that we are building.","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" public CourseMateBuilder removeSkills(String ... skills) {","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e removeSet \u003d SampleDataUtil.getSkillSet(skills);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e newSet \u003d new HashSet\u003cSkill\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" for (Skill skill : this.skills) {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":" if (!removeSet.contains(skill)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":" newSet.add(skill);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":" this.skills \u003d newSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":" * Sets the {@code Phone} of the {@code CourseMate} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMateBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":" * Sets the {@code Email} of the {@code CourseMate} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMateBuilder withEmail(String email) {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMate build() {","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"yuhinarita"},"content":" return new CourseMate(name, phone, email, skills);","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"yuhinarita":1,"Ryan-Reno":82,"tzaph":16}},{"path":"src/test/java/seedu/address/testutil/CourseMateUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" * A utility class for CourseMate.","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"public class CourseMateUtil {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" * Returns an add command string for adding the {@code courseMate}.","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" public static String getAddCommand(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" return AddCommand.COMMAND_WORD + \" \" + getCourseMateDetails(courseMate);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Returns the part of command string for the given {@code courseMate}\u0027s details.","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" public static String getCourseMateDetails(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":" sb.append(courseMate.getName().fullName + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":" sb.append(PREFIX_PHONE + \" \" + courseMate.getPhone().value + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" sb.append(PREFIX_EMAIL + \" \" + courseMate.getEmail().value + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" courseMate.getSkills().stream().forEach(","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" s -\u003e sb.append(PREFIX_SKILL + \" \" + s.skillName + \" \")","lastModifiedDate":"2024-03-18"},{"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":"Ryan-Reno"},"content":" * Returns the part of command string for the given {@code EditCourseMateDescriptor}\u0027s details.","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" public static String getEditCourseMateDescriptorDetails(EditCommand.EditCourseMateDescriptor descriptor) {","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(\" \").append(name.fullName).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(\" \").append(phone.value).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(\" \").append(email.value).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" if (descriptor.getSkills().isPresent()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" Set\u003cSkill\u003e skills \u003d descriptor.getSkills().get();","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" if (skills.isEmpty()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" sb.append(PREFIX_SKILL);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" skills.forEach(s -\u003e sb.append(PREFIX_SKILL).append(\" \").append(s.skillName).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" * Returns the part of command string for the given {@code AddSkillDescriptor}\u0027s details.","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" public static String getAddSkillDescriptorDetails(AddSkillCommand.AddSkillDescriptor descriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" if (descriptor.getSkills().isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e skills \u003d descriptor.getSkills().get();","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":" if (skills.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" sb.append(PREFIX_SKILL);","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":" skills.forEach(s -\u003e sb.append(PREFIX_SKILL).append(\" \").append(s.skillName).append(\" \"));","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":" return sb.toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"tzaph"},"content":" * Returns the part of command string for the given {@code DeleteSkillDescriptor}\u0027s details.","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"tzaph"},"content":" public static String getDeleteSkillDescriptorDetails(DeleteSkillCommand.DeleteSkillDescriptor descriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"tzaph"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"tzaph"},"content":" if (descriptor.getSkills().isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e skills \u003d descriptor.getSkills().get();","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"tzaph"},"content":" if (skills.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"tzaph"},"content":" sb.append(PREFIX_SKILL);","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"tzaph"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"tzaph"},"content":" skills.forEach(s -\u003e sb.append(PREFIX_SKILL).append(\" \").append(s.skillName).append(\" \"));","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"tzaph"},"content":" return sb.toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"Ryan-Reno":18,"tzaph":42,"-":33}},{"path":"src/test/java/seedu/address/testutil/DeleteSkillDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand.DeleteSkillDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":" * A utility class to help with building DeleteSkillDescriptor objects.","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"public class DeleteSkillDescriptorBuilder {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":" private DeleteSkillCommand.DeleteSkillDescriptor descriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":" public DeleteSkillDescriptorBuilder() {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":" descriptor \u003d new DeleteSkillDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":" public DeleteSkillDescriptorBuilder(DeleteSkillCommand.DeleteSkillDescriptor descriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":" this.descriptor \u003d new DeleteSkillCommand.DeleteSkillDescriptor(descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"tzaph"},"content":" * Returns an {@code DeleteSkillDescriptor} with fields containing {@code courseMate}\u0027s details","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":" public DeleteSkillDescriptorBuilder(CourseMate courseMate) {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":" descriptor \u003d new DeleteSkillCommand.DeleteSkillDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":" descriptor.setSkills(courseMate.getSkills());","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" * Parses the {@code skills} into a {@code Set\u003cSkill\u003e} and set it to the {@code DeleteSkillDescriptor}","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":" * that we are building.","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":" public DeleteSkillDescriptorBuilder withSkills(String... skills) {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e skillSet \u003d Stream.of(skills).map(Skill::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" descriptor.setSkills(skillSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" public DeleteSkillCommand.DeleteSkillDescriptor build() {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" return descriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"tzaph":48}},{"path":"src/test/java/seedu/address/testutil/EditCourseMateDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.logic.commands.EditCommand.EditCourseMateDescriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" * A utility class to help with building EditCourseMateDescriptor objects.","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"public class EditCourseMateDescriptorBuilder {","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" private EditCommand.EditCourseMateDescriptor descriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" public EditCourseMateDescriptorBuilder() {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" descriptor \u003d new EditCourseMateDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" public EditCourseMateDescriptorBuilder(EditCommand.EditCourseMateDescriptor descriptor) {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" this.descriptor \u003d new EditCommand.EditCourseMateDescriptor(descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" * Returns an {@code EditCourseMateDescriptor} with fields containing {@code courseMate}\u0027s details","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" public EditCourseMateDescriptorBuilder(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" descriptor \u003d new EditCommand.EditCourseMateDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" descriptor.setName(courseMate.getName());","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" descriptor.setPhone(courseMate.getPhone());","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" descriptor.setEmail(courseMate.getEmail());","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" descriptor.setSkills(courseMate.getSkills());","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" * Sets the {@code Name} of the {@code EditCourseMateDescriptor} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" public EditCourseMateDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" * Sets the {@code Phone} of the {@code EditCourseMateDescriptor} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" public EditCourseMateDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" * Sets the {@code Email} of the {@code EditCourseMateDescriptor} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" public EditCourseMateDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" * Parses the {@code skills} into a {@code Set\u003cSkill\u003e} and set it to the {@code EditCourseMateDescriptor}","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Ryan-Reno"},"content":" * that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" public EditCourseMateDescriptorBuilder withSkills(String... skills) {","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Ryan-Reno"},"content":" Set\u003cSkill\u003e skillSet \u003d Stream.of(skills).map(Skill::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Ryan-Reno"},"content":" descriptor.setSkills(skillSet);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":" public EditCommand.EditCourseMateDescriptor build() {","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":" return descriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Ryan-Reno":78}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Returns the middle index of the courseMate in the {@code model}\u0027s courseMate list.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" return Index.fromOneBased(model.getFilteredCourseMateList().size() / 2);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Returns the last index of the courseMate in the {@code model}\u0027s courseMate list.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" return Index.fromOneBased(model.getFilteredCourseMateList().size());","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Returns the courseMate in the {@code model}\u0027s courseMate list at {@code index}.","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" public static CourseMate getCourseMate(Model model, Index index) {","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" return model.getFilteredCourseMateList().get(index.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Ryan-Reno":8,"-":47}},{"path":"src/test/java/seedu/address/testutil/TypicalCourseMates.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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_CPP;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" * A utility class containing a list of {@code CourseMate} objects to be used in tests.","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"public class TypicalCourseMates {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate ALICE \u003d new CourseMateBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" .withSkills(\"Java\").build();","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate BENSON \u003d new CourseMateBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" .withSkills(\"React\").build();","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate CARL \u003d new CourseMateBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"yuhinarita"},"content":" .withEmail(\"heinz@example.com\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate DANIEL \u003d new CourseMateBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"yuhinarita"},"content":" .withEmail(\"cornelia@example.com\").withSkills(\"C\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate ELLE \u003d new CourseMateBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"yuhinarita"},"content":" .withEmail(\"werner@example.com\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate FIONA \u003d new CourseMateBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"yuhinarita"},"content":" .withEmail(\"lydia@example.com\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate GEORGE \u003d new CourseMateBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"yuhinarita"},"content":" .withEmail(\"anna@example.com\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate HOON \u003d new CourseMateBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"yuhinarita"},"content":" .withEmail(\"stefan@example.com\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate IDA \u003d new CourseMateBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"yuhinarita"},"content":" .withEmail(\"hans@example.com\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" // Manually added - CourseMate\u0027s details found in {@code CommandTestUtil}.","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" // Enforce that they are not in the typicalCourseMates","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate AMY \u003d new CourseMateBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" .withEmail(VALID_EMAIL_AMY).withSkills(VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate BOB \u003d new CourseMateBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" .withEmail(VALID_EMAIL_BOB).withSkills(VALID_SKILL_JAVA, VALID_SKILL_CPP)","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"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":"Ryan-Reno"},"content":" private TypicalCourseMates() {} // prevents instantiation","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" * Returns an {@code ContactList} with all the typical course mates.","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" public static ContactList getTypicalContactList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" ContactList ab \u003d new ContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" for (CourseMate courseMate : getTypicalCourseMates()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" ab.addCourseMate(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":71,"author":{"gitId":"Ryan-Reno"},"content":" public static List\u003cCourseMate\u003e getTypicalCourseMates() {","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"yuhinarita":8,"Ryan-Reno":25,"tzaph":3,"-":36,"ivan24004":2}},{"path":"src/test/java/seedu/address/testutil/TypicalGroups.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.ALICE;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.BENSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.CARL;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.DANIEL;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.ELLE;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.FIONA;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" * A utility class containing a list of {@code Group} objects to be used in tests.","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":"public class TypicalGroups {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" public static final Set\u003cCourseMate\u003e SAMPLE_MEMBER_SET_1 \u003d new HashSet\u003c\u003e(Arrays.asList(ALICE, BENSON));","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" public static final Set\u003cCourseMate\u003e SAMPLE_MEMBER_SET_2 \u003d new HashSet\u003c\u003e(Arrays.asList(CARL, DANIEL));","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" public static final Set\u003cCourseMate\u003e SAMPLE_MEMBER_SET_3 \u003d new HashSet\u003c\u003e(Arrays.asList(ELLE, FIONA));","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" public static final Set\u003cCourseMate\u003e SAMPLE_UNINCLUDED_MEMBER_SET \u003d new HashSet\u003c\u003e(Arrays.asList(ALICE, FIONA));","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" // These contacts are not in the typicalContactList","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" public static final Set\u003cCourseMate\u003e SAMPLE_INVALID_MEMBER_SET_1 \u003d new HashSet\u003c\u003e(Arrays.asList(AMY, BOB));","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" public static final Set\u003cQueryableCourseMate\u003e SAMPLE_QUERYABLE_SET_1 \u003d getQueries(SAMPLE_MEMBER_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" public static final Set\u003cQueryableCourseMate\u003e SAMPLE_QUERYABLE_SET_2 \u003d getQueries(SAMPLE_MEMBER_SET_2);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public static final Set\u003cQueryableCourseMate\u003e SAMPLE_QUERYABLE_SET_3 \u003d getQueries(SAMPLE_MEMBER_SET_3);","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" public static final Set\u003cQueryableCourseMate\u003e SAMPLE_UNQUERYABLE_SET_1 \u003d getQueries(SAMPLE_INVALID_MEMBER_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" public static final Name SAMPLE_GROUP_NAME_1 \u003d new Name(\"Group 1\");","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" public static final Name SAMPLE_GROUP_NAME_2 \u003d new Name(\"Group 2\");","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" public static final Name SAMPLE_GROUP_NAME_3 \u003d new Name(\"Group 3\");","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" public static final Name SAMPLE_UNINCLUDED_NAME \u003d new Name(\"Unincluded group\");","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" public static final Group SAMPLE_GROUP_1 \u003d new Group(SAMPLE_GROUP_NAME_1, SAMPLE_MEMBER_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" public static final Group SAMPLE_GROUP_2 \u003d new Group(SAMPLE_GROUP_NAME_2, SAMPLE_MEMBER_SET_2);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" public static final Group SAMPLE_GROUP_3 \u003d new Group(SAMPLE_GROUP_NAME_3, SAMPLE_MEMBER_SET_3);","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" public static final Group SAMPLE_UNINCLUDED_GROUP \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" new Group(SAMPLE_UNINCLUDED_NAME, SAMPLE_UNINCLUDED_MEMBER_SET);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" * Prevent instantiation.","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" private TypicalGroups() {","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" * Returns an {@code GroupList} with all the typical course mates.","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" public static GroupList getTypicalGroupList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" GroupList groupList \u003d new GroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" for (Group group : getTypicalGroups()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" groupList.addGroup(group);","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" return groupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" * Returns an {@code ArrayList\u003cGroup\u003e} with all the typical course mates.","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ivan24004"},"content":" public static ArrayList\u003cGroup\u003e getTypicalGroups() {","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(SAMPLE_GROUP_1, SAMPLE_GROUP_2, SAMPLE_GROUP_3));","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" private static Set\u003cQueryableCourseMate\u003e getQueries(Set\u003cCourseMate\u003e memberSet) {","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":" return memberSet","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" .stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" .map(courseMate -\u003e new QueryableCourseMate(courseMate.getName()))","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":84}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":" public static final Index INDEX_FIRST_COURSE_MATE \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" public static final Index INDEX_SECOND_COURSE_MATE \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" public static final Index INDEX_THIRD_COURSE_MATE \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"Ryan-Reno":3,"-":9}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"[![Java CI Status](https://github.com/AY2324S2-CS2103T-F13-3/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2324S2-CS2103T-F13-3/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-03-05"},{"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":"ivan24004"},"content":"* This is the software engineering project done by group F13 for [CS2103T](https://nus-cs2103-ay2324s2.github.io/website/admin/index.html)","lastModifiedDate":"2024-03-05"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"* The project simulates an ongoing software project for a desktop application (called _MatchMate_) used for managing classmate contacts, their skills, and forming teams.","lastModifiedDate":"2024-03-05"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"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-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"* It is built off the AddressBook-Level3 project, simulating the brownfield process of working with an existing codebase.","lastModifiedDate":"2024-03-05"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"* For the detailed documentation of this project, see the **[MatchMate Product Website](https://nus-cs2103-ay2324s2.github.io/tp/)**.","lastModifiedDate":"2024-03-05"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"-":4,"ivan24004":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":"benson1029"},"content":"run {","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"benson1029"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":41,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":62,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":65,"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":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":72,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" archiveFileName \u003d \u0027addressbook.jar\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"benson1029":4,"-":72}},{"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":"Ryan-Reno"},"content":" \u003c!-- Checks that all block-skills are ordered correctly. --\u003e","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" \u003c!-- Checks that Javadoc block skills appear only at the beginning of the line. --\u003e","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" \u003c!-- Checks that for block skills, indentation of continuation lines is at least 4 spaces. --\u003e","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":3,"-":431}},{"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":"ivan24004"},"content":"### Yeung Man Tsung (Benson)","lastModifiedDate":"2024-03-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"\u003cimg src\u003d\"images/benson1029.png\" width\u003d\"200px\" alt\u003d\"benson1029 profile picture\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"[[github](https://github.com/benson1029)]","lastModifiedDate":"2024-03-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"* Role: Team Lead","lastModifiedDate":"2024-03-05"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"* Responsibilities: Scheduling and tracking, Deliverables and deadlines","lastModifiedDate":"2024-03-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":"### Maximilliano Utomo Quok","lastModifiedDate":"2024-03-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":"\u003cimg src\u003d\"images/tzaph.png\" width\u003d\"200px\" alt\u003d\"tzaph profile picture\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":"[[github](https://github.com/tzaph)]","lastModifiedDate":"2024-03-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":"* Role: Developer","lastModifiedDate":"2024-03-05"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":"* Responsiblities: Code Quality, Integration","lastModifiedDate":"2024-03-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":"### Narita Yuhi","lastModifiedDate":"2024-03-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":"\u003cimg src\u003d\"images/yuhinarita.png\" width\u003d\"200px\" alt\u003d\"yuhinarita profile picture\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":"[[github](https://github.com/yuhinarita)]","lastModifiedDate":"2024-03-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":"* Role: Team Lead","lastModifiedDate":"2024-03-05"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-03-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":"### Ryan Reno Lim","lastModifiedDate":"2024-03-05"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":"\u003cimg src\u003d\"images/ryan-reno.png\" width\u003d\"200px\" alt\u003d\"ryan-reno profile picture\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":"[[github](https://github.com/Ryan-Reno)]","lastModifiedDate":"2024-03-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-03-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":"### Tan Frederick Ivan Tiong","lastModifiedDate":"2024-03-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":"\u003cimg src\u003d\"images/ivan24004.png\" width\u003d\"200px\" alt\u003d\"ivan24004 profile picture\"\u003e","lastModifiedDate":"2024-03-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":"[[github](https://github.com/ivan24004)]","lastModifiedDate":"2024-03-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":"* Responsibilities: Testing, Integration","lastModifiedDate":"2024-03-05"}],"authorContributionMap":{"-":34,"ivan24004":23}},{"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":"benson1029"},"content":"# MatchMate 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":"-"},"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":"Ryan-Reno"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a courseMate).\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"Step 2. The user executes `delete 5` command to delete the 5th courseMate 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":"2024-03-12"},{"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":"Ryan-Reno"},"content":"Step 3. The user executes `add n/David …​` to add a new courseMate. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"Step 4. The user now decides that adding the courseMate 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":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the courseMate being deleted).","lastModifiedDate":"2024-03-12"},{"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":"benson1029"},"content":"John in a NUS computer science student taking various courses with a group project component. He wishes to create groups among his friends / acquaintances and find balanced groups with diverse skillsets out of his own contact list.","lastModifiedDate":"2024-03-01"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"benson1029"},"content":"**Value proposition**:","lastModifiedDate":"2024-03-01"},{"lineNumber":280,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":281,"author":{"gitId":"benson1029"},"content":"To allow students to find balanced groups with diverse skillsets out of their own contact list.","lastModifiedDate":"2024-03-01"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"benson1029"},"content":"|----------|------------------------------------------------|------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-01"},{"lineNumber":290,"author":{"gitId":"benson1029"},"content":"| `* * *` | student | easily add new coursemates with their information | |","lastModifiedDate":"2024-03-01"},{"lineNumber":291,"author":{"gitId":"benson1029"},"content":"| `* * *` | careless user | edit information in the coursemate list | fix typos or inaccurate information about my friends mistakenly inputted into the app |","lastModifiedDate":"2024-03-01"},{"lineNumber":292,"author":{"gitId":"benson1029"},"content":"| `* * *` | careless user | delete an entry from the coursemate list | remove information mistakenly added to the app |","lastModifiedDate":"2024-03-01"},{"lineNumber":293,"author":{"gitId":"benson1029"},"content":"| `* * *` | student | add or remove skills of a coursemate | remember the strengths of each coursemate and consider them during team formation |","lastModifiedDate":"2024-03-01"},{"lineNumber":294,"author":{"gitId":"benson1029"},"content":"| `* * *` | lazy user | search through my list using specific keywords | avoid scrolling through the entire list |","lastModifiedDate":"2024-03-01"},{"lineNumber":295,"author":{"gitId":"benson1029"},"content":"| `* * *` | student finding group project partners | search for coursemates out of my contact list with a specific skillset | find a partner who is interested in or good at that particular course or subject |","lastModifiedDate":"2024-03-01"},{"lineNumber":296,"author":{"gitId":"benson1029"},"content":"| `* * *` | student forming group project teams | create a group project within the app and add coursemates to the group | remember who is already in the team |","lastModifiedDate":"2024-03-01"},{"lineNumber":297,"author":{"gitId":"benson1029"},"content":"| `* * *` | student forming group project teams | remove coursemates from a group | maintain information correctness after some coursemates are mistakenly added to the group |","lastModifiedDate":"2024-03-01"},{"lineNumber":298,"author":{"gitId":"benson1029"},"content":"| `* *` | user who may not have the best eyesight | change the font size of texts in the app | I can adjust to a size most suited to me |","lastModifiedDate":"2024-03-01"},{"lineNumber":299,"author":{"gitId":"benson1029"},"content":"| `* *` | clueless student new to using the app | know what skills I should look out for in my friends | |","lastModifiedDate":"2024-03-01"},{"lineNumber":300,"author":{"gitId":"benson1029"},"content":"| `* *` | lazy user | autocomplete some commands with possible inputs | complete my tasks faster |","lastModifiedDate":"2024-03-01"},{"lineNumber":301,"author":{"gitId":"benson1029"},"content":"| `* *` | busy user | use the \"up\" arrow key for the app to display the previous command | save time typing a series of similar commands with common substrings |","lastModifiedDate":"2024-03-01"},{"lineNumber":302,"author":{"gitId":"benson1029"},"content":"| `* *` | new user | easily find a list of commands and how they are used | start using the app without difficulties |","lastModifiedDate":"2024-03-01"},{"lineNumber":303,"author":{"gitId":"benson1029"},"content":"| `* *` | student finding group project partners among acquaintances | maintain the contact details of my friends (telegram handles) in the app | easily contact potential groupmates who I don\u0027t frequently contact |","lastModifiedDate":"2024-03-01"},{"lineNumber":304,"author":{"gitId":"benson1029"},"content":"| `* *` | student finding group project partners | input the courses each of my friends are planning to take or confirmed to take | limit my search to friends taking that specific course only |","lastModifiedDate":"2024-03-01"},{"lineNumber":305,"author":{"gitId":"benson1029"},"content":"| `* *` | student finding group project partners | mark coursemates as either friends or acquaintances | prioritise creating groups with some friends over acquaintances |","lastModifiedDate":"2024-03-01"},{"lineNumber":306,"author":{"gitId":"benson1029"},"content":"| `* *` | student forming a group | set some skills as extremely important | prioritise those skills while searching for team members |","lastModifiedDate":"2024-03-01"},{"lineNumber":307,"author":{"gitId":"benson1029"},"content":"| `* *` | student creating a group | search for possible combinations that match the required types of roles and skills | form project groups that require different kinds of roles or skills per member |","lastModifiedDate":"2024-03-01"},{"lineNumber":308,"author":{"gitId":"benson1029"},"content":"| `* *` | student forming a group | save a certain filter or search setting with a label | reuse my past search setting when I take courses of similar nature |","lastModifiedDate":"2024-03-01"},{"lineNumber":309,"author":{"gitId":"benson1029"},"content":"| `* *` | student forming a group | save the set of friends I already contacted with and their respective outcomes | know who else to consider and contact |","lastModifiedDate":"2024-03-01"},{"lineNumber":310,"author":{"gitId":"benson1029"},"content":"| `* *` | user who primarily used other formats to organize contacts | import data from a file | save the hassle of manually adding to the contact list |","lastModifiedDate":"2024-03-01"},{"lineNumber":311,"author":{"gitId":"benson1029"},"content":"| `*` | student bidding for tutorials of courses with group projects | maintain each potential partners\u0027 availability for different tutorial slots | decide on a common tutorial slot to bid for |","lastModifiedDate":"2024-03-01"},{"lineNumber":312,"author":{"gitId":"benson1029"},"content":"| `*` | student with past group project experiences | rate and review my group members after completing a project together | remember their skills, work ethics and collaboration styles during the next team formation |","lastModifiedDate":"2024-03-01"},{"lineNumber":313,"author":{"gitId":"benson1029"},"content":"| `*` | user with colour vision deficiency | customize the app\u0027s colour palette | better suit my visual needs and ensure that important elements and information are easily distinguishable |","lastModifiedDate":"2024-03-01"},{"lineNumber":314,"author":{"gitId":"benson1029"},"content":"| `*` | busy user | create alias commands | run long repetitive commands using a shorter self-made command |","lastModifiedDate":"2024-03-01"},{"lineNumber":315,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":320,"author":{"gitId":"tzaph"},"content":"(For all use cases below, the **System** is `MatchMate` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-04"},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":322,"author":{"gitId":"tzaph"},"content":"**Use case: Add a new contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"tzaph"},"content":"1. User requests to add a new contact along with the data.","lastModifiedDate":"2024-03-04"},{"lineNumber":327,"author":{"gitId":"tzaph"},"content":"2. MatchMate adds the contact to the list.","lastModifiedDate":"2024-03-04"},{"lineNumber":328,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs invalid or incomplete data. ","lastModifiedDate":"2024-03-04"},{"lineNumber":335,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating the data is invalid or incomplete.","lastModifiedDate":"2024-03-04"},{"lineNumber":336,"author":{"gitId":"tzaph"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":337,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":339,"author":{"gitId":"tzaph"},"content":"**Use case: Delete a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":341,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":343,"author":{"gitId":"tzaph"},"content":"1. User requests to delete a contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":344,"author":{"gitId":"tzaph"},"content":"2. MatchMate deletes the contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":346,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":348,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":350,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs a contact that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":351,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating that the contact cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":352,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":353,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":354,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":355,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":356,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":357,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":358,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":359,"author":{"gitId":"tzaph"},"content":"**Use case: List all contacts**","lastModifiedDate":"2024-03-04"},{"lineNumber":360,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":361,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":362,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":363,"author":{"gitId":"tzaph"},"content":"1. User requests to list all contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":364,"author":{"gitId":"tzaph"},"content":"2. MatchMate shows all contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":365,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":366,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":367,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":368,"author":{"gitId":"tzaph"},"content":"**Use case: Edit a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":369,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":370,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":371,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":372,"author":{"gitId":"tzaph"},"content":"1. User requests to edit a contact along with the new data.","lastModifiedDate":"2024-03-04"},{"lineNumber":373,"author":{"gitId":"tzaph"},"content":"2. MatchMate adds the contact to the list.","lastModifiedDate":"2024-03-04"},{"lineNumber":374,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":375,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":376,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":377,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":378,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":379,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":380,"author":{"gitId":"tzaph"},"content":"* 1a. User requests to edit a contact that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":381,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating that the contact cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":382,"author":{"gitId":"tzaph"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":383,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":384,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs invalid or incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":385,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate shows a message indicating the data is invalid or incomplete.","lastModifiedDate":"2024-03-04"},{"lineNumber":386,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":387,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":388,"author":{"gitId":"tzaph"},"content":"* 1c. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":389,"author":{"gitId":"tzaph"},"content":" * 1c1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":390,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":391,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":392,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":393,"author":{"gitId":"tzaph"},"content":"**Use case: Add skills to a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":394,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":395,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":396,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":397,"author":{"gitId":"tzaph"},"content":"1. User requests to add skills to a contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":398,"author":{"gitId":"tzaph"},"content":"2. MatchMate appends the skills to the contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":399,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts.","lastModifiedDate":"2024-03-04"},{"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":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":404,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":405,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":406,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":407,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":408,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":409,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":410,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs a contact that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":411,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate shows a message indicating that the contact cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":412,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":413,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":414,"author":{"gitId":"tzaph"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":415,"author":{"gitId":"tzaph"},"content":"* 1c. User inputs a skill that does not exist yet.","lastModifiedDate":"2024-03-04"},{"lineNumber":416,"author":{"gitId":"tzaph"},"content":" * 1c1. MatchMate shows a warning message indicating that the skill is a new entry.","lastModifiedDate":"2024-03-04"},{"lineNumber":417,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":418,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":419,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":420,"author":{"gitId":"tzaph"},"content":"* 1d. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":421,"author":{"gitId":"tzaph"},"content":" * 1d1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":422,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":423,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":424,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":425,"author":{"gitId":"tzaph"},"content":"**Use case: Delete skills from a contact**","lastModifiedDate":"2024-03-04"},{"lineNumber":426,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":427,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":428,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":429,"author":{"gitId":"tzaph"},"content":"1. User requests to delete existing skills from a contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":430,"author":{"gitId":"tzaph"},"content":"2. MatchMate removes the specified skills from the contact.","lastModifiedDate":"2024-03-04"},{"lineNumber":431,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":432,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":433,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":434,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":435,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":436,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":437,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":438,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating incomplete data.","lastModifiedDate":"2024-03-04"},{"lineNumber":439,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":440,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":441,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":442,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs a contact that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":443,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate shows a message indicating that the contact cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":445,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":447,"author":{"gitId":"tzaph"},"content":"* 1c. User inputs a skill the contact does not have.","lastModifiedDate":"2024-03-04"},{"lineNumber":448,"author":{"gitId":"tzaph"},"content":" * 1c1. MatchMate shows a message indicating that the skill cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":449,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":450,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":451,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":452,"author":{"gitId":"tzaph"},"content":"* 1d. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":453,"author":{"gitId":"tzaph"},"content":" * 1d1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":454,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":455,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":456,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":457,"author":{"gitId":"tzaph"},"content":"**Use case: Filter contacts based on keyword**","lastModifiedDate":"2024-03-04"},{"lineNumber":458,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":459,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":460,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":461,"author":{"gitId":"tzaph"},"content":"1. User requests to find contacts with the specified keyword.","lastModifiedDate":"2024-03-04"},{"lineNumber":462,"author":{"gitId":"tzaph"},"content":"2. MatchMate shows a list of the filtered contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":463,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":464,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":465,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":466,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":467,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":468,"author":{"gitId":"tzaph"},"content":"* 1a. No contacts fulfill the filter search.","lastModifiedDate":"2024-03-04"},{"lineNumber":469,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating no contacts can be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":470,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":471,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":472,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":473,"author":{"gitId":"tzaph"},"content":"**Use case: Create a group**","lastModifiedDate":"2024-03-04"},{"lineNumber":474,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":475,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":476,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":477,"author":{"gitId":"tzaph"},"content":"1. User requests to create a group with a specified name.","lastModifiedDate":"2024-03-04"},{"lineNumber":478,"author":{"gitId":"tzaph"},"content":"2. MatchMate acknowledges the creation of the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":479,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":480,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":481,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":482,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":483,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":484,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs a group name that already exists.","lastModifiedDate":"2024-03-04"},{"lineNumber":485,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating the group already exists.","lastModifiedDate":"2024-03-04"},{"lineNumber":486,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":487,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":488,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":489,"author":{"gitId":"tzaph"},"content":"**Use case: Delete a group**","lastModifiedDate":"2024-03-04"},{"lineNumber":490,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":491,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":492,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":493,"author":{"gitId":"tzaph"},"content":"1. User requests to delete a group.","lastModifiedDate":"2024-03-04"},{"lineNumber":494,"author":{"gitId":"tzaph"},"content":"2. MatchMate deletes the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":495,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":496,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":497,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":498,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":499,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":500,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs a group that does not exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":501,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating that the group cannot be found.","lastModifiedDate":"2024-03-04"},{"lineNumber":502,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":503,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":504,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":505,"author":{"gitId":"tzaph"},"content":"**Use case: Add a contact to a group**","lastModifiedDate":"2024-03-04"},{"lineNumber":506,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":507,"author":{"gitId":"tzaph"},"content":"**MSS**","lastModifiedDate":"2024-03-04"},{"lineNumber":508,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":509,"author":{"gitId":"tzaph"},"content":"1. User requests to add a contact to a group with a specified name or index from the displayed list.","lastModifiedDate":"2024-03-04"},{"lineNumber":510,"author":{"gitId":"tzaph"},"content":"2. MatchMate adds the contact to the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":511,"author":{"gitId":"tzaph"},"content":"3. MatchMate shows the updated list of contacts in the specified group.","lastModifiedDate":"2024-03-04"},{"lineNumber":512,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":513,"author":{"gitId":"tzaph"},"content":" Use case ends.","lastModifiedDate":"2024-03-04"},{"lineNumber":514,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":515,"author":{"gitId":"tzaph"},"content":"**Extensions**","lastModifiedDate":"2024-03-04"},{"lineNumber":516,"author":{"gitId":"tzaph"},"content":" ","lastModifiedDate":"2024-03-04"},{"lineNumber":517,"author":{"gitId":"tzaph"},"content":"* 1a. User inputs a name or index no contacts correspond to.","lastModifiedDate":"2024-03-04"},{"lineNumber":518,"author":{"gitId":"tzaph"},"content":" * 1a1. MatchMate shows a message indicating the contact doesn\u0027t exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":519,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":520,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":521,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":522,"author":{"gitId":"tzaph"},"content":"* 1b. User inputs a group name that doesn\u0027t exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":523,"author":{"gitId":"tzaph"},"content":" * 1b1. MatchMate shows a message indicating the group doesn\u0027t exist.","lastModifiedDate":"2024-03-04"},{"lineNumber":524,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":525,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":526,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":527,"author":{"gitId":"tzaph"},"content":"* 1c. User inputs a name of which multiple contacts have the specified name as a substring.","lastModifiedDate":"2024-03-04"},{"lineNumber":528,"author":{"gitId":"tzaph"},"content":" * 1c1. MatchMate filters and lists the contacts that has the name.","lastModifiedDate":"2024-03-04"},{"lineNumber":529,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":530,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":531,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":532,"author":{"gitId":"tzaph"},"content":"* 1d. The contact is already in the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":533,"author":{"gitId":"tzaph"},"content":" * 1d1. MatchMate shows a message indicating the contact is already in the group.","lastModifiedDate":"2024-03-04"},{"lineNumber":534,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":535,"author":{"gitId":"tzaph"},"content":" Use case resumes at step 1.","lastModifiedDate":"2024-03-04"},{"lineNumber":536,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":537,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":539,"author":{"gitId":"yuhinarita"},"content":"1. **Environment**: Should work on any _mainstream_ OS as long as it has Java `11` or above installed.","lastModifiedDate":"2024-03-01"},{"lineNumber":540,"author":{"gitId":"yuhinarita"},"content":"2. **Performance**: Should respond to user interaction within 3 seconds at most for typical usage (unless it is lagging due to reasons external to the app).","lastModifiedDate":"2024-03-01"},{"lineNumber":541,"author":{"gitId":"yuhinarita"},"content":"3. **Performance**: Should be able to hold up to 1000 _coursemates_ without a noticeable sluggishness in performance (as specified above) for typical usage.","lastModifiedDate":"2024-03-01"},{"lineNumber":542,"author":{"gitId":"yuhinarita"},"content":"4. **Resilience**: Should gracefully handle commonly anticipated errors (e.g. incorrect _command_ input) without crashing or losing saved data.","lastModifiedDate":"2024-03-01"},{"lineNumber":543,"author":{"gitId":"yuhinarita"},"content":"5. **Accessibility**: Should notify the user whether a _command_ is successful or has failed.","lastModifiedDate":"2024-03-01"},{"lineNumber":544,"author":{"gitId":"yuhinarita"},"content":"6. **Accessibility**: Should be accessible to English speakers with average typing speed.","lastModifiedDate":"2024-03-01"},{"lineNumber":545,"author":{"gitId":"yuhinarita"},"content":"7. **Accessibility**: Usage of basic _commands_ (e.g. add, edit) should be learnable within a day.","lastModifiedDate":"2024-03-01"},{"lineNumber":546,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":547,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":548,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":549,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":550,"author":{"gitId":"yuhinarita"},"content":"* **Command**: A user input that will cause the application to perform an operation according to the MatchMate UserGuide","lastModifiedDate":"2024-03-01"},{"lineNumber":551,"author":{"gitId":"yuhinarita"},"content":"* **Coursemate**: A friend or classmate that you expect to form a _group_ based on certain _skills_ they might have","lastModifiedDate":"2024-03-01"},{"lineNumber":552,"author":{"gitId":"yuhinarita"},"content":"* **Group**: A grouping/team of _coursemates_ for a course, project, or activity","lastModifiedDate":"2024-03-01"},{"lineNumber":553,"author":{"gitId":"yuhinarita"},"content":"* **Skill**: Knowledge, ability, or experience that a _coursemate_ has ","lastModifiedDate":"2024-03-01"},{"lineNumber":554,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":555,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":556,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":558,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":560,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":561,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":562,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":563,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":564,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":565,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":566,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":567,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":568,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":569,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":570,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":571,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":572,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":573,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":574,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":575,"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":576,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":577,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":578,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":579,"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":580,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":581,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":582,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":583,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":584,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":585,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":586,"author":{"gitId":"Ryan-Reno"},"content":"### Deleting a courseMate","lastModifiedDate":"2024-03-12"},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":588,"author":{"gitId":"Ryan-Reno"},"content":"1. Deleting a courseMate while all courseMates are being shown","lastModifiedDate":"2024-03-12"},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":590,"author":{"gitId":"Ryan-Reno"},"content":" 1. Prerequisites: List all courseMates using the `list` command. Multiple courseMates in the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":592,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":593,"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":594,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":595,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":596,"author":{"gitId":"Ryan-Reno"},"content":" Expected: No courseMate is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2024-03-12"},{"lineNumber":597,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":598,"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":599,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":600,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":601,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":602,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":603,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":604,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":605,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":606,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":607,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":608,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":609,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"yuhinarita":12,"Ryan-Reno":9,"benson1029":32,"tzaph":193,"-":363}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"# MatchMate User Guide","lastModifiedDate":"2024-03-01"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"Matchmate is a **desktop app to create groups among their friends / acquaintances,","lastModifiedDate":"2024-03-01"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"as well as to allow students to find balanced groups with diverse skillsets out of their own contact list.** ","lastModifiedDate":"2024-03-01"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"It is optimized for Command Line Interface space(CLI) while still having the benefits of a Graphical User Interface (GUI). ","lastModifiedDate":"2024-03-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"1. Ensure you have Java `11` or above installed in your Computer.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"1. Download the latest `matchmate.jar`","lastModifiedDate":"2024-03-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your app.","lastModifiedDate":"2024-03-01"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar matchmate.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-01"},{"lineNumber":21,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01"},{"lineNumber":22,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"-"},"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":25,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" * `add John Doe -p 87654321 -e johndoe@example.com -s Leadership -s C++`: Adds a contact named `John Doe` to the contact list.","lastModifiedDate":"2024-03-01"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" * `delete #3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2024-03-21"},{"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":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12"},{"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":"Ryan-Reno"},"content":" e.g. in `add NAME`, `NAME` is a parameter which can be used as `add John Doe`.","lastModifiedDate":"2024-03-01"},{"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":"Ryan-Reno"},"content":" e.g `add NAME [-p PHONE_NUMBER]` can be used as `add John Doe -p 8762318` or as `add John Doe`.","lastModifiedDate":"2024-03-01"},{"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":"Ryan-Reno"},"content":" e.g. `[-s SKILL]…​` can be used as ` ` (i.e. 0 times), `-s C++`, `-s C++ -s Python` etc.","lastModifiedDate":"2024-03-01"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03"},{"lineNumber":57,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03"},{"lineNumber":59,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":"### Adding a courseMate: `add`","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"Ryan-Reno"},"content":"Adds a contact to the contact list. A name will be required, and all other information will be optional.","lastModifiedDate":"2024-03-01"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":"Format: `add NAME [-p PHONE_NUMBER] [-e EMAIL] [-s SKILL]…​`","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":"- `NAME`: Name of the contact. It can be any string except that it cannot start with the hashtag (#) symbol , and words cannot start with the hyphen (-) character.","lastModifiedDate":"2024-03-01"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":"- `PHONE_NUMBER` (optional): Phone number of the contact. Accepts strings with numeric characters only.","lastModifiedDate":"2024-03-01"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":"- `EMAIL` (optional): Email of the contact. Accepts any strings without spaces.","lastModifiedDate":"2024-03-01"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":"- `SKILL` (zero or multiple allowed): Skill(s) of the courseMate. Accepts any strings, except that words cannot start with the hyphen (-) character. ","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":"**Tip:** A courseMate can have any number of skills (including 0)","lastModifiedDate":"2024-03-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":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":"- `add John Doe`","lastModifiedDate":"2024-03-01"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":"- `add John Doe -p 87654321 -e johndoe@example.com -s Leadership -s C++`","lastModifiedDate":"2024-03-01"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":"### Listing all courseMates : `list`","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":"Lists all contacts in the contact list.","lastModifiedDate":"2024-03-01"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"Ryan-Reno"},"content":"Expected output:","lastModifiedDate":"2024-03-01"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":"- `Message: Listed all contacts`","lastModifiedDate":"2024-03-01"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":101,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":102,"author":{"gitId":"Ryan-Reno"},"content":"### Editing a courseMate : `edit`","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":"Edits an existing contact with a given name. This command supports changing the name, phone number and email.","lastModifiedDate":"2024-03-01"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":"Format: `edit COURSEMATE [-n NEW_NAME] [-p NEW_PHONE_NUMBER] [-e NEW_EMAIL]`","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":108,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":109,"author":{"gitId":"Ryan-Reno"},"content":"- `COURSEMATE`: Name of the existing contact or aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":"- `NEW_NAME` (optional): New name of the contact. It can be any string except that it cannot start with the hashtag (#) symbol, and words cannot start with the hyphen (-) character.","lastModifiedDate":"2024-03-01"},{"lineNumber":111,"author":{"gitId":"Ryan-Reno"},"content":"- `NEW_PHONE_NUMBER` (optional): New phone number of the contact. Accepts strings with numeric characters only.","lastModifiedDate":"2024-03-01"},{"lineNumber":112,"author":{"gitId":"Ryan-Reno"},"content":"- `NEW_EMAIL` (optional): New email of the contact. Accepts any strings without spaces.","lastModifiedDate":"2024-03-01"},{"lineNumber":113,"author":{"gitId":"Ryan-Reno"},"content":" ","lastModifiedDate":"2024-03-01"},{"lineNumber":114,"author":{"gitId":"Ryan-Reno"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"Ryan-Reno"},"content":"**Tip:**","lastModifiedDate":"2024-03-01"},{"lineNumber":117,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":118,"author":{"gitId":"Ryan-Reno"},"content":"Instead of supplying a full name to identify an existing contact, you can use the following shortcuts:","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"Ryan-Reno"},"content":"- `#1`, `#2`, …, `#n` (where n is the number of contacts currently displayed in the contact list panel) – `#k` references the k-th contact currently displayed in the contact list panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":120,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":121,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":122,"author":{"gitId":"Ryan-Reno"},"content":"- `##` – References the contact currently displayed in the detailed view panel.","lastModifiedDate":"2024-03-01"},{"lineNumber":123,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"Ryan-Reno"},"content":"- A substring of the name instead of the full name.","lastModifiedDate":"2024-03-01"},{"lineNumber":126,"author":{"gitId":"Ryan-Reno"},"content":" - In the event of multiple matches (the substring appears in multiple contacts), you will receive the following message: `There are x course mates with similar names.","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"Ryan-Reno"},"content":" Retry the command by specifying the index of the contact in the list, example: #1.` and the list of matching contacts will be displayed in the contact list panel.","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"Ryan-Reno"},"content":" - No side effects will be made by the current command.","lastModifiedDate":"2024-03-01"},{"lineNumber":129,"author":{"gitId":"Ryan-Reno"},"content":" - You should retry the command by finding the contact on the list and using the hashtag notation (`#`) to identify the contact.","lastModifiedDate":"2024-03-01"},{"lineNumber":130,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":131,"author":{"gitId":"Ryan-Reno"},"content":" Example:","lastModifiedDate":"2024-03-01"},{"lineNumber":132,"author":{"gitId":"Ryan-Reno"},"content":" - You have the following contacts listed in the contact list panel:","lastModifiedDate":"2024-03-01"},{"lineNumber":133,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":134,"author":{"gitId":"Ryan-Reno"},"content":" `#1 Benson`","lastModifiedDate":"2024-03-01"},{"lineNumber":135,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":136,"author":{"gitId":"Ryan-Reno"},"content":" `#2 Ben`","lastModifiedDate":"2024-03-01"},{"lineNumber":137,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":138,"author":{"gitId":"Ryan-Reno"},"content":" Typing `edit Ben` will display a warning message for having multiple matches.","lastModifiedDate":"2024-03-01"},{"lineNumber":139,"author":{"gitId":"Ryan-Reno"},"content":" - Case 1 Edit Benson:","lastModifiedDate":"2024-03-01"},{"lineNumber":140,"author":{"gitId":"Ryan-Reno"},"content":" - Type `edit Benson ...` or just its substring `edit Bens ...`","lastModifiedDate":"2024-03-01"},{"lineNumber":141,"author":{"gitId":"Ryan-Reno"},"content":" - Alternatively, you can use the alias `edit #1 ...`","lastModifiedDate":"2024-03-01"},{"lineNumber":142,"author":{"gitId":"Ryan-Reno"},"content":" - Case 2 Edit Ben:","lastModifiedDate":"2024-03-01"},{"lineNumber":143,"author":{"gitId":"Ryan-Reno"},"content":" - Type `edit #2 ...` as you must specify its index in the list.","lastModifiedDate":"2024-03-01"},{"lineNumber":144,"author":{"gitId":"Ryan-Reno"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"Ryan-Reno"},"content":"- `edit John Doe -n Joe Schmo`","lastModifiedDate":"2024-03-01"},{"lineNumber":148,"author":{"gitId":"Ryan-Reno"},"content":"- `edit #1 -n Joe Schmo`","lastModifiedDate":"2024-03-01"},{"lineNumber":149,"author":{"gitId":"Ryan-Reno"},"content":"- `edit John -p 98765432 -e johndoe@gmail.com`","lastModifiedDate":"2024-03-01"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"Ryan-Reno"},"content":"### Add a skill to a contact : `add-skill`","lastModifiedDate":"2024-03-01"},{"lineNumber":152,"author":{"gitId":"benson1029"},"content":"Adds a list of skills to a contact.","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"benson1029"},"content":"Format: `add-skill COURSENAME [-s SKILL]...`","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":157,"author":{"gitId":"benson1029"},"content":"- `COURSENAME`: Name of the existing coursemate. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"Ryan-Reno"},"content":"- `SKILL` (zero or multiple allowed): Skill(s) of the courseMate. Accepts any strings, except that words cannot start with the hyphen (-) character.","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"Ryan-Reno"},"content":"- `add-skill John Doe -s C++ -s Leadership`","lastModifiedDate":"2024-03-01"},{"lineNumber":162,"author":{"gitId":"Ryan-Reno"},"content":"- `add-skill ##`","lastModifiedDate":"2024-03-01"},{"lineNumber":163,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":164,"author":{"gitId":"Ryan-Reno"},"content":" This command does nothing but it will be executed successfully.","lastModifiedDate":"2024-03-01"},{"lineNumber":165,"author":{"gitId":"Ryan-Reno"},"content":" ","lastModifiedDate":"2024-03-01"},{"lineNumber":166,"author":{"gitId":"Ryan-Reno"},"content":"### Delete a skill from a contact : `delete-skill`","lastModifiedDate":"2024-03-01"},{"lineNumber":167,"author":{"gitId":"benson1029"},"content":"Deletes a list of skills from a contact.","lastModifiedDate":"2024-03-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"benson1029"},"content":"Format: `delete-skill COURSEMATE [-s SKILL]...`","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":172,"author":{"gitId":"benson1029"},"content":"- `COURSEMATE`: Name of the existing coursemate. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"Ryan-Reno"},"content":"- `SKILL`: (zero or multiple allowed): Skill(s) of the courseMate. These must be existing skills that the contact contains.","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"Ryan-Reno"},"content":"- `delete-skill John Doe -s C++ -s Leadership`","lastModifiedDate":"2024-03-01"},{"lineNumber":177,"author":{"gitId":"Ryan-Reno"},"content":"- `delete-skill ##`","lastModifiedDate":"2024-03-01"},{"lineNumber":178,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":179,"author":{"gitId":"Ryan-Reno"},"content":" This command does nothing but it will be executed successfully.","lastModifiedDate":"2024-03-01"},{"lineNumber":180,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":181,"author":{"gitId":"Ryan-Reno"},"content":"### Search contacts with a keyword: `find`","lastModifiedDate":"2024-03-01"},{"lineNumber":182,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":183,"author":{"gitId":"benson1029"},"content":"Searches contacts that include a matching keyword, in their name or skills. More relevant fields can be supported in the future.","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":185,"author":{"gitId":"benson1029"},"content":"To match a contact’s skill, the keyword should match exactly with the skill. To match a contact’s name, the keyword can be a case-insensitive substring of the name.","lastModifiedDate":"2024-03-21"},{"lineNumber":186,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":187,"author":{"gitId":"Ryan-Reno"},"content":"Format: `find KEYWORD`","lastModifiedDate":"2024-03-01"},{"lineNumber":188,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":189,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":190,"author":{"gitId":"benson1029"},"content":"- `KEYWORD`: The keyword of the search. Accepts any strings.","lastModifiedDate":"2024-03-21"},{"lineNumber":191,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":192,"author":{"gitId":"Ryan-Reno"},"content":"Examples:","lastModifiedDate":"2024-03-01"},{"lineNumber":193,"author":{"gitId":"Ryan-Reno"},"content":"- `find John`","lastModifiedDate":"2024-03-01"},{"lineNumber":194,"author":{"gitId":"Ryan-Reno"},"content":"- `find C++`","lastModifiedDate":"2024-03-01"},{"lineNumber":195,"author":{"gitId":"benson1029"},"content":"- `find CS2103T G18`","lastModifiedDate":"2024-03-21"},{"lineNumber":196,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":197,"author":{"gitId":"Ryan-Reno"},"content":"### Deleting a contact : `delete`","lastModifiedDate":"2024-03-01"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":199,"author":{"gitId":"Ryan-Reno"},"content":"Deletes a contact with a given name.","lastModifiedDate":"2024-03-01"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":201,"author":{"gitId":"benson1029"},"content":"Format: `delete COURSEMATE`","lastModifiedDate":"2024-03-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":203,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":204,"author":{"gitId":"benson1029"},"content":"- `COURSEMATE`: Name of the existing coursemate. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-21"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":206,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-01"},{"lineNumber":207,"author":{"gitId":"Ryan-Reno"},"content":"- `delete ##`","lastModifiedDate":"2024-03-01"},{"lineNumber":208,"author":{"gitId":"Ryan-Reno"},"content":"- `delete John`","lastModifiedDate":"2024-03-01"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":210,"author":{"gitId":"Ryan-Reno"},"content":"### Create group project: `create-group`","lastModifiedDate":"2024-03-01"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":212,"author":{"gitId":"benson1029"},"content":"Creates a group project. You can specify the coursemates in the group when creating the group, or choose to add them later.","lastModifiedDate":"2024-03-21"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":214,"author":{"gitId":"benson1029"},"content":"Format: `create-group GROUP_NAME [-cm COURSEMATE]`","lastModifiedDate":"2024-03-21"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":216,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":217,"author":{"gitId":"Ryan-Reno"},"content":"- `GROUP_NAME`: The group name. Accepts any strings, except that words cannot start with the hyphen (-) character.","lastModifiedDate":"2024-03-01"},{"lineNumber":218,"author":{"gitId":"benson1029"},"content":"- `COURSEMATE` (zero or multiple allowed): Name of the existing coursemates to be added to the group. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-21"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":220,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-21"},{"lineNumber":221,"author":{"gitId":"benson1029"},"content":"- `create-group CS2103T G18`","lastModifiedDate":"2024-03-21"},{"lineNumber":222,"author":{"gitId":"benson1029"},"content":"- `create-group CS2103T G18 -cm John -cm #2`","lastModifiedDate":"2024-03-21"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":224,"author":{"gitId":"benson1029"},"content":"### Add coursemates to group: `add-member`","lastModifiedDate":"2024-03-21"},{"lineNumber":225,"author":{"gitId":"benson1029"},"content":"Adds some team members to an existing group.","lastModifiedDate":"2024-03-21"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":227,"author":{"gitId":"benson1029"},"content":"Format: `add-member GROUP_NAME [-cm COURSEMATE]...`","lastModifiedDate":"2024-03-21"},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":229,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":230,"author":{"gitId":"benson1029"},"content":"- `GROUP_NAME`: Name of the existing group.","lastModifiedDate":"2024-03-21"},{"lineNumber":231,"author":{"gitId":"benson1029"},"content":"- `COURSEMATE`: Name of the existing coursemates to be added to the group. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-21"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":233,"author":{"gitId":"Ryan-Reno"},"content":"Examples:","lastModifiedDate":"2024-03-01"},{"lineNumber":234,"author":{"gitId":"benson1029"},"content":"- `add-member CS2103T G18 -cm Ivan -cm #1`","lastModifiedDate":"2024-03-21"},{"lineNumber":235,"author":{"gitId":"benson1029"},"content":"- `add-member CS2103T G18 -cm ##`","lastModifiedDate":"2024-03-21"},{"lineNumber":236,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":237,"author":{"gitId":"benson1029"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":238,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":239,"author":{"gitId":"benson1029"},"content":"**Tip:** Different from coursemate names, group names must be an exact match.","lastModifiedDate":"2024-03-21"},{"lineNumber":240,"author":{"gitId":"benson1029"},"content":"\u003c/box\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":241,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":242,"author":{"gitId":"benson1029"},"content":"### Delete coursemates from group: `delete-member`","lastModifiedDate":"2024-03-21"},{"lineNumber":243,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":244,"author":{"gitId":"benson1029"},"content":"Deletes some team members from an existing group.","lastModifiedDate":"2024-03-21"},{"lineNumber":245,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":246,"author":{"gitId":"benson1029"},"content":"Format: `delete-member GROUP_NAME [-cm COURSEMATE]...`","lastModifiedDate":"2024-03-21"},{"lineNumber":247,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":248,"author":{"gitId":"benson1029"},"content":"Parameters:","lastModifiedDate":"2024-03-21"},{"lineNumber":249,"author":{"gitId":"benson1029"},"content":"- `GROUP_NAME`: Name of the existing group.","lastModifiedDate":"2024-03-21"},{"lineNumber":250,"author":{"gitId":"benson1029"},"content":"- `COURSEMATE`: Name of the existing coursemates to be deleted from the group. Accepts aliases (substrings or in hashtag (#) notation).","lastModifiedDate":"2024-03-21"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":252,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2024-03-21"},{"lineNumber":253,"author":{"gitId":"benson1029"},"content":"- `delete-member CS2103T G18 -cm Ivan -cm #1`","lastModifiedDate":"2024-03-21"},{"lineNumber":254,"author":{"gitId":"benson1029"},"content":"- `delete-member CS2103T G18 -cm ##`","lastModifiedDate":"2024-03-21"},{"lineNumber":255,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":256,"author":{"gitId":"Ryan-Reno"},"content":"### Delete a group: `delete-group`","lastModifiedDate":"2024-03-01"},{"lineNumber":257,"author":{"gitId":"benson1029"},"content":"Deletes a group.","lastModifiedDate":"2024-03-21"},{"lineNumber":258,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":259,"author":{"gitId":"Ryan-Reno"},"content":"Format: `delete-group GROUP_NAME`","lastModifiedDate":"2024-03-01"},{"lineNumber":260,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":261,"author":{"gitId":"benson1029"},"content":"Example: `delete-group CS2103T G18`","lastModifiedDate":"2024-03-21"},{"lineNumber":262,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":263,"author":{"gitId":"Ryan-Reno"},"content":"Parameters:","lastModifiedDate":"2024-03-01"},{"lineNumber":264,"author":{"gitId":"Ryan-Reno"},"content":"- `GROUP_NAME`: Name of the existing group.","lastModifiedDate":"2024-03-01"},{"lineNumber":265,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-01"},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":267,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":269,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":277,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"Ryan-Reno"},"content":"### Save and load the state of app","lastModifiedDate":"2024-03-01"},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"benson1029"},"content":"Load the saved data when starting the app. Save the state of coursemates and groups every time it is updated via adding or editing. This should run automatically on start and subsequently after a command that alters the state of the app (e.g. add, edit).","lastModifiedDate":"2024-03-21"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":283,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":285,"author":{"gitId":"Ryan-Reno"},"content":"MatchMate data are saved automatically as a JSON file `[JAR file location]/data/matchmate.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-01"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":287,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":290,"author":{"gitId":"Ryan-Reno"},"content":"If your changes to the data file makes its format invalid, MatchMate 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-01"},{"lineNumber":291,"author":{"gitId":"Ryan-Reno"},"content":"Furthermore, certain edits can cause the MatchMate 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-01"},{"lineNumber":292,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":295,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"Ryan-Reno"},"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 MatchMate home folder.","lastModifiedDate":"2024-03-01"},{"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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":306,"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":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":308,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":310,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":312,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":313,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":314,"author":{"gitId":"benson1029"},"content":"**Add coursemate** | `add NAME [-p PHONE_NUMBER] [-e EMAIL] [-s SKILL]…​` \u003cbr\u003e e.g., `add John Doe -p 87654321 -e johndoe@example.com -s Leadership -s C++`","lastModifiedDate":"2024-03-21"},{"lineNumber":315,"author":{"gitId":"benson1029"},"content":"**Add group member** | `add-member GROUP_NAME [-cm COURSEMATE]...` \u003cbr\u003e e.g., `add-member CS2103T G18 -cm Ivan -cm ##`","lastModifiedDate":"2024-03-21"},{"lineNumber":316,"author":{"gitId":"benson1029"},"content":"**Add skill** | ` add-skill COURSEMATE [-s SKILL]...` \u003cbr\u003e e.g., `add-skill John Doe -s C++ -s Leadership`","lastModifiedDate":"2024-03-21"},{"lineNumber":317,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":318,"author":{"gitId":"benson1029"},"content":"**Create group** | `create-group GROUP_NAME [-cm COURSEMATE]` \u003cbr\u003e e.g., `create-group CS2103T G18 -cm John -cm #2`","lastModifiedDate":"2024-03-21"},{"lineNumber":319,"author":{"gitId":"benson1029"},"content":"**Delete coursemate** | `delete COURSEMATE` \u003cbr\u003e e.g., `delete John`","lastModifiedDate":"2024-03-21"},{"lineNumber":320,"author":{"gitId":"benson1029"},"content":"**Delete group** | `delete-group GROUP_NAME` \u003cbr\u003e e.g., `delete-group CS2103T G18`","lastModifiedDate":"2024-03-21"},{"lineNumber":321,"author":{"gitId":"benson1029"},"content":"**Delete group member** | `delete-member GROUP_NAME [-cm COURSEMATE]` \u003cbr\u003e e.g., `delete-member CS2103T G18 -cm Ivan -cm #1`","lastModifiedDate":"2024-03-21"},{"lineNumber":322,"author":{"gitId":"benson1029"},"content":"**Delete skill** | `delete-skill COURSEMATE [-s SKILL]...` \u003cbr\u003e e.g., `delete-skill John Doe -s C++ -s Leadership `","lastModifiedDate":"2024-03-21"},{"lineNumber":323,"author":{"gitId":"benson1029"},"content":"**Edit coursemate** | `edit COURSEMATE [-n NEW_NAME] [-p NEW_PHONE_NUMBER] [-e NEW_EMAIL]…​`\u003cbr\u003e e.g.,`edit John -p 98765432 -e johndoe@gmail.com`","lastModifiedDate":"2024-03-21"},{"lineNumber":324,"author":{"gitId":"Ryan-Reno"},"content":"**Find** | `find KEYWORD`\u003cbr\u003e e.g., `find John`","lastModifiedDate":"2024-03-01"},{"lineNumber":325,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Ryan-Reno":128,"benson1029":53,"-":145}},{"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":"Ryan-Reno"},"content":"user -[USER_COLOR]\u003e ui : \"delete #1\"","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"delete #1\")","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":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":"Ryan-Reno"},"content":"ContactList *-right-\u003e \"1\" UniquePersonList","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"ContactList *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":"UniquePersonList -right-\u003e CourseMate","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"CourseMate -up-\u003e \"*\" Tag","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"CourseMate *--\u003e Name","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"CourseMate *--\u003e Phone","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"CourseMate *--\u003e Email","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Ryan-Reno":7,"-":13}},{"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":"Ryan-Reno"},"content":"if () then ([command commits ContactList])","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":" :Purge redundant states;","lastModifiedDate":"2020-12-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":" :Save contactList to","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":" contactListStateList;","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":3,"-":15}},{"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":"Ryan-Reno"},"content":"participant \":MatchMateParser\" as MatchMateParser 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":"Ryan-Reno"},"content":"[-\u003e LogicManager : execute(\"delete #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":"Ryan-Reno"},"content":"LogicManager -\u003e MatchMateParser : parseCommand(\"delete #1\")","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":"activate MatchMateParser","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":"Ryan-Reno"},"content":"MatchMateParser -\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":"Ryan-Reno"},"content":"DeleteCommandParser --\u003e MatchMateParser","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":"Ryan-Reno"},"content":"MatchMateParser -\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":"Ryan-Reno"},"content":"DeleteCommandParser --\u003e MatchMateParser : 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":"Ryan-Reno"},"content":"DeleteCommandParser -[hidden]-\u003e MatchMateParser","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":"Ryan-Reno"},"content":"MatchMateParser --\u003e LogicManager : d","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":"deactivate MatchMateParser","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":{"Ryan-Reno":11,"-":59}},{"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":"Ryan-Reno"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyContactList\" as ReadOnlyContactList","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyGroupList\" as ReadOnlyGroupList","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"Class ContactList","lastModifiedDate":"2024-03-20"},{"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":"ivan24004"},"content":"Class GroupList","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"Class UniqueCourseMateList","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"Class CourseMate","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":"Ryan-Reno"},"content":"Class Skill","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":"Class UniqueGroupList","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":"Class Group","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"Ryan-Reno"},"content":"ContactList .up.|\u003e ReadOnlyContactList","lastModifiedDate":"2024-03-20"},{"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":"ivan24004"},"content":"Model .right.\u003e ReadOnlyGroupList","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":"Model .left.\u003e ReadOnlyContactList","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":"ModelManager -left-\u003e \"1\" ContactList","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":"ModelManager -right-\u003e \"1\" GroupList","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":"GroupList .up.|\u003e ReadOnlyGroupList","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":"ContactList *--\u003e \"1\" UniqueCourseMateList","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":"UniqueCourseMateList --\u003e \"~* all\" CourseMate","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":"CourseMate *--\u003e Name","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":"CourseMate *--\u003e Phone","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":"CourseMate *--\u003e Email","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":"CourseMate *--\u003e \"*\" Skill","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":"GroupList *--\u003e \"1\" UniqueGroupList","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":"UniqueGroupList --\u003e \"* all\" Group","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":"Group --|\u003e UniqueCourseMateList","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":"Group *--\u003e Name","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":"CourseMate -[hidden]up--\u003e I","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"tzaph"},"content":"UniqueCourseMateList -[hidden]right-\u003e I","lastModifiedDate":"2024-03-21"},{"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":"Ryan-Reno"},"content":"ModelManager --\u003e \"~* filtered\" CourseMate","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Ryan-Reno":14,"tzaph":8,"-":35,"ivan24004":7}},{"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":"Ryan-Reno"},"content":"Class MatchMateParser","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":"HiddenOutside ..\u003e MatchMateParser","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":"MatchMateParser .down.\u003e XYZCommandParser: \u003c\u003ccreate\u003e\u003e","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":"MatchMateParser ..\u003e Command : \u003c\u003cuse\u003e\u003e","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":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":"Ryan-Reno"},"content":"package \"ContactList Storage\" #F4F6F6{","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nContactListStorage\" as ContactListStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"Class JsonContactListStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"Class JsonSerializableContactList","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":"Class JsonAdaptedCourseMate","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"Class JsonAdaptedSkill","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":"ivan24004"},"content":"package \"GroupList Storage\" #F4F6F6{","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nGroupListStorage\" as GroupListStorage","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":"Class JsonGroupListStorage","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":"Class JsonSerializableGroupList","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":"Class JsonAdaptedGroup","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":34,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31"},{"lineNumber":35,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":"StorageManager .right.|\u003e Storage","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":"StorageManager --\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":"StorageManager --\u003e \"1\" ContactListStorage","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":"StorageManager --\u003e \"1\" GroupListStorage","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":"Storage ---|\u003e UserPrefsStorage","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":"Storage ---|\u003e ContactListStorage","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":"Storage ---|\u003e GroupListStorage","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":"JsonContactListStorage .up.|\u003e ContactListStorage","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":"JsonGroupListStorage .up.|\u003e GroupListStorage","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":"JsonContactListStorage ..\u003e JsonSerializableContactList","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":"JsonSerializableContactList ---\u003e \"*\" JsonAdaptedCourseMate","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":"JsonAdaptedCourseMate --\u003e \"*\" JsonAdaptedSkill","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":"JsonGroupListStorage ..\u003e JsonSerializableGroupList","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":"JsonSerializableGroupList --\u003e \"*\" JsonAdaptedGroup","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":"JsonAdaptedGroup --\u003e \"*\" JsonAdaptedCourseMate","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Ryan-Reno":9,"-":31,"ivan24004":18}},{"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":"benson1029"},"content":"Class CourseMateListPanel","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"benson1029"},"content":"Class CourseMateCard","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"benson1029"},"content":"Class CourseMateDetailPanel","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":"Class GroupListPanel","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":"Class GroupListCard","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":31,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03"},{"lineNumber":32,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":34,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03"},{"lineNumber":35,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":"MainWindow *-down- \"1\" CourseMateListPanel","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":"MainWindow *-down-\u003e \"1\" CourseMateDetailPanel","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"yuhinarita"},"content":"MainWindow *-down-\u003e \"1\" GroupListPanel","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31"},{"lineNumber":42,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":44,"author":{"gitId":"benson1029"},"content":"CourseMateListPanel -down-\u003e \"*\" CourseMateCard","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":46,"author":{"gitId":"yuhinarita"},"content":"GroupListPanel -down-\u003e \"*\" GroupListCard","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":51,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":52,"author":{"gitId":"benson1029"},"content":"CourseMateListPanel --|\u003e UiPart","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"benson1029"},"content":"CourseMateCard --|\u003e UiPart","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"benson1029"},"content":"CourseMateDetailPanel --|\u003e UiPart","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"yuhinarita"},"content":"GroupListCard --|\u003e UiPart","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"yuhinarita"},"content":"GroupListPanel --|\u003e UiPart","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":58,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":60,"author":{"gitId":"benson1029"},"content":"CourseMateCard ...\u003e Model","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"benson1029"},"content":"CourseMateDetailPanel ..\u003e Model","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"yuhinarita"},"content":"GroupListCard ...\u003e Model","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":64,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":66,"author":{"gitId":"benson1029"},"content":"CourseMateListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"yuhinarita"},"content":"GroupListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":72,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03"},{"lineNumber":73,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"yuhinarita":8,"benson1029":12,"-":53}},{"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":"Ryan-Reno"},"content":" class State1 as \"\u003cu\u003ecl0:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" class State2 as \"\u003cu\u003ecl1:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":" class State3 as \"\u003cu\u003ecl2:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03"},{"lineNumber":14,"author":{"gitId":"-"},"content":"State1 -[hidden]right-\u003e State2","lastModifiedDate":"2019-07-03"},{"lineNumber":15,"author":{"gitId":"-"},"content":"State2 -[hidden]right-\u003e State3","lastModifiedDate":"2019-07-03"},{"lineNumber":16,"author":{"gitId":"-"},"content":"hide State2","lastModifiedDate":"2019-07-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"hide 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":"Pointer -up-\u003e State1","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Ryan-Reno":3,"-":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":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" class State1 as \"\u003cu\u003ecl0:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" class State2 as \"\u003cu\u003ecl1:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":" class State3 as \"\u003cu\u003ecl2:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":3,"-":20}},{"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":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" class State1 as \"\u003cu\u003ecl0:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" class State2 as \"\u003cu\u003ecl1:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":" class State3 as \"\u003cu\u003ecl2:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":3,"-":18}},{"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":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" class State1 as \"\u003cu\u003ecl0:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" class State2 as \"\u003cu\u003ecl1:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":" class State3 as \"\u003cu\u003ecl2:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":3,"-":18}},{"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":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" class State1 as \"\u003cu\u003ecl0:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" class State2 as \"\u003cu\u003ecl1:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":" class State3 as \"\u003cu\u003ecl2:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":3,"-":18}},{"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":"-"},"content":"package States \u003c\u003crectangle\u003e\u003e {","lastModifiedDate":"2019-07-03"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" class State1 as \"\u003cu\u003ecl0:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" class State2 as \"\u003cu\u003ecl1:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":" class State3 as \"\u003cu\u003ecl2:ContactList\u003c/u\u003e\"","lastModifiedDate":"2024-03-20"},{"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":"note right on link: State ab2 deleted.","lastModifiedDate":"2019-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@end","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"Ryan-Reno":3,"-":19}},{"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":"Ryan-Reno"},"content":"participant \":MatchMateParser\" as MatchMateParser LOGIC_COLOR","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":"LogicManager -\u003e MatchMateParser : parseCommand(undo)","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"activate MatchMateParser","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"create UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":"MatchMateParser -\u003e UndoCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":"activate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":"UndoCommand --\u003e MatchMateParser","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"deactivate UndoCommand","lastModifiedDate":"2019-07-03"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":"MatchMateParser --\u003e LogicManager : u","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":"deactivate MatchMateParser","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":"UndoCommand -\u003e Model : undoContactList()","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":8,"-":38}},{"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":"Ryan-Reno"},"content":"participant \":VersionedContactList\" as VersionedContactList MODEL_COLOR","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2024-02-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"[-\u003e Model : undoContactList()","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2024-02-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"Model -\u003e VersionedContactList : undo()","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"activate VersionedContactList","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"VersionedContactList -\u003e VersionedContactList :resetData(ReadOnlyContactList)","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"VersionedContactList --\u003e Model :","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"deactivate VersionedContactList","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":7,"-":16}},{"path":"docs/diagrams/tracing/LogicSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-06-17"},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include ../style.puml","lastModifiedDate":"2019-06-17"},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":5,"author":{"gitId":"-"},"content":"Participant \":LogicManager\" as logic LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":AddressBookParser\" as abp LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":EditCommandParser\" as ecp LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \"command:EditCommand\" as ec LOGIC_COLOR","lastModifiedDate":"2019-06-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"[-\u003e logic : execute","lastModifiedDate":"2019-06-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate logic","lastModifiedDate":"2019-06-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"logic -\u003e abp ++: parseCommand(commandText)","lastModifiedDate":"2019-06-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"create ecp","lastModifiedDate":"2019-06-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"abp -\u003e ecp","lastModifiedDate":"2019-06-17"},{"lineNumber":15,"author":{"gitId":"-"},"content":"abp -\u003e ecp ++: parse(arguments)","lastModifiedDate":"2019-06-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"create ec","lastModifiedDate":"2019-06-17"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"ecp -\u003e ec ++: index, editCourseMateDescriptor","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"ec --\u003e ecp --","lastModifiedDate":"2019-06-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"ecp --\u003e abp --: command","lastModifiedDate":"2019-06-17"},{"lineNumber":20,"author":{"gitId":"-"},"content":"abp --\u003e logic --: command","lastModifiedDate":"2019-06-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-06-17"}],"authorContributionMap":{"Ryan-Reno":1,"-":21}},{"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":"benson1029"},"content":"# MatchMate","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":{"benson1029":1,"-":20}},{"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":"Ryan-Reno"},"content":" * Changes the remark of an existing courseMate in the address book.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" + \": Edits the remark of the courseMate identified \"","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" + \"by the index number used in the last courseMate listing. \"","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * @param index of the courseMate in the filtered courseMate list to edit the remark","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"Ryan-Reno"},"content":" * @param remark of the courseMate to be updated to","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"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 courseMate 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 courseMate’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 courseMate.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"Create a new `Remark` in `seedu.address.model.courseMate`. Since a `Remark` is a field that is similar to `Address`, we can reuse a significant bit of code.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"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 courseMate.","lastModifiedDate":"2024-03-12"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":246,"author":{"gitId":"Ryan-Reno"},"content":"Simply add the following to [`seedu.address.ui.CourseMateCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-639834f1e05afe2276a86372adf0fe5f69314642c2d93cfa543d614ce5a76688).","lastModifiedDate":"2024-03-12"},{"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":"-"},"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 address book!","lastModifiedDate":"2023-09-12"},{"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":"Ryan-Reno"},"content":"public PersonCard(Person courseMate, int displayedIndex) {","lastModifiedDate":"2024-03-12"},{"lineNumber":316,"author":{"gitId":"-"},"content":" //...","lastModifiedDate":"2020-07-29"},{"lineNumber":317,"author":{"gitId":"Ryan-Reno"},"content":" remark.setText(courseMate.getRemark().value);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" Person courseMateToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":348,"author":{"gitId":"Ryan-Reno"},"content":" Person editedCourseMate \u003d new Person(","lastModifiedDate":"2024-03-12"},{"lineNumber":349,"author":{"gitId":"Ryan-Reno"},"content":" courseMateToEdit.getName(), courseMateToEdit.getPhone(), courseMateToEdit.getEmail(),","lastModifiedDate":"2024-03-12"},{"lineNumber":350,"author":{"gitId":"Ryan-Reno"},"content":" courseMateToEdit.getAddress(), remark, courseMateToEdit.getTags());","lastModifiedDate":"2024-03-12"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-29"},{"lineNumber":352,"author":{"gitId":"Ryan-Reno"},"content":" model.setPerson(courseMateToEdit, editedCourseMate);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" return new CommandResult(generateSuccessMessage(editedCourseMate));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * {@code courseMateToEdit}.","lastModifiedDate":"2024-03-12"},{"lineNumber":362,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-07-29"},{"lineNumber":363,"author":{"gitId":"Ryan-Reno"},"content":" private String generateSuccessMessage(Person courseMateToEdit) {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" return String.format(message, courseMateToEdit);","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":20,"-":382}},{"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":"Ryan-Reno"},"content":"The `address` field in `Person` is actually an instance of the `seedu.address.model.courseMate.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-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"* :bulb: To make things simpler, you can unselect the options `Search in comments and strings` and `Search for text occurrences`","lastModifiedDate":"2021-08-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":"![Usages detected](../images/remove/UnsafeDelete.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"Choose to `View Usages` and you should be presented with a list of `Safe Delete Conflicts`. These conflicts describe locations in which the `Address` class is used.","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"![List of conflicts](../images/remove/SafeDeleteConflicts.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"Remove usages of `Address` by performing `Safe Delete`s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose `Refactor` -\u003e `Safe delete` as before). You will need to exercise discretion when removing usages of `Address`. Functions like `ParserUtil#parseAddress()` can be safely removed but its usages must be removed as well. Other usages like in `EditPersonDescriptor` may require more careful inspection.","lastModifiedDate":"2021-08-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"Let’s try removing references to `Address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"1. Safe delete the field `address` in `EditPersonDescriptor`.","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":"1. Select `Yes` when prompted to remove getters and setters.","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":"1. Select `View Usages` again.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" ![UnsafeDeleteOnField](../images/remove/UnsafeDeleteOnField.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":"1. Remove the usages of `address` and select `Do refactor` when you are done.","lastModifiedDate":"2020-05-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" **Tip:** Removing usages may result in errors. Exercise discretion and fix them. For example, removing the `address` field from the `Person` class will require you to modify its constructor.","lastModifiedDate":"2023-09-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"1. Repeat the steps for the remaining usages of `Address`","lastModifiedDate":"2020-05-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":63,"author":{"gitId":"-"},"content":"After you are done, verify that the application still works by compiling and running it again.","lastModifiedDate":"2020-05-23"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":65,"author":{"gitId":"-"},"content":"### Manual refactoring","lastModifiedDate":"2020-05-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"Unfortunately, there are usages of `Address` that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word `address` in your code (`Edit` \\\u003e `Find` \\\u003e `Find in path`).","lastModifiedDate":"2020-05-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":"Places of interest to look out for would be resources used by the application. `main/resources` contains images and `fxml` files used by the application and `test/resources` contains test data. For example, there is a `$address` in each `PersonCard` that has not been removed nor identified.","lastModifiedDate":"2020-05-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"![$address](../images/remove/$address.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"A quick look at the `PersonCard` class and its `fxml` file quickly reveals why it slipped past the automated refactoring.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"**`PersonCard.java`**","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2020-05-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":"@FXML","lastModifiedDate":"2020-05-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":"private Label address;","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"**`PersonCard.fxml`**","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"``` xml","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"After removing the `Label`, we can proceed to formally test our code. If everything went well, you should have most of your tests pass. Fix any remaining errors until the tests all pass.","lastModifiedDate":"2020-05-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"## Tidying up","lastModifiedDate":"2020-05-23"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":"At this point, your application is working as intended and all your tests are passing. What’s left to do is to clean up references to `Address` in test data and documentation.","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"In `src/test/data/`, data meant for testing purposes are stored. While keeping the `address` field in the json files does not cause the tests to fail, it is not good practice to let cruft from old features accumulate.","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":"**`invalidPersonAddressBook.json`:**","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":"```json","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"{","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" \"courseMates\": [ {","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":2,"-":113}},{"path":"docs/tutorials/TracingCode.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Tutorial: Tracing code\"","lastModifiedDate":"2020-05-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"# Tutorial: Tracing code","lastModifiedDate":"2023-09-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003e Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …​\\[Therefore,\\] making it easy to read makes it easier to write.","lastModifiedDate":"2020-05-23"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003e — Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"-"},"content":"When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.","lastModifiedDate":"2020-05-23"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c!-- {:toc} --\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"-"},"content":"## Before we start","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the \u0027Architecture\u0027 section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureDiagram.puml\" alt\u003d\"ArchitectureDiagram\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"-"},"content":"It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"Note how the diagram shows only the execution flows _between_ the main components. That is, it does not show details of the execution path *inside* each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.","lastModifiedDate":"2021-07-31"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"Before we proceed, ensure that you have done the following:","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":"1. Read the [*Architecture* section of the DG](../DeveloperGuide.md#architecture)","lastModifiedDate":"2020-05-23"},{"lineNumber":33,"author":{"gitId":"-"},"content":"1. Set up the project in Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"1. Learn basic debugging features of Intellij IDEA","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"-"},"content":" * If you are using a different IDE, we\u0027ll leave it to you to figure out the equivalent feature to use in your IDE.","lastModifiedDate":"2021-07-31"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * If you are not using an IDE, we\u0027ll let you figure out how to achieve the same using your coding toolchain.","lastModifiedDate":"2021-07-31"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"## Setting a breakpoint","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the `main` method.","lastModifiedDate":"2021-07-31"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":"In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various *event-driven mechanisms* used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the `UI` transfers control to the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":46,"author":{"gitId":"-"},"content":"According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"../images/tracing/searchResultsForExecuteMethod.png\" /\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":50,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":52,"author":{"gitId":"-"},"content":"**Intellij Tip:** The [\u0027**Search Everywhere**\u0027 feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the \u0027**Find Symbol**\u0027 (\u0027Symbol\u0027 here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.","lastModifiedDate":"2023-09-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":55,"author":{"gitId":"-"},"content":"A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.","lastModifiedDate":"2021-07-31"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":57,"author":{"gitId":"-"},"content":"```java","lastModifiedDate":"2021-07-31"},{"lineNumber":58,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2021-07-31"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-07-31"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2021-07-31"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2021-07-31"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2021-07-31"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2021-07-31"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-07-31"},{"lineNumber":66,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2021-07-31"},{"lineNumber":67,"author":{"gitId":"-"},"content":"...","lastModifiedDate":"2021-07-31"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31"},{"lineNumber":69,"author":{"gitId":"-"},"content":"```","lastModifiedDate":"2021-07-31"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":71,"author":{"gitId":"-"},"content":"But apparently, this is an interface, not a concrete implementation.","lastModifiedDate":"2021-07-31"},{"lineNumber":72,"author":{"gitId":"-"},"content":"That should be fine because the [Architecture section of the Developer Guide](../DeveloperGuide.html#architecture) tells us that components interact through interfaces. Here\u0027s the relevant diagram:","lastModifiedDate":"2021-07-31"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"../diagrams/ComponentManagers.puml\" /\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":76,"author":{"gitId":"-"},"content":"Next, let\u0027s find out which statement(s) in the `UI` code is calling this method, thus transferring control from the `UI` to the `Logic`.","lastModifiedDate":"2021-07-31"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":78,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":80,"author":{"gitId":"-"},"content":"**Intellij Tip:** The [\u0027**Find Usages**\u0027 feature](https://www.jetbrains.com/help/idea/find-highlight-usages.html#find-usages) can find from which parts of the code a class/method/variable is being used.","lastModifiedDate":"2023-09-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"![`Find Usages` tool window. `Edit` \\\u003e `Find` \\\u003e `Find Usages`.](../images/tracing/FindUsages.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"Bingo\\! `MainWindow#executeCommand()` seems to be exactly what we’re looking for\\!","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":"Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.","lastModifiedDate":"2020-05-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":" ![LeftGutter](../images/tracing/LeftGutter.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":90,"author":{"gitId":"-"},"content":"## Tracing the execution path","lastModifiedDate":"2020-05-23"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":92,"author":{"gitId":"-"},"content":"Recall from the User Guide that the `edit` command has the format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​` For this tutorial we will be issuing the command `edit 1 n/Alice Yeoh`.","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":"**Tip:** Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.","lastModifiedDate":"2023-09-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"1. To start the debugging session, simply `Run` \\\u003e `Debug Main`","lastModifiedDate":"2020-05-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":"1. When the GUI appears, enter `edit 1 n/Alice Yeoh` into the command box and press `Enter`.","lastModifiedDate":"2021-07-31"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. The Debugger tool window should show up and show something like this:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":104,"author":{"gitId":"-"},"content":" ![DebuggerStep1](../images/tracing/DebuggerStep1.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. Use the _Show execution point_ feature to jump to the line of code that we stopped at:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":107,"author":{"gitId":"-"},"content":" ![ShowExecutionPoint](../images/tracing/ShowExecutionPoint.png)\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":108,"author":{"gitId":"-"},"content":" `CommandResult commandResult \u003d logic.execute(commandText);` is the line that you end up at (i.e., the place where we put the breakpoint).","lastModifiedDate":"2021-07-31"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":"1. We are interested in the `logic.execute(commandText)` portion of that line so let’s _Step in_ into that method call:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":111,"author":{"gitId":"-"},"content":" ![StepInto](../images/tracing/StepInto.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"1. We end up in `LogicManager#execute()` (not `Logic#execute` -- but this is expected because we know the `execute()` method in the `Logic` interface is actually implemented by the `LogicManager` class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.","lastModifiedDate":"2021-07-31"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"author":{"gitId":"-"},"content":" **LogicManager\\#execute().**","lastModifiedDate":"2020-05-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText)","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throws CommandException, ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" //Logging, safe to ignore","lastModifiedDate":"2020-05-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2020-05-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" //Parse user input from String to a Command","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" //Executes the Command and stores the result","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" //We can deduce that the previous line of code modifies model in some way","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // since it\u0027s being stored here.","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new CommandException(FILE_OPS_ERROR_MESSAGE + ioe, ioe);","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"1. `LogicManager#execute()` appears to delegate most of the heavy lifting to other components. Let’s take a closer look at each one.","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"1. _Step over_ the logging code since it is of no interest to us now.","lastModifiedDate":"2021-07-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" ![StepOver](../images/tracing/StepOver.png)","lastModifiedDate":"2021-07-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"1. _Step into_ the line where user input in parsed from a String to a Command, which should bring you to the `AddressBookParser#parseCommand()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"1. _Step over_ the statements in that method until you reach the `switch` statement. The \u0027Variables\u0027 window now shows the value of both `commandWord` and `arguments`:\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":158,"author":{"gitId":"-"},"content":" ![Variables](../images/tracing/Variables.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"1. We see that the value of `commandWord` is now `edit` but `arguments` is still not processed in any meaningful way.","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"1. Stepping through the `switch` block, we end up at a call to `EditCommandParser().parse()` as expected (because the command we typed is an edit command).","lastModifiedDate":"2021-07-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2020-05-23"},{"lineNumber":167,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":169,"author":{"gitId":"-"},"content":" ```","lastModifiedDate":"2020-05-23"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":171,"author":{"gitId":"-"},"content":"1. Let’s see what `EditCommandParser#parse()` does by stepping into it. You might have to click the \u0027step into\u0027 button multiple times here because there are two method calls in that statement: `EditCommandParser()` and `parse()`.","lastModifiedDate":"2021-07-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":" \u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":175,"author":{"gitId":"-"},"content":" **Intellij Tip:** Sometimes, you might end up stepping into functions that are not of interest. Simply use the `step out` button to get out of them!","lastModifiedDate":"2023-09-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"1. Stepping through the method shows that it calls `ArgumentTokenizer#tokenize()` and `ParserUtil#parseIndex()` to obtain the arguments and index required.","lastModifiedDate":"2021-07-31"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":180,"author":{"gitId":"-"},"content":"1. The rest of the method seems to exhaustively check for the existence of each possible parameter of the `edit` command and store any possible changes in an `EditPersonDescriptor`. Recall that we can verify the contents of `editPersonDesciptor` through the \u0027Variables\u0027 window.\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":181,"author":{"gitId":"-"},"content":" ![EditCommand](../images/tracing/EditCommand.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"1. As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the `Logic` component.","lastModifiedDate":"2021-07-31"},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31"},{"lineNumber":186,"author":{"gitId":"-"},"content":"1. Let’s continue stepping through until we return to `LogicManager#execute()`.","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?\u003cbr\u003e","lastModifiedDate":"2021-07-31"},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003cpuml src\u003d\"../diagrams/tracing/LogicSequenceDiagram.puml\" alt\u003d\"Tracing an `edit` command through the Logic component\"/\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"1. Now, step over until you read the statement that calls the `execute()` method of the `EditCommand` object received, and step into that `execute()` method (partial code given below):","lastModifiedDate":"2021-07-31"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":" **`EditCommand#execute()`:**","lastModifiedDate":"2021-07-31"},{"lineNumber":194,"author":{"gitId":"-"},"content":" ```java","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"Ryan-Reno"},"content":" Person courseMateToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":199,"author":{"gitId":"Ryan-Reno"},"content":" Person editedCourseMate \u003d createEditedPerson(courseMateToEdit, editCourseMateDescriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":200,"author":{"gitId":"Ryan-Reno"},"content":" if (!courseMateToEdit.isSamePerson(editedCourseMate) \u0026\u0026 model.hasPerson(editedCourseMate)) {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" model.setPerson(courseMateToEdit, editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"Ryan-Reno"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedCourseMate));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * it uses the `setPerson()` method (defined in the interface `Model` and implemented in `ModelManager` as per the usual pattern) to update the courseMate data.","lastModifiedDate":"2024-03-12"},{"lineNumber":211,"author":{"gitId":"Ryan-Reno"},"content":" * it uses the `updateFilteredPersonList` method to ask the `Model` to populate the \u0027filtered list\u0027 with _all_ courseMates.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":212,"author":{"gitId":"Ryan-Reno"},"content":" FYI, The \u0027filtered list\u0027 is the list of courseMates 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 courseMates so that the user can see the edited courseMate along with all other courseMates. If this was a `find` command, we would be setting that list to contain the search results instead.\u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":213,"author":{"gitId":"Ryan-Reno"},"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 courseMates is being tracked.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" courseMates.addAll(","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":10,"-":301}},{"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":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ReadOnlyGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.storage.ContactListStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":"import seedu.address.storage.GroupListStorage;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.storage.JsonContactListStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":"import seedu.address.storage.JsonGroupListStorage;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":51,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"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 ContactList ]\u003d\u003d\u003d\u003d\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-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" ContactListStorage contactListStorage \u003d new JsonContactListStorage(userPrefs.getContactListFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" GroupListStorage groupListStorage \u003d new JsonGroupListStorage(userPrefs.getGroupListFilePath());","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" storage \u003d new StorageManager(contactListStorage, userPrefsStorage, groupListStorage);","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s contact list and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":" * The data from the sample contact list will be used instead if {@code storage}\u0027s contact list is not found,","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" * or an empty contact list will be used instead if errors occur when reading {@code storage}\u0027s contact list.","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":80,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" logger.info(\"Using data file : \" + storage.getContactListFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" Optional\u003cReadOnlyContactList\u003e contactListOptional;","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":" ReadOnlyContactList initialContactList;","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" contactListOptional \u003d storage.readContactList();","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":" if (!contactListOptional.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":" logger.info(\"Creating a new data file \" + storage.getContactListFilePath()","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" + \" populated with a sample ContactList.\");","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":" initialContactList \u003d contactListOptional.orElseGet(SampleDataUtil::getSampleContactList);","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":" logger.warning(\"Data file at \" + storage.getContactListFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":" + \" Will be starting with an empty ContactList.\");","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"ivan24004"},"content":" initialContactList \u003d new ContactList();","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":" Optional\u003cReadOnlyGroupList\u003e groupListOptional;","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":" ReadOnlyGroupList initialGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ivan24004"},"content":" groupListOptional \u003d storage.readGroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ivan24004"},"content":" if (!groupListOptional.isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":" logger.info(\"Creating a new data file \" + storage.getGroupListFilePath()","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ivan24004"},"content":" + \" starting with an empty GroupList.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"ivan24004"},"content":" initialGroupList \u003d groupListOptional.orElseGet(GroupList::new);","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"ivan24004"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"ivan24004"},"content":" logger.warning(\"Data file at \" + storage.getGroupListFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"ivan24004"},"content":" + \" Will be starting with an empty GroupList.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"ivan24004"},"content":" initialGroupList \u003d new GroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"ivan24004"},"content":" return new ModelManager(initialContactList, userPrefs, initialGroupList);","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":125,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":127,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":131,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":141,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":143,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":150,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":162,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":164,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":165,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":170,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":171,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":172,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":174,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":175,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":176,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":184,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":193,"author":{"gitId":"Ryan-Reno"},"content":" logger.info(\"Starting ContactList \" + MainApp.VERSION);","lastModifiedDate":"2024-03-12"},{"lineNumber":194,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"ivan24004"},"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 MatchMate ] \u003d\u003d\u003d\u003d\u003d\u003d\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-20"},{"lineNumber":200,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":201,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":202,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":203,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Ryan-Reno":12,"-":162,"ivan24004":32}},{"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":"benson1029"},"content":" private static final double DEFAULT_WIDTH \u003d 1200;","lastModifiedDate":"2024-03-15"},{"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":{"benson1029":1,"-":81}},{"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":"Ryan-Reno"},"content":" private static final String LOG_FILE \u003d \"contactlist.log\";","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":1,"-":105}},{"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":"benson1029"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.io.StringWriter;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Helper functions for handling strings.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class StringUtil {","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2016-10-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Ignores case, but a full word match is required.","lastModifiedDate":"2016-10-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2016-10-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-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":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-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":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2016-10-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2017-05-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2016-10-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2018-01-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"benson1029"},"content":" * Returns true if the {@code sentence} contains the {@code substring}.","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"benson1029"},"content":" * Ignores case, and the substring need not be a full word.","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"benson1029"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"benson1029"},"content":" * containsIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"benson1029"},"content":" * containsIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"benson1029"},"content":" * containsIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d true","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"benson1029"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"benson1029"},"content":" * @param sentence cannot be null","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"benson1029"},"content":" * @param substring cannot be null, cannot be empty","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"benson1029"},"content":" public static boolean containsIgnoreCase(String sentence, String substring) {","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"benson1029"},"content":" requireAllNonNull(sentence, substring);","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"benson1029"},"content":" String preppedSentence \u003d sentence.toLowerCase();","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"benson1029"},"content":" String preppedSubstring \u003d substring.toLowerCase();","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"benson1029"},"content":" return preppedSentence.contains(preppedSubstring);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02"},{"lineNumber":76,"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":77,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02"},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02"},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02"},{"lineNumber":83,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02"},{"lineNumber":85,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"benson1029":21,"-":68}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-16"},{"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":"Ryan-Reno"},"content":" * Returns the ContactList.","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" * @see seedu.address.model.Model#getContactList()","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" ReadOnlyContactList getContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" /** Returns an unmodifiable view of the filtered list of course mates */","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" ObservableList\u003cCourseMate\u003e getFilteredCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":37,"author":{"gitId":"yuhinarita"},"content":" /** Returns an unmodifiable view of the filtered list of groups */","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"yuhinarita"},"content":" ObservableList\u003cGroup\u003e getFilteredGroupList();","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"benson1029"},"content":" /** Returns the most recently processed course mate */","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"benson1029"},"content":" CourseMate getRecentlyProcessedCourseMate();","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"benson1029"},"content":" /** Sets the most recently processed course mate */","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"benson1029"},"content":" void setRecentlyProcessedCourseMate(CourseMate courseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" * Returns the user prefs\u0027 contact list file path.","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" Path getContactListFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","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":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"yuhinarita":4,"Ryan-Reno":9,"benson1029":5,"-":42}},{"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":"ivan24004"},"content":"import seedu.address.logic.parser.MatchMateParser;","lastModifiedDate":"2024-03-13"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-16"},{"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":"ivan24004"},"content":" private final MatchMateParser matchMateParser;","lastModifiedDate":"2024-03-13"},{"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":"ivan24004"},"content":" matchMateParser \u003d new MatchMateParser();","lastModifiedDate":"2024-03-13"},{"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":"ivan24004"},"content":" Command command \u003d matchMateParser.parseCommand(commandText);","lastModifiedDate":"2024-03-13"},{"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":"Ryan-Reno"},"content":" storage.saveContactList(model.getContactList());","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" storage.saveGroupList(model.getGroupList());","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":" public ReadOnlyContactList getContactList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" return model.getContactList();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public ObservableList\u003cCourseMate\u003e getFilteredCourseMateList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" return model.getFilteredCourseMateList();","lastModifiedDate":"2024-03-12"},{"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":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"yuhinarita"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"yuhinarita"},"content":" return model.getFilteredGroupList();","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"benson1029"},"content":" public CourseMate getRecentlyProcessedCourseMate() {","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"benson1029"},"content":" return model.getRecentlyProcessedCourseMate();","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"benson1029"},"content":" public void setRecentlyProcessedCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"benson1029"},"content":" model.setRecentlyProcessedCourseMate(courseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" public Path getContactListFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":" return model.getContactListFilePath();","lastModifiedDate":"2024-03-12"},{"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 GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","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 void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":103,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"yuhinarita":5,"Ryan-Reno":9,"benson1029":10,"-":76,"ivan24004":5}},{"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":"","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" public static final String MESSAGE_INVALID_COURSE_MATE_NAME \u003d \"The courseMate name provided is not found!\";","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" public static final String MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX \u003d \"The courseMate index provided is invalid\";","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":" public static final String MESSAGE_COURSE_MATES_LISTED_OVERVIEW \u003d \"%1$d course mate(s) listed!\";","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":" public static final String MESSAGE_GROUPS_LISTED_OVERVIEW \u003d \"%1$d group(s) listed!\";","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_INVALID_GROUP_NAME \u003d \"The group name provided is not found!\";","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_MEMBERS_DONT_EXIST \u003d \"Some of the specified members could not be found.\";","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":"Ryan-Reno"},"content":" public static final String MESSAGE_SIMILAR_COURSE_MATE_NAME \u003d \"There are %1$d course mates with similar names\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" + \"Retry the command by specifying the index of the contact in the list, example: “#1”.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"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-08-24"}],"authorContributionMap":{"yuhinarita":2,"Ryan-Reno":4,"-":30,"ivan24004":2}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":" * Adds a courseMate to the contact list.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a courseMate to the contact list. \"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":" + \"Parameters: NAME\"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":" + PREFIX_PHONE + \" PHONE_NUMBER \"","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \" EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" + \"[\" + PREFIX_SKILL + \" SKILL]...\\n\"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \" John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \" 98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \" johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":" + PREFIX_SKILL + \" Python \"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":" + PREFIX_SKILL + \" Java\";","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"benson1029"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New courseMate added\";","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" public static final String MESSAGE_DUPLICATE_COURSE_MATE \u003d \"This courseMate already exists in the contact list\";","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" private final CourseMate toAdd;","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" * Creates an AddCommand to add the specified {@code CourseMate}","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" public AddCommand(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" toAdd \u003d courseMate;","lastModifiedDate":"2024-03-12"},{"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-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" if (model.hasCourseMate(toAdd)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" throw new CommandException(MESSAGE_DUPLICATE_COURSE_MATE);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" model.addCourseMate(toAdd);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"benson1029"},"content":" model.setRecentlyProcessedCourseMate(toAdd);","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"benson1029"},"content":" return new CommandResult(MESSAGE_SUCCESS, false, false, true);","lastModifiedDate":"2024-03-16"},{"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":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"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 AddCommand)) {","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":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"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":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"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":{"Ryan-Reno":14,"benson1029":3,"tzaph":4,"-":59}},{"path":"src/main/java/seedu/address/logic/commands/AddMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSEMATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_GROUPS;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.exceptions.DuplicateCourseMateException;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.exceptions.GroupNotFoundException;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" * Adds member(s) to a preexisting group.","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":"public class AddMemberCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" public static final String COMMAND_WORD \u003d \"add-member\";","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" + \": Adds CourseMates as members to an existing group.\"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" + \"CourseMates can be specified either by name or by the \u0027#\u0027 notation.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" + \"Parameters: NAME (group must exist) \"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" + PREFIX_COURSEMATE + \" COURSEMATE\"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" + \"[\" + PREFIX_COURSEMATE + \" COURSEMATE\" + \"]\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" + \"Example: \" + COMMAND_WORD + \" CS2103T GROUP \"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" + PREFIX_COURSEMATE + \" #1 \"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" + PREFIX_COURSEMATE + \" John Doe.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_MEMBERS_ALREADY_IN_GROUP \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" \"Some of the specified members are already in the group.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_SUCCESFULLY_ADDED \u003d \"Group successfully modified, Name: %s\";","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" private final Name groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" private final Set\u003cQueryableCourseMate\u003e queryableCourseMateSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" * Basic constructor for {@code AddMemberCommand}.","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" * @param queryableCourseMateSet set containing the queryableCourseMate to be added","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" public AddMemberCommand(Name groupName, Set\u003cQueryableCourseMate\u003e queryableCourseMateSet) {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" requireAllNonNull(groupName, queryableCourseMateSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" this.queryableCourseMateSet \u003d queryableCourseMateSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" Set\u003cCourseMate\u003e courseMateList;","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" courseMateList \u003d queryableCourseMateSet","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" .stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" .map(model::findCourseMate)","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" .map(x -\u003e x.get(0))","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" } catch (CourseMateNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" throw new CommandException(Messages.MESSAGE_MEMBERS_DONT_EXIST, e);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" Group toModify;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" toModify \u003d model.findGroup(groupName);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" } catch (GroupNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_GROUP_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"yuhinarita"},"content":" Group modifiedGroup \u003d new Group(toModify.getName(), toModify.asUnmodifiableObservableList());","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" for (CourseMate courseMate: courseMateList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"yuhinarita"},"content":" modifiedGroup.add(courseMate);","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":" } catch (DuplicateCourseMateException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" throw new CommandException(MESSAGE_MEMBERS_ALREADY_IN_GROUP);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"yuhinarita"},"content":" model.setGroup(toModify, modifiedGroup);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"yuhinarita"},"content":" model.updateFilteredGroupList(PREDICATE_SHOW_ALL_GROUPS);","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESFULLY_ADDED, groupName),","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" false, false, true);","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ivan24004"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"ivan24004"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"ivan24004"},"content":" if (!(other instanceof AddMemberCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ivan24004"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" AddMemberCommand otherAddMemberCommand \u003d (AddMemberCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":" return otherAddMemberCommand.groupName.equals(groupName)","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ivan24004"},"content":" \u0026\u0026 otherAddMemberCommand.queryableCourseMateSet.equals(queryableCourseMateSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"yuhinarita":5,"Ryan-Reno":1,"ivan24004":97}},{"path":"src/main/java/seedu/address/logic/commands/AddSkillCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_COURSE_MATES;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":" * Adds a courseMate to the contact list.","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"tzaph"},"content":"public class AddSkillCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":" public static final String COMMAND_WORD \u003d \"add-skill\";","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds skills to a coursemate. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":" + \"NAME can be specified either by full name or by the \u0027#\u0027 notation.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":" + \"Parameters: NAME \"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":" + PREFIX_SKILL + \" SKILL \"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" + \"[\" + PREFIX_SKILL + \" SKILL]...\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":" + \"Example: \" + COMMAND_WORD + \" #1 \"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" + PREFIX_SKILL + \" Python \"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":" + PREFIX_SKILL + \" Java\";","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New skills added\";","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one skill should be provided.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" public static final String MESSAGE_DUPLICATE_COURSE_MATE \u003d \"This courseMate already exists in the contact list\";","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" private final QueryableCourseMate queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" private final AddSkillDescriptor addSkillDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" * @param queryableCourseMate courseMate that we want to edit","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":" * @param addSkillDescriptor list of skills to edit the courseMate with","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" public AddSkillCommand(QueryableCourseMate queryableCourseMate, AddSkillDescriptor addSkillDescriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":" requireNonNull(queryableCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" requireNonNull(addSkillDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":" this.queryableCourseMate \u003d queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" this.addSkillDescriptor \u003d new AddSkillDescriptor(addSkillDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"tzaph"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"tzaph"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":" List\u003cCourseMate\u003e lastShownList \u003d model.getFilteredCourseMateList();","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":" if (queryableCourseMate.isIndex()","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" \u0026\u0026 queryableCourseMate.getIndex().getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e courseMateToEditList;","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"Ryan-Reno"},"content":" courseMateToEditList \u003d model.findCourseMate(queryableCourseMate);","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":" } catch (CourseMateNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":" //If there are more than 1 matching names","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":" if (courseMateToEditList.size() \u003e 1) {","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":" queryableCourseMate.getName().toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":" model.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" String.format(Messages.MESSAGE_SIMILAR_COURSE_MATE_NAME,","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" model.getFilteredCourseMateList().size()), false, false, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMateToEdit \u003d courseMateToEditList.get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"tzaph"},"content":" CourseMate editedCourseMate \u003d addSkillToCourseMate(courseMateToEdit, addSkillDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"tzaph"},"content":" if (!courseMateToEdit.isSameCourseMate(editedCourseMate) \u0026\u0026 model.hasCourseMate(editedCourseMate)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"tzaph"},"content":" throw new CommandException(MESSAGE_DUPLICATE_COURSE_MATE);","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"tzaph"},"content":" model.setCourseMate(courseMateToEdit, editedCourseMate);","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"tzaph"},"content":" model.updateFilteredCourseMateList(PREDICATE_SHOW_ALL_COURSE_MATES);","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"tzaph"},"content":" model.setRecentlyProcessedCourseMate(editedCourseMate);","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"tzaph"},"content":" return new CommandResult(MESSAGE_SUCCESS, false, false, true);","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"tzaph"},"content":" * Creates and returns a {@code CourseMate} with the details of {@code courseMateToEdit}","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"tzaph"},"content":" * edited with {@code addSkillDescriptor}.","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"tzaph"},"content":" private static CourseMate addSkillToCourseMate(CourseMate courseMateToEdit,","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor addSkillDescriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"tzaph"},"content":" requireNonNull(courseMateToEdit);","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"tzaph"},"content":" addSkillDescriptor.mergeSkills(courseMateToEdit.getSkills());","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e updatedSkills \u003d addSkillDescriptor.getSkills().orElse(courseMateToEdit.getSkills());","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"tzaph"},"content":" return new CourseMate(courseMateToEdit.getName(), courseMateToEdit.getPhone(),","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"tzaph"},"content":" courseMateToEdit.getEmail(), updatedSkills);","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"tzaph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"tzaph"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"tzaph"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"tzaph"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"tzaph"},"content":" if (!(other instanceof AddSkillCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"tzaph"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"tzaph"},"content":" AddSkillCommand otherAddSkillCommand \u003d (AddSkillCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"tzaph"},"content":" return queryableCourseMate.getIndex().equals(otherAddSkillCommand.queryableCourseMate.getIndex())","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"tzaph"},"content":" \u0026\u0026 addSkillDescriptor.equals(otherAddSkillCommand.addSkillDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"tzaph"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"tzaph"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"tzaph"},"content":" .add(\"index\", queryableCourseMate.getIndex())","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"tzaph"},"content":" .add(\"addSkillDescriptor\", addSkillDescriptor)","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"tzaph"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"tzaph"},"content":" * Stores the list of skills to add to the courseMate.","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"tzaph"},"content":" public static class AddSkillDescriptor {","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"tzaph"},"content":" private Set\u003cSkill\u003e skills;","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"tzaph"},"content":" public AddSkillDescriptor() {}","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"tzaph"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"tzaph"},"content":" * A defensive copy of {@code skills} is used internally.","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"tzaph"},"content":" public AddSkillDescriptor(AddSkillDescriptor toCopy) {","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"tzaph"},"content":" setSkills(toCopy.skills);","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"tzaph"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"tzaph"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"tzaph"},"content":" return CollectionUtil.isAnyNonNull(skills);","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"tzaph"},"content":" * Adds {@code skills} to this object\u0027s {@code skills}.","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"tzaph"},"content":" * A defensive copy of {@code skills} is used internally.","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"tzaph"},"content":" public void setSkills(Set\u003cSkill\u003e skills) {","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"tzaph"},"content":" this.skills \u003d (skills !\u003d null) ? new HashSet\u003c\u003e(skills) : null;","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"tzaph"},"content":" * Returns an unmodifiable skill set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"tzaph"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"tzaph"},"content":" * Returns {@code Optional#empty()} if {@code skills} is null.","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"tzaph"},"content":" public Optional\u003cSet\u003cSkill\u003e\u003e getSkills() {","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"tzaph"},"content":" return (skills !\u003d null) ? Optional.of(Collections.unmodifiableSet(skills)) : Optional.empty();","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"tzaph"},"content":" * Merges the set of skills in the object with the set of skills in the argument","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"tzaph"},"content":" public void mergeSkills(Set\u003cSkill\u003e argSkills) {","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"tzaph"},"content":" for (Skill skill : argSkills) {","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"tzaph"},"content":" this.skills.add(skill);","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"tzaph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"tzaph"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"tzaph"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"tzaph"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"tzaph"},"content":" if (!(other instanceof AddSkillDescriptor)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"tzaph"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor otherAddSkillDescriptor \u003d (AddSkillDescriptor) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"tzaph"},"content":" return Objects.equals(skills, otherAddSkillDescriptor.skills);","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"tzaph"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"tzaph"},"content":" return new ToStringBuilder(this).add(\"skills\", skills).toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"Ryan-Reno":15,"tzaph":193}},{"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":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Clears the contact list.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Contact list has been cleared!\";","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" model.setContactList(new ContactList());","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":4,"-":19}},{"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":"benson1029"},"content":" /** An edited CourseMate card should be shown to the user. */","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"benson1029"},"content":" private final boolean showCourseMate;","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"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":"benson1029"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit, boolean showCourseMate) {","lastModifiedDate":"2024-03-15"},{"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":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"benson1029"},"content":" this.showCourseMate \u003d showCourseMate;","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"benson1029"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"benson1029"},"content":" * {@code showHelp} and {@code exit} fields. The other fields are set to their default value.","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"benson1029"},"content":" this(feedbackToUser, showHelp, exit, false);","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09"},{"lineNumber":48,"author":{"gitId":"benson1029"},"content":" this(feedbackToUser, false, false, false);","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":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return showHelp;","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":" public boolean isExit() {","lastModifiedDate":"2018-12-09"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":63,"author":{"gitId":"benson1029"},"content":" public boolean isShowCourseMate() {","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"benson1029"},"content":" return showCourseMate;","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2018-12-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09"},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09"},{"lineNumber":81,"author":{"gitId":"benson1029"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"benson1029"},"content":" \u0026\u0026 showCourseMate \u003d\u003d otherCommandResult.showCourseMate;","lastModifiedDate":"2024-03-15"},{"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":"benson1029"},"content":" .add(\"showCourseMate\", showCourseMate)","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"benson1029":21,"-":79}},{"path":"src/main/java/seedu/address/logic/commands/CreateGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSEMATE;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" * Creates a group containing multiple unique CourseMates.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" * See {@code UniqueCourseMateList} for a the details of uniqueness.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"public class CreateGroupCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" public static final String COMMAND_WORD \u003d \"create-group\";","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Creates a group containing any number of CourseMates, \"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" + \"CourseMates can be specified either by name or by the \u0027#\u0027 notation.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" + \"Parameters: NAME (cannot be empty, must be unique, and must be only alphanumeric) \"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" + \"[\" + PREFIX_COURSEMATE + \" COURSEMATE\" + \"]\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" + \"Example: \" + COMMAND_WORD + \" CS2103T GROUP \"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" + PREFIX_COURSEMATE + \" #1 \"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" + PREFIX_COURSEMATE + \" John Doe.\";","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_DUPLICATE_GROUP \u003d \"This group already exists in the group list.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_GROUP_CREATED \u003d \"A group with name: %s was created.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_MEMBERS_DONT_EXIST \u003d \"Some of the included members could not be found.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" private final Name groupName;","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" private final Set\u003cQueryableCourseMate\u003e queryableCourseMateSet;","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" * Basic constructor for {@code CreateGroupCommand}.","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" * Creates the details for a group to be created.","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" * @param groupName name of the group","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" * @param queryableCourseMateSet set containing the queryableCourseMate in the group","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" public CreateGroupCommand(Name groupName, Set\u003cQueryableCourseMate\u003e queryableCourseMateSet) {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" requireAllNonNull(groupName, queryableCourseMateSet);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" this.queryableCourseMateSet \u003d queryableCourseMateSet;","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" Set\u003cCourseMate\u003e courseMateList;","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" courseMateList \u003d queryableCourseMateSet","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" .stream()","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" .map(model::findCourseMate)","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" .map(x -\u003e x.get(0))","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" } catch (CourseMateNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" throw new CommandException(MESSAGE_MEMBERS_DONT_EXIST);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" Group toAdd \u003d new Group(groupName, courseMateList);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" if (model.hasGroup(toAdd)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" throw new CommandException(MESSAGE_DUPLICATE_GROUP);","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" model.addGroup(toAdd);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ivan24004"},"content":" return new CommandResult(String.format(MESSAGE_GROUP_CREATED, groupName));","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" if (!(other instanceof CreateGroupCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":" CreateGroupCommand otherCreateGroupCommand \u003d (CreateGroupCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":" return otherCreateGroupCommand.groupName.equals(groupName)","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":" \u0026\u0026 otherCreateGroupCommand.queryableCourseMateSet.equals(queryableCourseMateSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Ryan-Reno":1,"ivan24004":90}},{"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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" * Deletes a courseMate identified using it\u0027s displayed index from the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" + \": Deletes the courseMate identified by the index number used in the displayed courseMate list.\\n\"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":" + \"NAME can be specified either by full name or by the \u0027#\u0027 notation.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":" + \"Parameters: NAME\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":" + \"Example: \" + COMMAND_WORD + \" #1\";","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"benson1029"},"content":" public static final String MESSAGE_DELETE_COURSE_MATE_SUCCESS \u003d \"Deleted CourseMate\";","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" private final QueryableCourseMate queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" public DeleteCommand(QueryableCourseMate queryableCourseMate) {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" this.queryableCourseMate \u003d queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"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 CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e lastShownList \u003d model.getFilteredCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" if (queryableCourseMate.isIndex() \u0026\u0026 queryableCourseMate.getIndex().getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e courseMateToDeleteList;","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" courseMateToDeleteList \u003d model.findCourseMate(queryableCourseMate);","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" } catch (CourseMateNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" //If there are more than 1 matching names","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" if (courseMateToDeleteList.size() \u003e 1) {","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" queryableCourseMate.getName().toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" model.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" String.format(Messages.MESSAGE_SIMILAR_COURSE_MATE_NAME,","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" model.getFilteredCourseMateList().size()), false , false, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMateToDelete \u003d courseMateToDeleteList.get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" model.deleteCourseMate(courseMateToDelete);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" model.setRecentlyProcessedCourseMate(courseMateToDelete);","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" return new CommandResult(MESSAGE_DELETE_COURSE_MATE_SUCCESS, false, false, true);","lastModifiedDate":"2024-03-21"},{"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":"Ryan-Reno"},"content":" return queryableCourseMate.getIndex().equals(otherDeleteCommand.queryableCourseMate.getIndex());","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"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":"Ryan-Reno"},"content":" .add(\"queryableCourseMateIndex\", queryableCourseMate.getIndex())","lastModifiedDate":"2024-03-20"},{"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":{"Ryan-Reno":35,"benson1029":1,"tzaph":3,"-":51}},{"path":"src/main/java/seedu/address/logic/commands/DeleteGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.exceptions.GroupNotFoundException;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":" * Deletes a preexisting group.","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"public class DeleteGroupCommand extends Command {","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" public static final String COMMAND_WORD \u003d \"delete-group\";","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Deletes a preexisting group. \"","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" + \"groups can be specified by name.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" + \"Parameters: NAME (cannot be empty and must already exist)\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" + \"Example: \" + COMMAND_WORD + \" CS2103T GROUP \";","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" private final Name toDelete;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" * Basic constructor for {@code DeleteGroupCommand}. Deletes a specified group.","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" * @param toDelete group to be deleted","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" public DeleteGroupCommand(Name toDelete) {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" requireNonNull(toDelete);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" this.toDelete \u003d toDelete;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" Group groupToDelete \u003d model.findGroup(toDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" model.deleteGroup(groupToDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" return new CommandResult(String.format(\"Deleted group %s\",","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" toDelete));","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" } catch (GroupNotFoundException exception) {","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_GROUP_NAME, exception);","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" if (!(other instanceof DeleteGroupCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" DeleteGroupCommand otherDelete \u003d (DeleteGroupCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" return otherDelete.toDelete.equals(toDelete);","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"ivan24004":62}},{"path":"src/main/java/seedu/address/logic/commands/DeleteMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSEMATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_GROUPS;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.exceptions.GroupNotFoundException;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" * Deletes member(s) from a preexisting group.","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"public class DeleteMemberCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" public static final String COMMAND_WORD \u003d \"delete-member\";","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" + \": Deletes CourseMates from an existing group.\"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" + \"CourseMates can be specified either by name or by the \u0027#\u0027 notation.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" + \"Parameters: NAME (group must exist) \"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" + PREFIX_COURSEMATE + \" COURSEMATE\"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" + \"[\" + PREFIX_COURSEMATE + \" COURSEMATE\" + \"]\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" + \"Example: \" + COMMAND_WORD + \" CS2103T GROUP \"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" + PREFIX_COURSEMATE + \" #1 \"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" + PREFIX_COURSEMATE + \" John Doe.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_MEMBERS_NOT_IN_GROUP \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" \"Some of the specified members are not in the group.\";","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_SUCCESFULLY_REMOVED \u003d \"Group successfully modified, Name: %s\";","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" private final Name groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" private final Set\u003cQueryableCourseMate\u003e queryableCourseMateSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" * Basic constructor for {@code DeleteMemberCommand}.","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" * @param queryableCourseMateSet set containing the queryableCourseMate to be deleted","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" public DeleteMemberCommand(Name groupName, Set\u003cQueryableCourseMate\u003e queryableCourseMateSet) {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" requireAllNonNull(groupName, queryableCourseMateSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" this.queryableCourseMateSet \u003d queryableCourseMateSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" Set\u003cCourseMate\u003e courseMateList;","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" courseMateList \u003d queryableCourseMateSet","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" .stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" .map(model::findCourseMate)","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" .map(x -\u003e x.get(0))","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" } catch (CourseMateNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" throw new CommandException(Messages.MESSAGE_MEMBERS_DONT_EXIST, e);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" Group toModify;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" toModify \u003d model.findGroup(groupName);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" } catch (GroupNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_GROUP_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"yuhinarita"},"content":" Group modifiedGroup \u003d new Group(toModify.getName(), toModify.asUnmodifiableObservableList());","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" for (CourseMate courseMate: courseMateList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"yuhinarita"},"content":" modifiedGroup.remove(courseMate);","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":" } catch (CourseMateNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" throw new CommandException(MESSAGE_MEMBERS_NOT_IN_GROUP, e);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"yuhinarita"},"content":" model.setGroup(toModify, modifiedGroup);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"yuhinarita"},"content":" model.updateFilteredGroupList(PREDICATE_SHOW_ALL_GROUPS);","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" String.format(MESSAGE_SUCCESFULLY_REMOVED, groupName), false, false, true);","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ivan24004"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"ivan24004"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"ivan24004"},"content":" if (!(other instanceof DeleteMemberCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ivan24004"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" DeleteMemberCommand otherDeleteMemberCommand \u003d (DeleteMemberCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":" return otherDeleteMemberCommand.groupName.equals(groupName)","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ivan24004"},"content":" \u0026\u0026 otherDeleteMemberCommand.queryableCourseMateSet.equals(queryableCourseMateSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"yuhinarita":5,"Ryan-Reno":1,"ivan24004":97}},{"path":"src/main/java/seedu/address/logic/commands/DeleteSkillCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_COURSE_MATES;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":" * Adds a courseMate to the contact list.","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"tzaph"},"content":"public class DeleteSkillCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":" public static final String COMMAND_WORD \u003d \"delete-skill\";","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Deletes skills of a coursemate. \"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":" + \"NAME can be specified either by full name or by the \u0027#\u0027 notation.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":" + \"Parameters: NAME \"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":" + PREFIX_SKILL + \" SKILL \"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" + \"[\" + PREFIX_SKILL + \" SKILL]...\\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":" + \"Example: \" + COMMAND_WORD + \" #1 \"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" + PREFIX_SKILL + \" Python \"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":" + PREFIX_SKILL + \" Java\";","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Skills are successfully deleted\";","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one skill should be provided.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" public static final String MESSAGE_DUPLICATE_COURSE_MATE \u003d \"This courseMate already exists in the contact list\";","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":" public static final String MESSAGE_SKILL_NOT_PRESENT \u003d \"This courseMate does not have one of the skills provided.\";","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" private final QueryableCourseMate queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" private final DeleteSkillDescriptor deleteSkillDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":" * @param index of the courseMate in the filtered courseMate list to edit","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" * @param deleteSkillDescriptor list of skills to edit the courseMate with","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":" public DeleteSkillCommand(QueryableCourseMate queryableCourseMate, DeleteSkillDescriptor deleteSkillDescriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" requireNonNull(queryableCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":" requireNonNull(deleteSkillDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" this.queryableCourseMate \u003d queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"tzaph"},"content":" this.deleteSkillDescriptor \u003d new DeleteSkillDescriptor(deleteSkillDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"tzaph"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" List\u003cCourseMate\u003e lastShownList \u003d model.getFilteredCourseMateList();","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" if (queryableCourseMate.isIndex()","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" \u0026\u0026 queryableCourseMate.getIndex().getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e courseMateToEditList;","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" courseMateToEditList \u003d model.findCourseMate(queryableCourseMate);","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":" } catch (CourseMateNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":" //If there are more than 1 matching names","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" if (courseMateToEditList.size() \u003e 1) {","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":" queryableCourseMate.getName().toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" model.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" String.format(Messages.MESSAGE_SIMILAR_COURSE_MATE_NAME,","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" model.getFilteredCourseMateList().size()), false, false, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMateToEdit \u003d courseMateToEditList.get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"tzaph"},"content":" if (!validSkillsToDelete(courseMateToEdit, deleteSkillDescriptor)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"tzaph"},"content":" throw new CommandException(MESSAGE_SKILL_NOT_PRESENT);","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"tzaph"},"content":" assert(validSkillsToDelete(courseMateToEdit, deleteSkillDescriptor));","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"tzaph"},"content":" CourseMate editedCourseMate \u003d deleteCourseMateSkills(courseMateToEdit, deleteSkillDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"tzaph"},"content":" if (!courseMateToEdit.isSameCourseMate(editedCourseMate) \u0026\u0026 model.hasCourseMate(editedCourseMate)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"tzaph"},"content":" throw new CommandException(MESSAGE_DUPLICATE_COURSE_MATE);","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"tzaph"},"content":" model.setCourseMate(courseMateToEdit, editedCourseMate);","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"tzaph"},"content":" model.updateFilteredCourseMateList(PREDICATE_SHOW_ALL_COURSE_MATES);","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"tzaph"},"content":" model.setRecentlyProcessedCourseMate(editedCourseMate);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"tzaph"},"content":" return new CommandResult(MESSAGE_SUCCESS, false, false, true);","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"tzaph"},"content":" * Checks if the {@code CourseMate} to be edited has all the skills listed in {@code deleteSkillDescriptor}.","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"tzaph"},"content":" private static boolean validSkillsToDelete(CourseMate courseMateToEdit,","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor deleteSkillDescriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e courseMateSkills \u003d courseMateToEdit.getSkills();","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e commandSkills \u003d deleteSkillDescriptor.getSkills().orElse(Collections.emptySet());","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"tzaph"},"content":" for (Skill skill : commandSkills) {","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"tzaph"},"content":" if (!courseMateSkills.contains(skill)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"tzaph"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"tzaph"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"tzaph"},"content":" * Creates and returns a {@code CourseMate} with the details of {@code courseMateToEdit}","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"tzaph"},"content":" * edited with {@code deleteSkillDescriptor}.","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"tzaph"},"content":" private static CourseMate deleteCourseMateSkills(CourseMate courseMateToEdit,","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor deleteSkillDescriptor) {","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"tzaph"},"content":" requireNonNull(courseMateToEdit);","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"tzaph"},"content":" deleteSkillDescriptor.deleteSkills(courseMateToEdit.getSkills());","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e updatedSkills \u003d deleteSkillDescriptor.getSkills().orElse(courseMateToEdit.getSkills());","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"tzaph"},"content":" return new CourseMate(courseMateToEdit.getName(), courseMateToEdit.getPhone(),","lastModifiedDate":"2024-03-19"},{"lineNumber":133,"author":{"gitId":"tzaph"},"content":" courseMateToEdit.getEmail(), updatedSkills);","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":135,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"tzaph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"tzaph"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"tzaph"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"tzaph"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"tzaph"},"content":" if (!(other instanceof DeleteSkillCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"tzaph"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand otherDeleteSkillCommand \u003d (DeleteSkillCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"tzaph"},"content":" return queryableCourseMate.getIndex().equals(otherDeleteSkillCommand.queryableCourseMate.getIndex())","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"tzaph"},"content":" \u0026\u0026 deleteSkillDescriptor.equals(otherDeleteSkillCommand.deleteSkillDescriptor);","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"tzaph"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"tzaph"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"tzaph"},"content":" .add(\"index\", queryableCourseMate.getIndex())","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"tzaph"},"content":" .add(\"deleteSkillDescriptor\", deleteSkillDescriptor)","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"tzaph"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":161,"author":{"gitId":"tzaph"},"content":" * Stores the list of skills to delete from the courseMate.","lastModifiedDate":"2024-03-19"},{"lineNumber":162,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":163,"author":{"gitId":"tzaph"},"content":" public static class DeleteSkillDescriptor {","lastModifiedDate":"2024-03-19"},{"lineNumber":164,"author":{"gitId":"tzaph"},"content":" private Set\u003cSkill\u003e skills;","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":166,"author":{"gitId":"tzaph"},"content":" public DeleteSkillDescriptor() {}","lastModifiedDate":"2024-03-19"},{"lineNumber":167,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":168,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":169,"author":{"gitId":"tzaph"},"content":" * Copy constructor.","lastModifiedDate":"2024-03-19"},{"lineNumber":170,"author":{"gitId":"tzaph"},"content":" * A defensive copy of {@code skills} is used internally.","lastModifiedDate":"2024-03-19"},{"lineNumber":171,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":172,"author":{"gitId":"tzaph"},"content":" public DeleteSkillDescriptor(DeleteSkillDescriptor toCopy) {","lastModifiedDate":"2024-03-19"},{"lineNumber":173,"author":{"gitId":"tzaph"},"content":" setSkills(toCopy.skills);","lastModifiedDate":"2024-03-19"},{"lineNumber":174,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":175,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"tzaph"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"tzaph"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"tzaph"},"content":" return CollectionUtil.isAnyNonNull(skills);","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"tzaph"},"content":" * Adds {@code skills} to this object\u0027s {@code skills}.","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"tzaph"},"content":" * A defensive copy of {@code skills} is used internally.","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"tzaph"},"content":" public void setSkills(Set\u003cSkill\u003e skills) {","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"tzaph"},"content":" this.skills \u003d (skills !\u003d null) ? new HashSet\u003c\u003e(skills) : null;","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"tzaph"},"content":" * Returns an unmodifiable skill set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"tzaph"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"tzaph"},"content":" * Returns {@code Optional#empty()} if {@code skills} is null.","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"tzaph"},"content":" public Optional\u003cSet\u003cSkill\u003e\u003e getSkills() {","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"tzaph"},"content":" return (skills !\u003d null) ? Optional.of(Collections.unmodifiableSet(skills)) : Optional.empty();","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":201,"author":{"gitId":"tzaph"},"content":" * Deletes the set of skills in the object with the set of skills in the argument","lastModifiedDate":"2024-03-19"},{"lineNumber":202,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":203,"author":{"gitId":"tzaph"},"content":" public void deleteSkills(Set\u003cSkill\u003e argSkills) {","lastModifiedDate":"2024-03-19"},{"lineNumber":204,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e newSet \u003d new HashSet\u003cSkill\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":205,"author":{"gitId":"tzaph"},"content":" for (Skill skill : argSkills) {","lastModifiedDate":"2024-03-19"},{"lineNumber":206,"author":{"gitId":"tzaph"},"content":" newSet.add(skill);","lastModifiedDate":"2024-03-19"},{"lineNumber":207,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":208,"author":{"gitId":"tzaph"},"content":" for (Skill skill : this.skills) {","lastModifiedDate":"2024-03-19"},{"lineNumber":209,"author":{"gitId":"tzaph"},"content":" newSet.remove(skill);","lastModifiedDate":"2024-03-19"},{"lineNumber":210,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":211,"author":{"gitId":"tzaph"},"content":" setSkills(newSet);","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"tzaph"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"tzaph"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"tzaph"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":218,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"tzaph"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"tzaph"},"content":" if (!(other instanceof DeleteSkillDescriptor)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":222,"author":{"gitId":"tzaph"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":223,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":224,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":225,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor otherDeleteSkillDescriptor \u003d (DeleteSkillDescriptor) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":226,"author":{"gitId":"tzaph"},"content":" return Objects.equals(skills, otherDeleteSkillDescriptor.skills);","lastModifiedDate":"2024-03-19"},{"lineNumber":227,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":229,"author":{"gitId":"tzaph"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":230,"author":{"gitId":"tzaph"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":231,"author":{"gitId":"tzaph"},"content":" return new ToStringBuilder(this).add(\"skills\", skills).toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":233,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":234,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"Ryan-Reno":15,"tzaph":219}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_COURSE_MATES;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"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":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" * Edits the details of an existing courseMate in the contact list.","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the courseMate identified \"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" + \"by the index number used in the displayed courseMate list. \"","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":" + \"NAME can be specified either by full name or by the \u0027#\u0027 notation.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" + \"Parameters: NAME \"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" + \"[\" + PREFIX_NAME + \" NEW_NAME] \"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" + \"[\" + PREFIX_PHONE + \" NEW_PHONE_NUMBER] \"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":" + \"[\" + PREFIX_EMAIL + \" NEW_EMAIL]\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" + \"Example: \" + COMMAND_WORD + \" John Doe \"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \" 91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":47,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \" johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":49,"author":{"gitId":"benson1029"},"content":" public static final String MESSAGE_EDIT_COURSE_MATE_SUCCESS \u003d \"Edited CourseMate\";","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"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":51,"author":{"gitId":"Ryan-Reno"},"content":" public static final String MESSAGE_DUPLICATE_COURSE_MATE_NAME \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" \"This courseMate already exists in the contact list.\";","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" private final QueryableCourseMate queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" private final EditCourseMateDescriptor editCourseMateDescriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" * @param queryableCourseMate courseMate that we want to edit","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" * @param editCourseMateDescriptor details to edit the courseMate with","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" public EditCommand(QueryableCourseMate queryableCourseMate, EditCourseMateDescriptor editCourseMateDescriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(queryableCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(editCourseMateDescriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" this.queryableCourseMate \u003d queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"Ryan-Reno"},"content":" this.editCourseMateDescriptor \u003d new EditCourseMateDescriptor(editCourseMateDescriptor);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e lastShownList \u003d model.getFilteredCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":" if (queryableCourseMate.isIndex() \u0026\u0026 queryableCourseMate.getIndex().getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e courseMateToEditList;","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" courseMateToEditList \u003d model.findCourseMate(queryableCourseMate);","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" } catch (CourseMateNotFoundException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" //If there are more than 1 matching names","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" if (courseMateToEditList.size() \u003e 1) {","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" queryableCourseMate.getName().toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" model.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" String.format(Messages.MESSAGE_SIMILAR_COURSE_MATE_NAME,","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":" model.getFilteredCourseMateList().size()), false, false, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMateToEdit \u003d courseMateToEditList.get(0);","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate editedCourseMate \u003d createEditedCourseMate(courseMateToEdit, editCourseMateDescriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":" if (!courseMateToEdit.isSameCourseMate(editedCourseMate) \u0026\u0026 model.hasCourseMate(editedCourseMate)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":" throw new CommandException(MESSAGE_DUPLICATE_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":103,"author":{"gitId":"Ryan-Reno"},"content":" model.setCourseMate(courseMateToEdit, editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":" model.updateFilteredCourseMateList(PREDICATE_SHOW_ALL_COURSE_MATES);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"benson1029"},"content":" model.setRecentlyProcessedCourseMate(editedCourseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"benson1029"},"content":" return new CommandResult(MESSAGE_EDIT_COURSE_MATE_SUCCESS, false, false, true);","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":"Ryan-Reno"},"content":" * Creates and returns a {@code CourseMate} with the details of {@code courseMateToEdit}","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Ryan-Reno"},"content":" * edited with {@code editCourseMateDescriptor}.","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":113,"author":{"gitId":"Ryan-Reno"},"content":" private static CourseMate createEditedCourseMate(CourseMate courseMateToEdit,","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor editCourseMateDescriptor) {","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"Ryan-Reno"},"content":" assert courseMateToEdit !\u003d null;","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":117,"author":{"gitId":"Ryan-Reno"},"content":" Name updatedName \u003d editCourseMateDescriptor.getName().orElse(courseMateToEdit.getName());","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"Ryan-Reno"},"content":" Phone updatedPhone \u003d editCourseMateDescriptor.getPhone().orElse(courseMateToEdit.getPhone());","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"Ryan-Reno"},"content":" Email updatedEmail \u003d editCourseMateDescriptor.getEmail().orElse(courseMateToEdit.getEmail());","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"Ryan-Reno"},"content":" Set\u003cSkill\u003e updatedSkills \u003d editCourseMateDescriptor.getSkills().orElse(courseMateToEdit.getSkills());","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":122,"author":{"gitId":"yuhinarita"},"content":" return new CourseMate(updatedName, updatedPhone, updatedEmail, updatedSkills);","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" return false;","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":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"Ryan-Reno"},"content":" return queryableCourseMate.getIndex().equals(otherEditCommand.queryableCourseMate.getIndex())","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"Ryan-Reno"},"content":" \u0026\u0026 editCourseMateDescriptor.equals(otherEditCommand.editCourseMateDescriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"Ryan-Reno"},"content":" .add(\"index\", queryableCourseMate.getIndex())","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"Ryan-Reno"},"content":" .add(\"editCourseMateDescriptor\", editCourseMateDescriptor)","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"Ryan-Reno"},"content":" * Stores the details to edit the courseMate with. Each non-empty field value will replace the","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"Ryan-Reno"},"content":" * corresponding field value of the courseMate.","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"Ryan-Reno"},"content":" public static class EditCourseMateDescriptor {","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":157,"author":{"gitId":"Ryan-Reno"},"content":" private Set\u003cSkill\u003e skills;","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"Ryan-Reno"},"content":" public EditCourseMateDescriptor() {}","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * A defensive copy of {@code skills} is used internally.","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":165,"author":{"gitId":"Ryan-Reno"},"content":" public EditCourseMateDescriptor(EditCourseMateDescriptor toCopy) {","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15"},{"lineNumber":169,"author":{"gitId":"Ryan-Reno"},"content":" setSkills(toCopy.skills);","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":172,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":175,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":176,"author":{"gitId":"yuhinarita"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, skills);","lastModifiedDate":"2024-03-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":180,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":184,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":192,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":196,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":199,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21"},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":203,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":204,"author":{"gitId":"Ryan-Reno"},"content":" * Sets {@code skills} to this object\u0027s {@code skills}.","lastModifiedDate":"2024-03-12"},{"lineNumber":205,"author":{"gitId":"Ryan-Reno"},"content":" * A defensive copy of {@code skills} is used internally.","lastModifiedDate":"2024-03-12"},{"lineNumber":206,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":207,"author":{"gitId":"Ryan-Reno"},"content":" public void setSkills(Set\u003cSkill\u003e skills) {","lastModifiedDate":"2024-03-12"},{"lineNumber":208,"author":{"gitId":"Ryan-Reno"},"content":" this.skills \u003d (skills !\u003d null) ? new HashSet\u003c\u003e(skills) : null;","lastModifiedDate":"2024-03-12"},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":211,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":212,"author":{"gitId":"Ryan-Reno"},"content":" * Returns an unmodifiable skill set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-12"},{"lineNumber":213,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":214,"author":{"gitId":"Ryan-Reno"},"content":" * Returns {@code Optional#empty()} if {@code skills} is null.","lastModifiedDate":"2024-03-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":216,"author":{"gitId":"Ryan-Reno"},"content":" public Optional\u003cSet\u003cSkill\u003e\u003e getSkills() {","lastModifiedDate":"2024-03-12"},{"lineNumber":217,"author":{"gitId":"Ryan-Reno"},"content":" return (skills !\u003d null) ? Optional.of(Collections.unmodifiableSet(skills)) : Optional.empty();","lastModifiedDate":"2024-03-12"},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":220,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":221,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":222,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":223,"author":{"gitId":"-"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":227,"author":{"gitId":"Ryan-Reno"},"content":" if (!(other instanceof EditCourseMateDescriptor)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":228,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":231,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor otherEditCourseMateDescriptor \u003d (EditCourseMateDescriptor) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":232,"author":{"gitId":"Ryan-Reno"},"content":" return Objects.equals(name, otherEditCourseMateDescriptor.name)","lastModifiedDate":"2024-03-12"},{"lineNumber":233,"author":{"gitId":"Ryan-Reno"},"content":" \u0026\u0026 Objects.equals(phone, otherEditCourseMateDescriptor.phone)","lastModifiedDate":"2024-03-12"},{"lineNumber":234,"author":{"gitId":"Ryan-Reno"},"content":" \u0026\u0026 Objects.equals(email, otherEditCourseMateDescriptor.email)","lastModifiedDate":"2024-03-12"},{"lineNumber":235,"author":{"gitId":"Ryan-Reno"},"content":" \u0026\u0026 Objects.equals(skills, otherEditCourseMateDescriptor.skills);","lastModifiedDate":"2024-03-12"},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":239,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":243,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":244,"author":{"gitId":"Ryan-Reno"},"content":" .add(\"skills\", skills)","lastModifiedDate":"2024-03-12"},{"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":{"yuhinarita":2,"Ryan-Reno":82,"benson1029":3,"tzaph":6,"-":155}},{"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":"Ryan-Reno"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Contact list as requested ...\";","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":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":"-"},"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":"benson1029"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" * Finds and lists all course mates in contact list whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-12"},{"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":"yuhinarita"},"content":" public static final String COMMAND_WORD \u003d \"find-mate\";","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all course mates whose names contain any of \"","lastModifiedDate":"2024-03-12"},{"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":"benson1029"},"content":" private final ContainsKeywordPredicate predicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":25,"author":{"gitId":"benson1029"},"content":" public FindCommand(ContainsKeywordPredicate predicate) {","lastModifiedDate":"2024-03-17"},{"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":"Ryan-Reno"},"content":" model.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" String.format(Messages.MESSAGE_COURSE_MATES_LISTED_OVERVIEW, model.getFilteredCourseMateList().size()));","lastModifiedDate":"2024-03-12"},{"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":{"yuhinarita":1,"Ryan-Reno":4,"benson1029":3,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/FindGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.ContainsGroupKeywordPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":" * Finds and lists all groups in the group list whose name contains any of the argument keywords.","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yuhinarita"},"content":"public class FindGroupCommand extends Command {","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":" public static final String COMMAND_WORD \u003d \"find-group\";","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all groups whose names contain any of \"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list.\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":" + \"Example: \" + COMMAND_WORD + \"CS2103T\";","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"yuhinarita"},"content":" private final ContainsGroupKeywordPredicate predicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" public FindGroupCommand(ContainsGroupKeywordPredicate predicate) {","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"yuhinarita"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"yuhinarita"},"content":" model.updateFilteredGroupList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"yuhinarita"},"content":" return new CommandResult(","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"yuhinarita"},"content":" String.format(Messages.MESSAGE_GROUPS_LISTED_OVERVIEW, model.getFilteredGroupList().size()));","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"yuhinarita"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"yuhinarita"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"yuhinarita"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"yuhinarita"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"yuhinarita"},"content":" if (!(other instanceof FindGroupCommand)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"yuhinarita"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"yuhinarita"},"content":" FindGroupCommand otherFindGroupCommand \u003d (FindGroupCommand) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"yuhinarita"},"content":" return predicate.equals(otherFindGroupCommand.predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"yuhinarita"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"yuhinarita"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"yuhinarita"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"yuhinarita"},"content":" .toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"yuhinarita":58}},{"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":"Ryan-Reno"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_COURSE_MATES;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Lists all course mates in the contact list to the user.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all course mates\";","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" model.updateFilteredCourseMateList(PREDICATE_SHOW_ALL_COURSE_MATES);","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":4,"-":20}},{"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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"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-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":31,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_SKILL);","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":" try {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":" argMultimap \u003d setPreambleAsName(argMultimap);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":" throw e;","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"yuhinarita"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" Set\u003cSkill\u003e skillList \u003d ParserUtil.parseSkills(argMultimap.getAllValues(PREFIX_SKILL));","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":50,"author":{"gitId":"yuhinarita"},"content":" CourseMate courseMate \u003d new CourseMate(name, phone, email, skillList);","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" return new AddCommand(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":60,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":" * Isolates the preamble of the {@code argsString} and set is as the name argument of the command.","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003e value \u003cprefix\u003e value ...}","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" * @param argMultimap ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":" * @return ArgumentMultimap object that maps the name prefix to the name argument","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" private static ArgumentMultimap setPreambleAsName(ArgumentMultimap argMultimap)","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":" throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":" String name \u003d argMultimap.getPreamble();","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":" if (name.isEmpty() || !Name.isValidName(name)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":" argMultimap.put(PREFIX_NAME, name);","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":" return argMultimap;","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"yuhinarita":2,"Ryan-Reno":8,"tzaph":23,"-":46}},{"path":"src/main/java/seedu/address/logic/parser/AddMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSEMATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" * Parses input arguments and creates a new {@code AddMemberCommand} object.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"public class AddMemberCommandParser implements Parser\u003cAddMemberCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" * Parses the given {@code String} of arguments in the context of the AddMemberCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" * and returns a AddMemberCommand object to execute.","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" * @throws ParseException if the user input does not conform the expected format or the group name is used","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" public AddMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" ArgumentMultimap argMultiMap \u003d ArgumentTokenizer.tokenize(args, PREFIX_COURSEMATE);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" Name name \u003d ParserUtil.parseName(argMultiMap.getPreamble());","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" Set\u003cQueryableCourseMate\u003e queryableCourseMateSet \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" ParserUtil.parseQueryableCourseMates(argMultiMap.getAllValues(PREFIX_COURSEMATE));","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" // will get caught by the catch clause, leave empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" if (queryableCourseMateSet.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" throw new ParseException(\"\");","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" return new AddMemberCommand(name, queryableCourseMateSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":41}},{"path":"src/main/java/seedu/address/logic/parser/AddSkillCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand.AddSkillDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":" * Parses input arguments and creates a new AddSkillCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":"public class AddSkillCommandParser implements Parser\u003cAddSkillCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":" * Parses the given {@code String} of arguments in the context of the AddSkillCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":" * and returns an AddSkillCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"tzaph"},"content":" public AddSkillCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_SKILL);","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":" QueryableCourseMate queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" queryableCourseMate \u003d ParserUtil.parseQueryableCourseMate(argMultimap.getPreamble());","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSkillCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor addSkillDescriptor \u003d new AddSkillDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" parseSkillsForEdit(argMultimap.getAllValues(PREFIX_SKILL)).ifPresent(addSkillDescriptor::setSkills);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" if (!addSkillDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" throw new ParseException(AddSkillCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":" return new AddSkillCommand(queryableCourseMate, addSkillDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" * Parses {@code Collection\u003cString\u003e skills} into a {@code Set\u003cSkill\u003e} if {@code skills} is non-empty.","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":" * If {@code skills} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":" * {@code Set\u003cSkill\u003e} containing zero skills.","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"tzaph"},"content":" private Optional\u003cSet\u003cSkill\u003e\u003e parseSkillsForEdit(Collection\u003cString\u003e skills) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"tzaph"},"content":" assert skills !\u003d null;","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"tzaph"},"content":" if (skills.isEmpty()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"tzaph"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":" Collection\u003cString\u003e skillSet \u003d skills;","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" if (skills.size() \u003d\u003d 1 \u0026\u0026 skills.contains(\"\")) {","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" skillSet \u003d Collections.emptySet();","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":" return Optional.of(ParserUtil.parseSkills(skillSet));","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"tzaph":72}},{"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\u003e value \u003cprefix\u003e value ...}\u003cbr\u003e","lastModifiedDate":"2016-10-16"},{"lineNumber":10,"author":{"gitId":"tzaph"},"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":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"tzaph"},"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":"2024-03-18"},{"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":"tzaph"},"content":" * 3. An argument may be repeated and all its values will be accumulated e.g. the value of {@code -t}","lastModifiedDate":"2024-03-18"},{"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\u003e value \u003cprefix\u003e value ...}","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\u003e value \u003cprefix\u003e value ...}","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":"tzaph"},"content":" * E.g if {@code argsString} \u003d \"-e hi-p 900\", {@code prefix} \u003d \"-p\" and","lastModifiedDate":"2024-03-18"},{"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":"tzaph"},"content":" * occurrences of \"-p\" with whitespace before it. However, if","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":" * {@code argsString} \u003d \"-e hi -p 900\", {@code prefix} \u003d \"-p\" and","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" * {@code fromIndex} \u003d 0, this method returns 6.","lastModifiedDate":"2024-03-18"},{"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\u003e value \u003cprefix\u003e value ...}","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":{"tzaph":7,"-":141}},{"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":"ivan24004"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"-n\");","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"-p\");","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"-e\");","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":" public static final Prefix PREFIX_SKILL \u003d new Prefix(\"-s\");","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":" public static final Prefix PREFIX_COURSEMATE \u003d new Prefix(\"-cm\");","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"-":10,"ivan24004":5}},{"path":"src/main/java/seedu/address/logic/parser/CreateGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSEMATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.CreateGroupCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" * Parses input arguments and creates a new {@code CreateGroupCommand} object.","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"public class CreateGroupCommandParser implements Parser\u003cCreateGroupCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" * Parses the given {@code String} of arguments in the context of the CreateGroupCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" * and returns a CreateGroupCommand object to execute.","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" * @throws ParseException if the user input does not conform the expected format or the group name is used","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" public CreateGroupCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" ArgumentMultimap argMultiMap \u003d ArgumentTokenizer.tokenize(args, PREFIX_COURSEMATE);","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" Name name \u003d ParserUtil.parseName(argMultiMap.getPreamble());","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" Set\u003cQueryableCourseMate\u003e queryableCourseMateSet \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" ParserUtil.parseQueryableCourseMates(argMultiMap.getAllValues(PREFIX_COURSEMATE));","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" return new CreateGroupCommand(name, queryableCourseMateSet);","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, CreateGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"ivan24004":36}},{"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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","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":"Ryan-Reno"},"content":" QueryableCourseMate queryableCourseMate \u003d ParserUtil.parseQueryableCourseMate(args);","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" return new DeleteCommand(queryableCourseMate);","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":{"Ryan-Reno":3,"-":26}},{"path":"src/main/java/seedu/address/logic/parser/DeleteGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSEMATE;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.DeleteGroupCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":" * Parses input arguments and creates a new {@code DeleteGroupCommand} object.","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"public class DeleteGroupCommandParser implements Parser\u003cDeleteGroupCommand\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteGroupCommand","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" * and returns a DeleteGroupCommand object to execute.","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" * @throws ParseException if the user input does not conform the expected format or the group name is used","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" public DeleteGroupCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" ArgumentMultimap argMultiMap \u003d ArgumentTokenizer.tokenize(args, PREFIX_COURSEMATE);","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" Name groupName \u003d ParserUtil.parseName(argMultiMap.getPreamble());","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" return new DeleteGroupCommand(groupName);","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"ivan24004":31}},{"path":"src/main/java/seedu/address/logic/parser/DeleteMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSEMATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" * Parses input arguments and creates a new {@code DeleteMemberCommand} object.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"public class DeleteMemberCommandParser implements Parser\u003cDeleteMemberCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteMemberCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" * and returns a DeleteMemberCommand object to execute.","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" * @throws ParseException if the user input does not conform the expected format or the group name is used","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" public DeleteMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" ArgumentMultimap argMultiMap \u003d ArgumentTokenizer.tokenize(args, PREFIX_COURSEMATE);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" Name name \u003d ParserUtil.parseName(argMultiMap.getPreamble());","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" Set\u003cQueryableCourseMate\u003e queryableCourseMateSet \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" ParserUtil.parseQueryableCourseMates(argMultiMap.getAllValues(PREFIX_COURSEMATE));","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" // will get caught by the catch clause, leave empty.","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" if (queryableCourseMateSet.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" throw new ParseException(\"\");","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" return new DeleteMemberCommand(name, queryableCourseMateSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" } catch (ParseException e) {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":41}},{"path":"src/main/java/seedu/address/logic/parser/DeleteSkillCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import java.util.Collection;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand.DeleteSkillDescriptor;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":" * Parses input arguments and creates a new DeleteSkillCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":"public class DeleteSkillCommandParser implements Parser\u003cDeleteSkillCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteSkillCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":" * and returns an DeleteSkillCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":" *","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":" public DeleteSkillCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_SKILL);","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":" QueryableCourseMate queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":" queryableCourseMate \u003d ParserUtil.parseQueryableCourseMate(argMultimap.getPreamble());","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor deleteSkillDescriptor \u003d new DeleteSkillDescriptor();","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" parseSkillsForEdit(argMultimap.getAllValues(PREFIX_SKILL)).ifPresent(deleteSkillDescriptor::setSkills);","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" if (!deleteSkillDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" throw new ParseException(DeleteSkillCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" return new DeleteSkillCommand(queryableCourseMate, deleteSkillDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":" * Parses {@code Collection\u003cString\u003e skills} into a {@code Set\u003cSkill\u003e} if {@code skills} is non-empty.","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" * If {@code skills} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"tzaph"},"content":" * {@code Set\u003cSkill\u003e} containing zero skills.","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"tzaph"},"content":" private Optional\u003cSet\u003cSkill\u003e\u003e parseSkillsForEdit(Collection\u003cString\u003e skills) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"tzaph"},"content":" assert skills !\u003d null;","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":" if (skills.isEmpty()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" Collection\u003cString\u003e skillSet \u003d skills.size() \u003d\u003d 1 \u0026\u0026 skills.contains(\"\") ? Collections.emptySet() : skills;","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" return Optional.of(ParserUtil.parseSkills(skillSet));","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"tzaph":69}},{"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":"-"},"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-01-26"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.logic.commands.EditCommand.EditCourseMateDescriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\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 EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"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 EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":34,"author":{"gitId":"yuhinarita"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_SKILL);","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" QueryableCourseMate queryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" queryableCourseMate \u003d ParserUtil.parseQueryableCourseMate(argMultimap.getPreamble());","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":44,"author":{"gitId":"yuhinarita"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor editCourseMateDescriptor \u003d new EditCourseMateDescriptor();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" editCourseMateDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" editCourseMateDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" editCourseMateDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" parseSkillsForEdit(argMultimap.getAllValues(PREFIX_SKILL)).ifPresent(editCourseMateDescriptor::setSkills);","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" if (!editCourseMateDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" return new EditCommand(queryableCourseMate, editCourseMateDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":67,"author":{"gitId":"Ryan-Reno"},"content":" * Parses {@code Collection\u003cString\u003e skills} into a {@code Set\u003cSkill\u003e} if {@code skills} is non-empty.","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" * If {@code skills} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" * {@code Set\u003cSkill\u003e} containing zero skills.","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":71,"author":{"gitId":"Ryan-Reno"},"content":" private Optional\u003cSet\u003cSkill\u003e\u003e parseSkillsForEdit(Collection\u003cString\u003e skills) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" assert skills !\u003d null;","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":" if (skills.isEmpty()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":" Collection\u003cString\u003e skillSet \u003d skills.size() \u003d\u003d 1 \u0026\u0026 skills.contains(\"\") ? Collections.emptySet() : skills;","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" return Optional.of(ParserUtil.parseSkills(skillSet));","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"yuhinarita":2,"Ryan-Reno":21,"-":58}},{"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":"benson1029"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","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 FindCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\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 FindCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * and returns a FindCommand 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 FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":20,"author":{"gitId":"benson1029"},"content":" String trimmedArgs \u003d args.trim().replaceAll(\"\\\\s+\", \" \");","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12"},{"lineNumber":22,"author":{"gitId":"benson1029"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"benson1029"},"content":" FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"benson1029"},"content":" return new FindCommand(new ContainsKeywordPredicate(trimmedArgs));","lastModifiedDate":"2024-03-17"},{"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"}],"authorContributionMap":{"benson1029":5,"-":23}},{"path":"src/main/java/seedu/address/logic/parser/FindGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.logic.commands.FindGroupCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.ContainsGroupKeywordPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":" * Parses input arguments and creates a new FindGroupCommand object","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"content":"public class FindGroupCommandParser implements Parser\u003cFindGroupCommand\u003e {","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":" * Parses the given {@code String} of arguments in the context of the FindGroupCommand","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":" * and returns a FindGroupCommand object for execution.","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":" public FindGroupCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":" String trimmedArgs \u003d args.trim().replaceAll(\"\\\\s+\", \" \");","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"yuhinarita"},"content":" FindGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" return new FindGroupCommand(new ContainsGroupKeywordPredicate(trimmedArgs));","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"yuhinarita":28}},{"path":"src/main/java/seedu/address/logic/parser/MatchMateParser.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":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.CreateGroupCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.DeleteGroupCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.logic.commands.FindGroupCommand;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":"public class MatchMateParser {","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MatchMateParser.class);","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":54,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":" if (!isValidArgument(arguments)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"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":67,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"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":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":82,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"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":"tzaph"},"content":" case AddSkillCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"tzaph"},"content":" return new AddSkillCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"tzaph"},"content":" case DeleteSkillCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"tzaph"},"content":" return new DeleteSkillCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":" case CreateGroupCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"ivan24004"},"content":" return new CreateGroupCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"ivan24004"},"content":" case DeleteGroupCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"ivan24004"},"content":" return new DeleteGroupCommandParser().parse(arguments);","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"yuhinarita"},"content":" case FindGroupCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-21"},{"lineNumber":110,"author":{"gitId":"yuhinarita"},"content":" return new FindGroupCommandParser().parse(arguments);","lastModifiedDate":"2024-03-21"},{"lineNumber":111,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":112,"author":{"gitId":"ivan24004"},"content":" case DeleteMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"ivan24004"},"content":" return new DeleteMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"ivan24004"},"content":" case AddMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"ivan24004"},"content":" return new AddMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":124,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"tzaph"},"content":" * Checks for prefixes if they are valid with the currently supported prefix codes. The argument is valid","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"tzaph"},"content":" * if every prefix occurence in {@code argsString} is lead and trailed by a whitespace.","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"tzaph"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"tzaph"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003e value \u003cprefix\u003e value ...}","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"tzaph"},"content":" private boolean isValidArgument(String argsString) {","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"tzaph"},"content":" // Iterate through the list of valid prefixes","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"tzaph"},"content":" List\u003cPrefix\u003e listOfPrefixes \u003d new ArrayList\u003c\u003e(","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"tzaph"},"content":" List.of(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_SKILL));","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"tzaph"},"content":" for (Prefix prefix : listOfPrefixes) {","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"tzaph"},"content":" // Find all occurrences of the prefix in the String","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"tzaph"},"content":" int start \u003d 0;","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"tzaph"},"content":" while (start \u003e\u003d 0) {","lastModifiedDate":"2024-03-18"},{"lineNumber":138,"author":{"gitId":"tzaph"},"content":" start \u003d argsString.indexOf(\" \" + prefix, start);","lastModifiedDate":"2024-03-18"},{"lineNumber":139,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"tzaph"},"content":" // No more occurrences are found","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"tzaph"},"content":" if (start \u003d\u003d -1) {","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"tzaph"},"content":" break;","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"tzaph"},"content":" // Check if there is a whitespace after the prefix","lastModifiedDate":"2024-03-18"},{"lineNumber":146,"author":{"gitId":"tzaph"},"content":" int checkIndex \u003d start + (prefix.toString()).length() + 1;","lastModifiedDate":"2024-03-18"},{"lineNumber":147,"author":{"gitId":"tzaph"},"content":" if (checkIndex \u003c argsString.length() \u0026\u0026 argsString.charAt(checkIndex) !\u003d \u0027 \u0027) {","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"tzaph"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"tzaph"},"content":" // Find occurrences after the current index","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"tzaph"},"content":" start +\u003d 1;","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"tzaph"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"yuhinarita":4,"tzaph":52,"-":84,"ivan24004":18}},{"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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" private static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" if (trimmedIndex.isEmpty() || trimmedIndex.charAt(0) !\u003d \u0027#\u0027 || trimmedIndex.equals(\"#\")) {","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" if (trimmedIndex.equals(\"##\")) {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" return Index.fromOneBased(0);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex.substring(1))) {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex.substring(1)));","lastModifiedDate":"2024-03-20"},{"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 email} into an {@code Email}.","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 email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":83,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":84,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":88,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"Ryan-Reno"},"content":" * Parses a {@code String skill} into a {@code Skill}.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * @throws ParseException if the given {@code skill} is invalid.","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"Ryan-Reno"},"content":" public static Skill parseSkill(String skill) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(skill);","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":" String trimmedSkill \u003d skill.trim();","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":" return new Skill(trimmedSkill);","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":" * Parses {@code Collection\u003cString\u003e skills} into a {@code Set\u003cSkill\u003e}.","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" public static Set\u003cSkill\u003e parseSkills(Collection\u003cString\u003e skills) throws ParseException {","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(skills);","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"Ryan-Reno"},"content":" final Set\u003cSkill\u003e skillSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"Ryan-Reno"},"content":" for (String skillName : skills) {","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":" skillSet.add(parseSkill(skillName));","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":112,"author":{"gitId":"Ryan-Reno"},"content":" return skillSet;","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"ivan24004"},"content":" * Parses {@code String label} into a {@code QueryableCourseMate}.","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"ivan24004"},"content":" public static QueryableCourseMate parseQueryableCourseMate(String label) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"ivan24004"},"content":" requireNonNull(label);","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"ivan24004"},"content":" String trimmedLabel \u003d label.trim();","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"ivan24004"},"content":" if (trimmedLabel.isEmpty()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"ivan24004"},"content":" throw new ParseException(\"the query cannot be empty\");","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"ivan24004"},"content":" if (trimmedLabel.charAt(0) \u003d\u003d \u0027#\u0027) {","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"Ryan-Reno"},"content":" return new QueryableCourseMate(parseIndex(trimmedLabel));","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"ivan24004"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"ivan24004"},"content":" return new QueryableCourseMate(parseName(trimmedLabel));","lastModifiedDate":"2024-03-19"},{"lineNumber":130,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":131,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":132,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"ivan24004"},"content":" * Parses {@code String labels} into a {@code Set\u003cQueryableCourseMate\u003e}.","lastModifiedDate":"2024-03-19"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"ivan24004"},"content":" public static Set\u003cQueryableCourseMate\u003e parseQueryableCourseMates(Collection\u003cString\u003e labels)","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"ivan24004"},"content":" throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"ivan24004"},"content":" requireNonNull(labels);","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"ivan24004"},"content":" final Set\u003cQueryableCourseMate\u003e courseMateSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"ivan24004"},"content":" for (String courseMateName : labels) {","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"ivan24004"},"content":" courseMateSet.add(parseQueryableCourseMate(courseMateName));","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"ivan24004"},"content":" return courseMateSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Ryan-Reno":29,"-":90,"ivan24004":25}},{"path":"src/main/java/seedu/address/model/ContactList.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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.UniqueCourseMateList;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":" * Wraps all data at the contact list level","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":" * Duplicates are not allowed (by .isSameCourseMate comparison)","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"public class ContactList implements ReadOnlyContactList {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":" private final UniqueCourseMateList courseMates;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" courseMates \u003d new UniqueCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" public ContactList() {}","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" * Creates an ContactList using the Course mates in the {@code toBeCopied}","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" public ContactList(ReadOnlyContactList toBeCopied) {","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" * Replaces the contents of the courseMate list with {@code courseMates}.","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" * {@code courseMates} must not contain duplicate courseMates.","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMates(List\u003cCourseMate\u003e courseMates) {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" this.courseMates.setCourseMates(courseMates);","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" * Resets the existing data of this {@code ContactList} with {@code newData}.","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" public void resetData(ReadOnlyContactList newData) {","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" setCourseMates(newData.getCourseMateList());","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" //// courseMate-level operations","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" * Returns true if a courseMate with the same identity as {@code courseMate} exists in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":67,"author":{"gitId":"Ryan-Reno"},"content":" public boolean hasCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" return courseMates.contains(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" * Adds a courseMate to the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":" * The courseMate must not already exist in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":" public void addCourseMate(CourseMate p) {","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":" courseMates.add(p);","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" * Replaces the given courseMate {@code target} in the list with {@code editedCourseMate}.","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" * {@code target} must exist in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" * The courseMate identity of {@code editedCourseMate} must not be the same as","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" * another existing courseMate in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate(CourseMate target, CourseMate editedCourseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" courseMates.setCourseMate(target, editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":92,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"ivan24004"},"content":" * Finds a {@code CourseMate} with the exact same name.","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" public List\u003cCourseMate\u003e findCourseMate(Name name) {","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"ivan24004"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":" return courseMates.findCourseMate(name);","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":102,"author":{"gitId":"Ryan-Reno"},"content":" * Removes {@code key} from this {@code ContactList}.","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"Ryan-Reno"},"content":" * {@code key} must exist in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":" public void removeCourseMate(CourseMate key) {","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" courseMates.remove(key);","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":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"Ryan-Reno"},"content":" .add(\"courseMates\", courseMates)","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":119,"author":{"gitId":"Ryan-Reno"},"content":" public ObservableList\u003cCourseMate\u003e getCourseMateList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"Ryan-Reno"},"content":" return courseMates.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":124,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":130,"author":{"gitId":"Ryan-Reno"},"content":" if (!(other instanceof ContactList)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"Ryan-Reno"},"content":" ContactList otherContactList \u003d (ContactList) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"Ryan-Reno"},"content":" return courseMates.equals(otherContactList.courseMates);","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":140,"author":{"gitId":"Ryan-Reno"},"content":" return courseMates.hashCode();","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"yuhinarita":2,"Ryan-Reno":45,"-":87,"ivan24004":8}},{"path":"src/main/java/seedu/address/model/GroupList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import java.util.List;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.UniqueGroupList;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":" * Wraps all data at the group list level","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" * Duplicates are not allowed (by .isSameGroup comparison)","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"public class GroupList implements ReadOnlyGroupList {","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" private final UniqueGroupList groups \u003d new UniqueGroupList();","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" public GroupList() {}","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" * Constructor that copies data from an existing {@code ReadOnlyGroupList} object.","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" public GroupList(ReadOnlyGroupList toBeCopied) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" this();","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" requireNonNull(toBeCopied);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" * Replaces the contents of the group list with {@code groups}.","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" * {@code groups} must not contain duplicate groups.","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" public void setGroups(List\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" this.groups.setGroups(groups);","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" * Resets the existing data of this {@code GroupList} with {@code newData}.","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" public void resetData(ReadOnlyGroupList newData) {","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" setGroups(newData.getGroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" //// group-level operations","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" * Returns true if a courseMate with the same identity as {@code courseMate} exists in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" return groups.contains(group);","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" * Adds a group to the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" * The group must not already exist in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" public void addGroup(Group p) {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" groups.add(p);","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" * Replaces the given group {@code target} in the list with {@code editedGroup}.","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" * {@code target} must exist in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" * The group identity of {@code editedGroup} must not be the same as","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" * another existing group in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" requireNonNull(editedGroup);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"ivan24004"},"content":" groups.setGroup(target, editedGroup);","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" * Removes {@code key} from this {@code GroupList}.","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":" * {@code key} must exist in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" public void removeGroup(Group key) {","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":" groups.remove(key);","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" * Find a group with specified {@code name} from this","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":" public Group findGroup(Name name) {","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":" return groups.findGroup(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"ivan24004"},"content":" //// util methods","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"ivan24004"},"content":" public String toString() {","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"ivan24004"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":" .add(\"groups\", groups)","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":" .toString();","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"ivan24004"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":104,"author":{"gitId":"ivan24004"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":105,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"ivan24004"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"ivan24004"},"content":" if (!(other instanceof GroupList)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"ivan24004"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"ivan24004"},"content":" GroupList otherContactList \u003d (GroupList) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"ivan24004"},"content":" return groups.equals(otherContactList.groups);","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"ivan24004"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"ivan24004"},"content":" return groups.hashCode();","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"ivan24004"},"content":" public ObservableList\u003cGroup\u003e getGroupList() {","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"ivan24004"},"content":" return groups.asUnmodifiableObservableList();","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"ivan24004":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":"Ryan-Reno"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.exceptions.GroupNotFoundException;","lastModifiedDate":"2024-03-18"},{"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":"Ryan-Reno"},"content":" Predicate\u003cCourseMate\u003e PREDICATE_SHOW_ALL_COURSE_MATES \u003d unused -\u003e true;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" Predicate\u003cGroup\u003e PREDICATE_SHOW_ALL_GROUPS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06"},{"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.","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","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":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","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":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","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":"Ryan-Reno"},"content":" * Returns the user prefs\u0027 contact list file path.","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" Path getContactListFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" * Sets the user prefs\u0027 contact list file path.","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" void setContactListFilePath(Path contactListFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" * Replaces contact list data with the data in {@code contactList}.","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" void setContactList(ReadOnlyContactList contactList);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" /** Returns the ContactList */","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" ReadOnlyContactList getContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" * Returns true if a courseMate with the same identity as {@code courseMate} exists in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" boolean hasCourseMate(CourseMate courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" * Deletes the given courseMate.","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Ryan-Reno"},"content":" * The courseMate must exist in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" void deleteCourseMate(CourseMate target);","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":" * Adds the given courseMate.","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":" * {@code courseMate} must not already exist in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" void addCourseMate(CourseMate courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" * Replaces the given courseMate {@code target} with {@code editedCourseMate}.","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" * {@code target} must exist in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" * The courseMate identity of {@code editedCourseMate} must not be the same as another","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" * existing courseMate in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" void setCourseMate(CourseMate target, CourseMate editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":" * Returns the user prefs\u0027 contact list file path.","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":" Path getGroupListFilePath();","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ivan24004"},"content":" * Sets the user prefs\u0027 contact list file path.","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ivan24004"},"content":" void setGroupListFilePath(Path groupListFilePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" * Replaces contact list data with the data in {@code groupList}.","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ivan24004"},"content":" void setGroupList(ReadOnlyGroupList groupList);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":" /** Returns the GroupList */","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ivan24004"},"content":" ReadOnlyGroupList getGroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":107,"author":{"gitId":"ivan24004"},"content":" * Returns true if a courseMate with the same identity as {@code courseMate} exists in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"ivan24004"},"content":" boolean hasGroup(Group group);","lastModifiedDate":"2024-03-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"ivan24004"},"content":" * Deletes the given group.","lastModifiedDate":"2024-03-18"},{"lineNumber":113,"author":{"gitId":"ivan24004"},"content":" * The group must exist in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":115,"author":{"gitId":"ivan24004"},"content":" void deleteGroup(Group target);","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":"ivan24004"},"content":" * Finds the group based on name.","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"ivan24004"},"content":" * @throws GroupNotFoundException if group doesn\u0027t exist","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"ivan24004"},"content":" Group findGroup(Name name) throws GroupNotFoundException;","lastModifiedDate":"2024-03-18"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":124,"author":{"gitId":"ivan24004"},"content":" * Adds the given group.","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"ivan24004"},"content":" * {@code group} must not already exist in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":126,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":127,"author":{"gitId":"ivan24004"},"content":" void addGroup(Group group);","lastModifiedDate":"2024-03-18"},{"lineNumber":128,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":129,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":130,"author":{"gitId":"ivan24004"},"content":" * Replaces the given group {@code target} with {@code editedGroup}.","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"ivan24004"},"content":" * {@code target} must exist in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"ivan24004"},"content":" * The group identity of {@code editedGroup} must not be the same as another","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"ivan24004"},"content":" * existing group in the contact list.","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"ivan24004"},"content":" void setGroup(Group target, Group editedGroup);","lastModifiedDate":"2024-03-18"},{"lineNumber":136,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":137,"author":{"gitId":"ivan24004"},"content":" * Finds a {@code CourseMate} with the exact same name.","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e findCourseMate(QueryableCourseMate query);","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"Ryan-Reno"},"content":" /** Returns an unmodifiable view of the filtered courseMate list */","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"Ryan-Reno"},"content":" ObservableList\u003cCourseMate\u003e getFilteredCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":145,"author":{"gitId":"Ryan-Reno"},"content":" * Updates the filter of the filtered courseMate list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":148,"author":{"gitId":"Ryan-Reno"},"content":" void updateFilteredCourseMateList(Predicate\u003cCourseMate\u003e predicate);","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":150,"author":{"gitId":"yuhinarita"},"content":" /** Returns an unmodifiable view of the filtered group list */","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"yuhinarita"},"content":" ObservableList\u003cGroup\u003e getFilteredGroupList();","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"yuhinarita"},"content":" * Updates the filter of the filtered group list to filter by the given {@code prediate}.","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"yuhinarita"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"yuhinarita"},"content":" void updateFilteredGroupList(Predicate\u003cGroup\u003e predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"benson1029"},"content":" /** Returns the most recently processed course mate */","lastModifiedDate":"2024-03-15"},{"lineNumber":160,"author":{"gitId":"benson1029"},"content":" CourseMate getRecentlyProcessedCourseMate();","lastModifiedDate":"2024-03-15"},{"lineNumber":161,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":162,"author":{"gitId":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":163,"author":{"gitId":"benson1029"},"content":" * Sets the most recently processed course mate.","lastModifiedDate":"2024-03-15"},{"lineNumber":164,"author":{"gitId":"benson1029"},"content":" * The course mate need not exist in the contact list, for example, when the user is deleting","lastModifiedDate":"2024-03-15"},{"lineNumber":165,"author":{"gitId":"benson1029"},"content":" * a course mate, the most recently processed course mate is set to the course mate that was deleted.","lastModifiedDate":"2024-03-15"},{"lineNumber":166,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"benson1029"},"content":" void setRecentlyProcessedCourseMate(CourseMate courseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"yuhinarita":10,"Ryan-Reno":29,"benson1029":10,"-":83,"ivan24004":36}},{"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":"Ryan-Reno"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12"},{"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 javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.exceptions.GroupNotFoundException;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" * Represents the in-memory model of the contact list data.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" private final ContactList contactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" private final GroupList groupList;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" private final FilteredList\u003cCourseMate\u003e filteredCourseMates;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"yuhinarita"},"content":" private final FilteredList\u003cGroup\u003e filteredGroups;","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"benson1029"},"content":" private CourseMate recentlyProcessedCourseMate;","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" * Initializes a ModelManager with the given contact list and userPrefs.","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" public ModelManager(ReadOnlyContactList contactList, ReadOnlyUserPrefs userPrefs, ReadOnlyGroupList groupList) {","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" requireAllNonNull(contactList, userPrefs);","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" logger.fine(\"Initializing with contact list: \" + contactList + \" and user prefs \" + userPrefs);","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" this.contactList \u003d new ContactList(contactList);","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" this.groupList \u003d new GroupList(groupList);","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" filteredCourseMates \u003d new FilteredList\u003c\u003e(this.contactList.getCourseMateList());","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" filteredGroups \u003d new FilteredList\u003c\u003e(this.groupList.getGroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"benson1029"},"content":" recentlyProcessedCourseMate \u003d null;","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" this(new ContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"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":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06"},{"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 ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ContactList \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-20"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" public Path getContactListFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" return userPrefs.getContactListFilePath();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void setContactListFilePath(Path contactListFilePath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(contactListFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" userPrefs.setContactListFilePath(contactListFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":" public void setContactList(ReadOnlyContactList contactList) {","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" this.contactList.resetData(contactList);","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":" public ReadOnlyContactList getContactList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":" return contactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":" public boolean hasCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" return contactList.hasCourseMate(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":" public void deleteCourseMate(CourseMate target) {","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Ryan-Reno"},"content":" contactList.removeCourseMate(target);","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":115,"author":{"gitId":"Ryan-Reno"},"content":" public void addCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"Ryan-Reno"},"content":" contactList.addCourseMate(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"Ryan-Reno"},"content":" updateFilteredCourseMateList(PREDICATE_SHOW_ALL_COURSE_MATES);","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":121,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate(CourseMate target, CourseMate editedCourseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"Ryan-Reno"},"content":" requireAllNonNull(target, editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":124,"author":{"gitId":"Ryan-Reno"},"content":" contactList.setCourseMate(target, editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":127,"author":{"gitId":"ivan24004"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d GroupList \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"ivan24004"},"content":" public Path getGroupListFilePath() {","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"ivan24004"},"content":" return userPrefs.getGroupListFilePath();","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"ivan24004"},"content":" public void setGroupListFilePath(Path groupListFilePath) {","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"ivan24004"},"content":" requireNonNull(groupListFilePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"ivan24004"},"content":" userPrefs.setGroupListFilePath(groupListFilePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"ivan24004"},"content":" public void setGroupList(ReadOnlyGroupList groupList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"ivan24004"},"content":" this.groupList.resetData(groupList);","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"ivan24004"},"content":" public ReadOnlyGroupList getGroupList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"ivan24004"},"content":" return groupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":150,"author":{"gitId":"ivan24004"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-03-18"},{"lineNumber":151,"author":{"gitId":"ivan24004"},"content":" requireNonNull(group);","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"ivan24004"},"content":" return groupList.hasGroup(group);","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":156,"author":{"gitId":"ivan24004"},"content":" public void deleteGroup(Group target) {","lastModifiedDate":"2024-03-18"},{"lineNumber":157,"author":{"gitId":"ivan24004"},"content":" groupList.removeGroup(target);","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":161,"author":{"gitId":"ivan24004"},"content":" public Group findGroup(Name name) throws GroupNotFoundException {","lastModifiedDate":"2024-03-18"},{"lineNumber":162,"author":{"gitId":"ivan24004"},"content":" return groupList.findGroup(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":166,"author":{"gitId":"ivan24004"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-03-18"},{"lineNumber":167,"author":{"gitId":"ivan24004"},"content":" groupList.addGroup(group);","lastModifiedDate":"2024-03-18"},{"lineNumber":168,"author":{"gitId":"ivan24004"},"content":" updateFilteredGroupList(PREDICATE_SHOW_ALL_GROUPS);","lastModifiedDate":"2024-03-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":172,"author":{"gitId":"ivan24004"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-03-18"},{"lineNumber":173,"author":{"gitId":"ivan24004"},"content":" requireAllNonNull(target, editedGroup);","lastModifiedDate":"2024-03-18"},{"lineNumber":174,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":175,"author":{"gitId":"ivan24004"},"content":" groupList.setGroup(target, editedGroup);","lastModifiedDate":"2024-03-18"},{"lineNumber":176,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":178,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"Ryan-Reno"},"content":" public List\u003cCourseMate\u003e findCourseMate(QueryableCourseMate query) throws CourseMateNotFoundException {","lastModifiedDate":"2024-03-21"},{"lineNumber":180,"author":{"gitId":"ivan24004"},"content":" if (query.isIndex()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"Ryan-Reno"},"content":" if (query.getIndex().getZeroBased() \u003d\u003d -1) {","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"Ryan-Reno"},"content":" ArrayList\u003cCourseMate\u003e arrayList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":183,"author":{"gitId":"Ryan-Reno"},"content":" arrayList.add(getRecentlyProcessedCourseMate());","lastModifiedDate":"2024-03-21"},{"lineNumber":184,"author":{"gitId":"Ryan-Reno"},"content":" return arrayList;","lastModifiedDate":"2024-03-21"},{"lineNumber":185,"author":{"gitId":"Ryan-Reno"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"Ryan-Reno"},"content":" ArrayList\u003cCourseMate\u003e arrayList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":187,"author":{"gitId":"Ryan-Reno"},"content":" arrayList.add(getFilteredCourseMateList().get(query.getIndex().getZeroBased()));","lastModifiedDate":"2024-03-21"},{"lineNumber":188,"author":{"gitId":"Ryan-Reno"},"content":" return arrayList;","lastModifiedDate":"2024-03-21"},{"lineNumber":189,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"ivan24004"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"ivan24004"},"content":" return contactList.findCourseMate(query.getName());","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"Ryan-Reno"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered CourseMate 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-12"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":198,"author":{"gitId":"Ryan-Reno"},"content":" * Returns an unmodifiable view of the list of {@code CourseMate} backed by the internal list of","lastModifiedDate":"2024-03-12"},{"lineNumber":199,"author":{"gitId":"Ryan-Reno"},"content":" * {@code versionedContactList}","lastModifiedDate":"2024-03-12"},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":202,"author":{"gitId":"Ryan-Reno"},"content":" public ObservableList\u003cCourseMate\u003e getFilteredCourseMateList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":203,"author":{"gitId":"Ryan-Reno"},"content":" return filteredCourseMates;","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":207,"author":{"gitId":"Ryan-Reno"},"content":" public void updateFilteredCourseMateList(Predicate\u003cCourseMate\u003e predicate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":208,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":209,"author":{"gitId":"Ryan-Reno"},"content":" filteredCourseMates.setPredicate(predicate);","lastModifiedDate":"2024-03-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":212,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":213,"author":{"gitId":"yuhinarita"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-03-16"},{"lineNumber":214,"author":{"gitId":"yuhinarita"},"content":" return filteredGroups;","lastModifiedDate":"2024-03-16"},{"lineNumber":215,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":216,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":217,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":218,"author":{"gitId":"yuhinarita"},"content":" public void updateFilteredGroupList(Predicate\u003cGroup\u003e predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":219,"author":{"gitId":"yuhinarita"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-16"},{"lineNumber":220,"author":{"gitId":"ivan24004"},"content":" filteredGroups.setPredicate(predicate);","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":222,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":223,"author":{"gitId":"benson1029"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Most recently processed course mate \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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-15"},{"lineNumber":224,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":225,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":226,"author":{"gitId":"benson1029"},"content":" public CourseMate getRecentlyProcessedCourseMate() {","lastModifiedDate":"2024-03-15"},{"lineNumber":227,"author":{"gitId":"benson1029"},"content":" return recentlyProcessedCourseMate;","lastModifiedDate":"2024-03-15"},{"lineNumber":228,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":229,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":230,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":231,"author":{"gitId":"benson1029"},"content":" public void setRecentlyProcessedCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-15"},{"lineNumber":232,"author":{"gitId":"benson1029"},"content":" recentlyProcessedCourseMate \u003d courseMate;","lastModifiedDate":"2024-03-15"},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":235,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":236,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":237,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":238,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":241,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":242,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":243,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":246,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":247,"author":{"gitId":"Ryan-Reno"},"content":" return contactList.equals(otherModelManager.contactList)","lastModifiedDate":"2024-03-12"},{"lineNumber":248,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":249,"author":{"gitId":"ivan24004"},"content":" \u0026\u0026 filteredCourseMates.equals(otherModelManager.filteredCourseMates)","lastModifiedDate":"2024-03-20"},{"lineNumber":250,"author":{"gitId":"ivan24004"},"content":" \u0026\u0026 filteredGroups.equals(otherModelManager.filteredGroups)","lastModifiedDate":"2024-03-20"},{"lineNumber":251,"author":{"gitId":"ivan24004"},"content":" \u0026\u0026 groupList.equals(otherModelManager.groupList);","lastModifiedDate":"2024-03-20"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":254,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"yuhinarita":12,"Ryan-Reno":49,"benson1029":12,"-":134,"ivan24004":47}},{"path":"src/main/java/seedu/address/model/ReadOnlyContactList.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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":" * Unmodifiable view of an contact list","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"public interface ReadOnlyContactList {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":" * Returns an unmodifiable view of the course mates list.","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":" * This list will not contain any duplicate course mates.","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":" ObservableList\u003cCourseMate\u003e getCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Ryan-Reno":6,"-":11}},{"path":"src/main/java/seedu/address/model/ReadOnlyGroupList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":" * Unmodifiable view of a group list","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"public interface ReadOnlyGroupList {","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":" * Returns an unmodifiable view of the group list.","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":" * This list will not contain any duplicate groups.","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":" ObservableList\u003cGroup\u003e getGroupList();","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"ivan24004":15}},{"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":"Ryan-Reno"},"content":" Path getContactListFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"Ryan-Reno":1,"-":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":"Ryan-Reno"},"content":" private Path contactListFilePath \u003d Paths.get(\"data\" , \"contactlist.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" private Path groupListFilePath \u003d Paths.get(\"data\" , \"grouplist.json\");","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":" setContactListFilePath(newUserPrefs.getContactListFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" public Path getContactListFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" return contactListFilePath;","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" public void setContactListFilePath(Path contactListFilePath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(contactListFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" this.contactListFilePath \u003d contactListFilePath;","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" public Path getGroupListFilePath() {","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" return groupListFilePath;","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" public void setGroupListFilePath(Path groupListFilePath) {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" requireNonNull(groupListFilePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" this.groupListFilePath \u003d groupListFilePath;","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":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"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 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":"Ryan-Reno"},"content":" \u0026\u0026 contactListFilePath.equals(otherUserPrefs.contactListFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" return Objects.hash(guiSettings, contactListFilePath);","lastModifiedDate":"2024-03-12"},{"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 String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":93,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":" sb.append(\"\\nLocal data file location : \" + contactListFilePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Ryan-Reno":10,"-":80,"ivan24004":8}},{"path":"src/main/java/seedu/address/model/coursemate/ContainsKeywordPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"benson1029"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"benson1029"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"benson1029"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"benson1029"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"benson1029"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"benson1029"},"content":" * Tests that a {@code CourseMate}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"benson1029"},"content":"public class ContainsKeywordPredicate implements Predicate\u003cCourseMate\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"benson1029"},"content":" private final String keyword;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"benson1029"},"content":" public ContainsKeywordPredicate(String keyword) {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"benson1029"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"benson1029"},"content":" public boolean test(CourseMate courseMate) {","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"benson1029"},"content":" // TODO: Handle matches of groups.","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"benson1029"},"content":" return StringUtil.containsIgnoreCase(courseMate.getName().fullName, this.keyword)","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"benson1029"},"content":" || courseMate.getSkills().stream().anyMatch(skill -\u003e skill.skillName.contentEquals(this.keyword));","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"benson1029"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"benson1029"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"benson1029"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"benson1029"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"benson1029"},"content":" if (!(other instanceof ContainsKeywordPredicate)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"benson1029"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate otherContainsKeywordsPredicate \u003d (ContainsKeywordPredicate) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"benson1029"},"content":" return keyword.contentEquals(otherContainsKeywordsPredicate.keyword);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"benson1029"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"benson1029"},"content":" return new ToStringBuilder(this).add(\"keyword\", keyword).toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"benson1029":44}},{"path":"src/main/java/seedu/address/model/coursemate/CourseMate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":" * Represents a CourseMate in the contact list.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"public class CourseMate {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" private final Set\u003cSkill\u003e skills \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":" public CourseMate(Name name, Phone phone, Email email, Set\u003cSkill\u003e skills) {","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"yuhinarita"},"content":" requireAllNonNull(name, phone, email, skills);","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" this.skills.addAll(skills);","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" * Returns an immutable skill set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" public Set\u003cSkill\u003e getSkills() {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" return Collections.unmodifiableSet(skills);","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" * Returns true if both course mates have the same name.","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" * This defines a weaker notion of equality between two course mates.","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" public boolean isSameCourseMate(CourseMate otherCourseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" if (otherCourseMate \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":67,"author":{"gitId":"Ryan-Reno"},"content":" return otherCourseMate !\u003d null","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" \u0026\u0026 otherCourseMate.getName().equals(getName());","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" * Returns true if both course mates have the same identity and data fields.","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" * This defines a stronger notion of equality between two course mates.","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" if (!(other instanceof CourseMate)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate otherCourseMate \u003d (CourseMate) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" return name.equals(otherCourseMate.name)","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":" \u0026\u0026 phone.equals(otherCourseMate.phone)","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" \u0026\u0026 email.equals(otherCourseMate.email)","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" \u0026\u0026 skills.equals(otherCourseMate.skills);","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":96,"author":{"gitId":"yuhinarita"},"content":" return Objects.hash(name, phone, email, skills);","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":103,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":104,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":" .add(\"skills\", skills)","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"yuhinarita":3,"Ryan-Reno":24,"-":82}},{"path":"src/main/java/seedu/address/model/coursemate/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Represents a CourseMate\u0027s email in the contact list.","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":2,"-":77}},{"path":"src/main/java/seedu/address/model/coursemate/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Represents a CourseMate\u0027s name in the contact list.","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":2,"-":65}},{"path":"src/main/java/seedu/address/model/coursemate/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Represents a CourseMate\u0027s phone number in the contact list.","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":2,"-":59}},{"path":"src/main/java/seedu/address/model/coursemate/QueryableCourseMate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.exceptions.IllegalQueryableParameterException;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":" * Class that can represent either an index or a name.","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":" * This is used to query a CourseMate from a list.","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"public class QueryableCourseMate {","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":" private final Index index;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":" private final Name name;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" * Basic constructor that takes an {@code Index} object.","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" public QueryableCourseMate(Index index) {","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" requireNonNull(index);","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" this.name \u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" * Basic constructor that takes an {@code Name} object.","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" public QueryableCourseMate(Name name) {","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" this.index \u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" * Attempts to access this object as an index.","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" * Throws a {@code IllegalQueryableParameterException} if it can\u0027t be done.","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public Index getIndex() throws IllegalQueryableParameterException {","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" if (index \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" throw new IllegalQueryableParameterException(\"Index\");","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" return index;","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" * Attempts to access this object as a name.","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" * Throws a {@code IllegalQueryableParameterException} if it can\u0027t be done.","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" public Name getName() throws IllegalQueryableParameterException {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" throw new IllegalQueryableParameterException(\"Name\");","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" return name;","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" * Checks if the value is a {@code Index}. Mutually exclusive with {@code isName}.","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" public boolean isIndex() {","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" return index !\u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" * Checks if the value is a {@code Name}. Mutually exclusive with {@code isIndex}.","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" public boolean isName() {","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" return name !\u003d null;","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" if (isName()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":" return name.toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"ivan24004"},"content":" } else {","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" return \"#\" + index.getOneBased();","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":" if (!(other instanceof QueryableCourseMate)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate otherQueryable \u003d (QueryableCourseMate) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":" if (isName() \u0026\u0026 otherQueryable.isName()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ivan24004"},"content":" return name.equals(otherQueryable.name);","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"ivan24004"},"content":" if (isIndex() \u0026\u0026 otherQueryable.isIndex()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ivan24004"},"content":" return index.equals(otherQueryable.index);","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"ivan24004"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":" if (isName()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ivan24004"},"content":" return name.hashCode();","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ivan24004"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":" return index.hashCode();","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"ivan24004":106}},{"path":"src/main/java/seedu/address/model/coursemate/UniqueCourseMateList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.exceptions.DuplicateCourseMateException;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" * A list of course mates that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" * A courseMate is considered unique by comparing using","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" * {@code CourseMate#isSameCourseMate(CourseMate)}.","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" * As such, adding and updating of course mates uses CourseMate#isSameCourseMate(CourseMate)","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":" * for equality so as to ensure that the courseMate being added or updated is","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" * unique in terms of identity in the UniqueCourseMateList.","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" * However, the removal of a courseMate uses CourseMate#equals(Object) so","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" * as to ensure that the courseMate with exactly the same fields will be removed.","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" * @see CourseMate#isSameCourseMate(CourseMate)","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":"public class UniqueCourseMateList implements Iterable\u003cCourseMate\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" private final ObservableList\u003cCourseMate\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" private final ObservableList\u003cCourseMate\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" * Returns true if the list contains an equivalent courseMate as the given argument.","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" public boolean contains(CourseMate toCheck) {","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" return internalList.stream().anyMatch(toCheck::isSameCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" * Adds a courseMate to the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" * The courseMate must not already exist in the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" public void add(CourseMate toAdd) {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" throw new DuplicateCourseMateException();","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" * Finds a courseMate in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" * The courseMate must already exist in the list. Throws an exception otherwise.","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" public List\u003cCourseMate\u003e findCourseMate(Name name) {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" ArrayList\u003cCourseMate\u003e arrayList \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" boolean foundCourseMate \u003d false;","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" for (CourseMate courseMate: internalList) {","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"Ryan-Reno"},"content":" if (courseMate.getName().toString().contains(name.toString())) {","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" arrayList.add(courseMate);","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" foundCourseMate \u003d true;","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" if (foundCourseMate) {","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":" return arrayList;","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" throw new CourseMateNotFoundException();","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":" * Replaces the courseMate {@code target} in the list with {@code editedCourseMate}.","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" * The courseMate identity of {@code editedCourseMate}","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" * must not be the same as another existing courseMate in the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate(CourseMate target, CourseMate editedCourseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" requireAllNonNull(target, editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" throw new CourseMateNotFoundException();","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":" if (!target.isSameCourseMate(editedCourseMate) \u0026\u0026 contains(editedCourseMate)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":" throw new DuplicateCourseMateException();","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"Ryan-Reno"},"content":" internalList.set(index, editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"Ryan-Reno"},"content":" * Removes the equivalent courseMate from the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"Ryan-Reno"},"content":" * The courseMate must exist in the list.","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":" public void remove(CourseMate toRemove) {","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"Ryan-Reno"},"content":" throw new CourseMateNotFoundException();","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMates(UniqueCourseMateList replacement) {","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"Ryan-Reno"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"Ryan-Reno"},"content":" * Replaces the contents of this list with {@code courseMates}.","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"Ryan-Reno"},"content":" * {@code courseMates} must not contain duplicate courseMates.","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMates(List\u003cCourseMate\u003e courseMates) {","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"Ryan-Reno"},"content":" requireAllNonNull(courseMates);","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"Ryan-Reno"},"content":" if (!courseMatesAreUnique(courseMates)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"Ryan-Reno"},"content":" throw new DuplicateCourseMateException();","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"Ryan-Reno"},"content":" internalList.setAll(courseMates);","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"Ryan-Reno"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"Ryan-Reno"},"content":" public ObservableList\u003cCourseMate\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"Ryan-Reno"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"Ryan-Reno"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"Ryan-Reno"},"content":" public Iterator\u003cCourseMate\u003e iterator() {","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"Ryan-Reno"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"Ryan-Reno"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"Ryan-Reno"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"Ryan-Reno"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"Ryan-Reno"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"Ryan-Reno"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"Ryan-Reno"},"content":" if (!(other instanceof UniqueCourseMateList)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"Ryan-Reno"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"Ryan-Reno"},"content":" UniqueCourseMateList otherUniqueCourseMateList \u003d (UniqueCourseMateList) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"Ryan-Reno"},"content":" return internalList.equals(otherUniqueCourseMateList.internalList);","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"Ryan-Reno"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"Ryan-Reno"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"Ryan-Reno"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"Ryan-Reno"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"Ryan-Reno"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"Ryan-Reno"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"Ryan-Reno"},"content":" * Returns true if {@code courseMates} contains only unique courseMates.","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"Ryan-Reno"},"content":" private boolean courseMatesAreUnique(List\u003cCourseMate\u003e courseMates) {","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"Ryan-Reno"},"content":" for (int i \u003d 0; i \u003c courseMates.size() - 1; i++) {","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"Ryan-Reno"},"content":" for (int j \u003d i + 1; j \u003c courseMates.size(); j++) {","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"Ryan-Reno"},"content":" if (courseMates.get(i).isSameCourseMate(courseMates.get(j))) {","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"Ryan-Reno"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"Ryan-Reno"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Ryan-Reno":166,"ivan24004":13}},{"path":"src/main/java/seedu/address/model/coursemate/exceptions/CourseMateNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate.exceptions;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":" * Signals that the operation is unable to find the specified courseMate.","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"public class CourseMateNotFoundException extends RuntimeException {","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":" * Basic empty constructor.","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":" public CourseMateNotFoundException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" * Constructor that builds an exception using a {@code label}.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" * This is the string used to find the CourseMate.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" public CourseMateNotFoundException(String label) {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" super(\"Could not find a CourseMate that matches: \" + label);","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"Ryan-Reno":5,"ivan24004":16}},{"path":"src/main/java/seedu/address/model/coursemate/exceptions/DuplicateCourseMateException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate.exceptions;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":" * Signals that the operation will result in duplicate Course Mates","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":" * (Course Mates are considered duplicates if they have the same identity).","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"public class DuplicateCourseMateException extends RuntimeException {","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":" public DuplicateCourseMateException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":" super(\"Operation would result in duplicate course mates\");","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Ryan-Reno":11}},{"path":"src/main/java/seedu/address/model/coursemate/exceptions/IllegalQueryableParameterException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.model.coursemate.exceptions;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":" * Signals that a QueryableCourseMate was used as the wrong type.","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"public class IllegalQueryableParameterException extends RuntimeException {","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":" public IllegalQueryableParameterException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":" super(\"The QueryableCourseMate is of another type than the accessed type\");","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":" public IllegalQueryableParameterException(String wrongType) {","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":" super(String.format(\"The QueryableCourseMate is of not of type: %s\", wrongType));","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"ivan24004":14}},{"path":"src/main/java/seedu/address/model/group/ContainsGroupKeywordPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":" * Tests that a {@code CourseMate}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":"public class ContainsGroupKeywordPredicate implements Predicate\u003cGroup\u003e {","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"content":" private final String keyword;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"yuhinarita"},"content":" public ContainsGroupKeywordPredicate(String keyword) {","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":" public boolean test(Group group) {","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":" return StringUtil.containsIgnoreCase(group.getName().fullName, this.keyword);","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"yuhinarita"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":" if (!(other instanceof ContainsGroupKeywordPredicate)) {","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"yuhinarita"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"yuhinarita"},"content":" ContainsGroupKeywordPredicate otherContainsKeywordsPredicate \u003d (ContainsGroupKeywordPredicate) other;","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"yuhinarita"},"content":" return keyword.contentEquals(otherContainsKeywordsPredicate.keyword);","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"yuhinarita"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"yuhinarita"},"content":" return new ToStringBuilder(this).add(\"keyword\", keyword).toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"yuhinarita":42}},{"path":"src/main/java/seedu/address/model/group/Group.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.UniqueCourseMateList;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":" * Represents a Group in the group list. All its members must be unique.","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"public class Group extends UniqueCourseMateList {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"yuhinarita"},"content":" private final Name name;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" * A basic constructor for a group that also initializes an iterable collection as a list of members.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" * @param name the name of the group","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" * @param members the Collection of members to initialize the group","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" public Group(Name name, Iterable\u003cCourseMate\u003e members) {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" super();","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" requireNonNull(members);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" members.forEach(this::add);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" * A basic constructor for a group.","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" * @param name the name of the group","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" public Group(Name name) {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" super();","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" public Name getName() {","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" return name;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"yuhinarita"},"content":" * Returns true if both groups have the same name.","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"yuhinarita"},"content":" * This defines a weaker notion of equality between two groups.","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"yuhinarita"},"content":" public boolean isSameGroup(Group otherGroup) {","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" return otherGroup.name.equals(name);","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" * Returns true if both groups have the same name and their members satisfy equality as well.","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"yuhinarita"},"content":" * This defines a stronger notion of equality between two groups.","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"yuhinarita"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" if (!(other instanceof Group)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"yuhinarita"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" Group otherGroup \u003d (Group) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" return otherGroup.name.equals(name) \u0026\u0026 super.equals(other);","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"ivan24004"},"content":" return \"Name: \" + name + \", \" + super.toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":" return name.hashCode() ^ super.hashCode();","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"yuhinarita":37,"ivan24004":44}},{"path":"src/main/java/seedu/address/model/group/UniqueGroupList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.exceptions.DuplicateGroupException;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.exceptions.GroupNotFoundException;","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":" * A list of groups that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":" * A group is considered unique by comparing using","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":" * {@code Group#isSameGroup(Group)}.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":" * As such, adding and updating of course mates uses Group#isSameGroup(Group)","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":" * for equality so as to ensure that the group being added or updated is","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"yuhinarita"},"content":" * unique in terms of identity in the UniqueGroupList.","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" * However, the removal of a group uses Group#equals(Object) so","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" * as to ensure that the group with exactly the same fields will be removed.","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"yuhinarita"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"yuhinarita"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"yuhinarita"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":" * @see Group#isSameGroup(Group)","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"yuhinarita"},"content":"public class UniqueGroupList implements Iterable\u003cGroup\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"yuhinarita"},"content":" private final ObservableList\u003cGroup\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"yuhinarita"},"content":" private final ObservableList\u003cGroup\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"yuhinarita"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"yuhinarita"},"content":" * Returns true if the list contains an equivalent group as the given argument.","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"yuhinarita"},"content":" public boolean contains(Group toCheck) {","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"yuhinarita"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"yuhinarita"},"content":" return internalList.stream().anyMatch(toCheck::isSameGroup);","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" * Finds a group with a given name. Throws an error if the group couldn\u0027t be found.","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" public Group findGroup(Name name) throws GroupNotFoundException {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" for (Group group: internalList) {","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" if (group.getName().equals(name)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" return group;","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" throw new GroupNotFoundException();","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"yuhinarita"},"content":" * Adds a group to the list.","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"yuhinarita"},"content":" * The group must not already exist in the list.","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"yuhinarita"},"content":" public void add(Group toAdd) {","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" throw new DuplicateGroupException();","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"yuhinarita"},"content":" * Replaces the group {@code target} in the list with {@code editedGroup}.","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"yuhinarita"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"yuhinarita"},"content":" * The group identity of {@code editedGroup}","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"yuhinarita"},"content":" * must not be the same as another existing group in the list.","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"yuhinarita"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" requireAllNonNull(target, editedGroup);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":" throw new GroupNotFoundException();","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":" if (!target.isSameGroup(editedGroup) \u0026\u0026 contains(editedGroup)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" throw new DuplicateGroupException();","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":" internalList.set(index, editedGroup);","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"yuhinarita"},"content":" * Removes the equivalent group from the list.","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"yuhinarita"},"content":" * The group must exist in the list.","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"yuhinarita"},"content":" public void remove(Group toRemove) {","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" throw new GroupNotFoundException();","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"yuhinarita"},"content":" public void setGroups(UniqueGroupList replacement) {","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"yuhinarita"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"yuhinarita"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"yuhinarita"},"content":" * Replaces the contents of this list with {@code groups}.","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"yuhinarita"},"content":" * {@code groups} must not contain duplicate groups.","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"yuhinarita"},"content":" public void setGroups(List\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"yuhinarita"},"content":" requireAllNonNull(groups);","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"yuhinarita"},"content":" if (!groupsAreUnique(groups)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"yuhinarita"},"content":" throw new DuplicateGroupException();","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"yuhinarita"},"content":" internalList.setAll(groups);","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"yuhinarita"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"yuhinarita"},"content":" public ObservableList\u003cGroup\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"yuhinarita"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"yuhinarita"},"content":" public Iterator\u003cGroup\u003e iterator() {","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"yuhinarita"},"content":" return internalList.iterator();","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"yuhinarita"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":135,"author":{"gitId":"ivan24004"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"ivan24004"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"ivan24004"},"content":" if (!(other instanceof UniqueGroupList)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"yuhinarita"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":141,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":142,"author":{"gitId":"ivan24004"},"content":" UniqueGroupList otherUniqueGroupList \u003d (UniqueGroupList) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"ivan24004"},"content":" return otherUniqueGroupList.internalList.equals(internalList);","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"yuhinarita"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"yuhinarita"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":149,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":150,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"yuhinarita"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":153,"author":{"gitId":"yuhinarita"},"content":" return internalList.toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":154,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":155,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":156,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"yuhinarita"},"content":" * Returns true if {@code groups} contains only unique groups.","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"yuhinarita"},"content":" private boolean groupsAreUnique(List\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-16"},{"lineNumber":160,"author":{"gitId":"yuhinarita"},"content":" for (int i \u003d 0; i \u003c groups.size() - 1; i++) {","lastModifiedDate":"2024-03-16"},{"lineNumber":161,"author":{"gitId":"yuhinarita"},"content":" for (int j \u003d i + 1; j \u003c groups.size(); j++) {","lastModifiedDate":"2024-03-16"},{"lineNumber":162,"author":{"gitId":"yuhinarita"},"content":" if (groups.get(i).isSameGroup(groups.get(j))) {","lastModifiedDate":"2024-03-16"},{"lineNumber":163,"author":{"gitId":"yuhinarita"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":164,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":165,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":166,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":167,"author":{"gitId":"yuhinarita"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":168,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":169,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"yuhinarita":125,"ivan24004":44}},{"path":"src/main/java/seedu/address/model/group/exceptions/DuplicateGroupException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.model.group.exceptions;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":" * Signals that the operation will result in duplicate Groups","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":" * (Groups are considered duplicates if they have the same identity).","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"public class DuplicateGroupException extends RuntimeException {","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":" public DuplicateGroupException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":" super(\"Operation would result in duplicate groups\");","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"yuhinarita":11}},{"path":"src/main/java/seedu/address/model/group/exceptions/GroupNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.model.group.exceptions;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":" * Signals that the operation is unable to find the specified group.","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"public class GroupNotFoundException extends RuntimeException {","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"yuhinarita":7}},{"path":"src/main/java/seedu/address/model/skill/Skill.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":" * Represents a Skill in the contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidSkillName(String)}","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"public class Skill {","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" public final String skillName;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":" * Constructs a {@code Skill}.","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" * @param skillName A valid skill name.","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" public Skill(String skillName) {","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(skillName);","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" this.skillName \u003d skillName;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" return true;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" if (!(other instanceof Skill)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" return false;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" Skill otherSkill \u003d (Skill) other;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" return skillName.equals(otherSkill.skillName);","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" return skillName.hashCode();","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" public String toString() {","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" return \u0027[\u0027 + skillName + \u0027]\u0027;","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Ryan-Reno":50}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" * Contains utility methods for populating {@code ContactList} with sample data.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public static CourseMate[] getSampleCourseMates() {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" return new CourseMate[] {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":" new CourseMate(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" getSkillSet(\"friends\")),","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" new CourseMate(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" getSkillSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" new CourseMate(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" getSkillSet(\"neighbours\")),","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" new CourseMate(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" getSkillSet(\"family\")),","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" new CourseMate(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" getSkillSet(\"classmates\")),","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" new CourseMate(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" getSkillSet(\"colleagues\"))","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" public static ReadOnlyContactList getSampleContactList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" ContactList sampleAb \u003d new ContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" for (CourseMate sampleCourseMate : getSampleCourseMates()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" sampleAb.addCourseMate(sampleCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" * Returns a skill set containing the list of strings given.","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" public static Set\u003cSkill\u003e getSkillSet(String... strings) {","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" .map(Skill::new)","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Ryan-Reno":29,"-":24}},{"path":"src/main/java/seedu/address/storage/ContactListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":" * Represents a storage for {@link ContactList}.","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"public interface ContactListStorage {","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":" Path getContactListFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" * Returns ContactList data as a {@link ReadOnlyContactList}.","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" Optional\u003cReadOnlyContactList\u003e readContactList() throws DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" * @see #getContactListFilePath()","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" Optional\u003cReadOnlyContactList\u003e readContactList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" * Saves the given {@link ReadOnlyContactList} to the storage.","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" * @param contactList cannot be null.","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" void saveContactList(ReadOnlyContactList contactList) throws IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" * @see #saveContactList(ReadOnlyContactList)","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" void saveContactList(ReadOnlyContactList contactList, Path filePath) throws IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Ryan-Reno":46}},{"path":"src/main/java/seedu/address/storage/GroupListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ReadOnlyGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":" * Represents a storage for {@link GroupList}.","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"public interface GroupListStorage {","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" Path getGroupListFilePath();","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" * Returns GroupList data as a {@link ReadOnlyGroupList}.","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" Optional\u003cReadOnlyGroupList\u003e readGroupList() throws DataLoadingException;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" * @see #getGroupListFilePath()","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" Optional\u003cReadOnlyGroupList\u003e readGroupList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" * Saves the given {@link ReadOnlyGroupList} to the storage.","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" * @param groupList cannot be null.","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" void saveGroupList(ReadOnlyGroupList groupList) throws IOException;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" * @see #saveGroupList(ReadOnlyGroupList)","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" void saveGroupList(ReadOnlyGroupList groupList, Path filePath) throws IOException;","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":44}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedCourseMate.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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" * Jackson-friendly version of {@link CourseMate}.","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"class JsonAdaptedCourseMate {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"CourseMate\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13"},{"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":"Ryan-Reno"},"content":" private final List\u003cJsonAdaptedSkill\u003e skills \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" * Constructs a {@code JsonAdaptedCourseMate} with the given courseMate details.","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" public JsonAdaptedCourseMate(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"yuhinarita"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" @JsonProperty(\"skills\") List\u003cJsonAdaptedSkill\u003e skills) {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" if (skills !\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" this.skills.addAll(skills);","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-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":"Ryan-Reno"},"content":" * Converts a given {@code CourseMate} into this class for Jackson use.","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" public JsonAdaptedCourseMate(CourseMate source) {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" skills.addAll(source.getSkills().stream()","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" .map(JsonAdaptedSkill::new)","lastModifiedDate":"2024-03-12"},{"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":"","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" * Converts this Jackson-friendly adapted courseMate object into the model\u0027s {@code CourseMate} object.","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted courseMate.","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMate toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" final List\u003cSkill\u003e courseMateSkills \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" for (JsonAdaptedSkill skill : skills) {","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" courseMateSkills.add(skill.toModelType());","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":" final Set\u003cSkill\u003e modelSkills \u003d new HashSet\u003c\u003e(courseMateSkills);","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"yuhinarita"},"content":" return new CourseMate(modelName, modelPhone, modelEmail, modelSkills);","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"yuhinarita":2,"Ryan-Reno":25,"-":70}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedGroup.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" * Jackson-friendly version of {@link Group}.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"public class JsonAdaptedGroup {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Group\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" private final String name;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" private final List\u003cJsonAdaptedCourseMate\u003e members \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" * Constructs a {@code JsonAdaptedGroup} with the given group details.","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" public JsonAdaptedGroup(@JsonProperty(\"name\") String name,","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" @JsonProperty(\"members\") List\u003cJsonAdaptedCourseMate\u003e members) {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" if (members !\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" this.members.addAll(members);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" * Converts a given {@code Group} into this class for Jackson use.","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" public JsonAdaptedGroup(Group source) {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" members.addAll(source.asUnmodifiableObservableList().stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" .map(JsonAdaptedCourseMate::new)","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" * Converts this Jackson-friendly adapted group object into the model\u0027s {@code Group} object.","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted group.","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" public Group toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" final List\u003cCourseMate\u003e modelMembers \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" for (JsonAdaptedCourseMate courseMate: this.members) {","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" modelMembers.add(courseMate.toModelType());","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" Name modelName \u003d new Name(name);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" return new Group(modelName, modelMembers);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":66}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedSkill.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" * Jackson-friendly version of {@link Skill}.","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"class JsonAdaptedSkill {","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":" private final String skillName;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" * Constructs a {@code JsonAdaptedSkill} with the given {@code skillName}.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":" @JsonCreator","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" public JsonAdaptedSkill(String skillName) {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":" this.skillName \u003d skillName;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" * Converts a given {@code Skill} into this class for Jackson use.","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" public JsonAdaptedSkill(Skill source) {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" skillName \u003d source.skillName;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" @JsonValue","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" public String getSkillName() {","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" return skillName;","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" * Converts this Jackson-friendly adapted skill object into the model\u0027s {@code Skill} object.","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" *","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted skill.","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" public Skill toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" return new Skill(skillName);","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Ryan-Reno":45}},{"path":"src/main/java/seedu/address/storage/JsonContactListStorage.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":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" * A class to access ContactList data stored as a json file on the hard disk.","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"public class JsonContactListStorage implements ContactListStorage {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonContactListStorage.class);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public JsonContactListStorage(Path filePath) {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public Path getContactListFilePath() {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public Optional\u003cReadOnlyContactList\u003e readContactList() throws DataLoadingException {","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" return readContactList(filePath);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Similar to {@link #readContactList()}.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public Optional\u003cReadOnlyContactList\u003e readContactList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(filePath);","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" Optional\u003cJsonSerializableContactList\u003e jsonContactList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" filePath, JsonSerializableContactList.class);","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" if (!jsonContactList.isPresent()) {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" return Optional.of(jsonContactList.get().toModelType());","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void saveContactList(ReadOnlyContactList contactList) throws IOException {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" saveContactList(contactList, filePath);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Similar to {@link #saveContactList(ReadOnlyContactList)}.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void saveContactList(ReadOnlyContactList contactList, Path filePath) throws IOException {","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(contactList);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" JsonUtil.saveJsonFile(new JsonSerializableContactList(contactList), filePath);","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":20,"-":60}},{"path":"src/main/java/seedu/address/storage/JsonGroupListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ReadOnlyGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" * A class to access GroupList data stored as a json file on the hard disk.","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"public class JsonGroupListStorage implements GroupListStorage {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonGroupListStorage.class);","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" private Path filePath;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" public JsonGroupListStorage(Path filePath) {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" public Path getGroupListFilePath() {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" return filePath;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" public Optional\u003cReadOnlyGroupList\u003e readGroupList() throws DataLoadingException {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" return readGroupList(filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" public Optional\u003cReadOnlyGroupList\u003e readGroupList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" Optional\u003cJsonSerializableGroupList\u003e jsonGroupList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" filePath, JsonSerializableGroupList.class);","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" if (jsonGroupList.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" return Optional.of(jsonGroupList.get().toModelType());","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" public void saveGroupList(ReadOnlyGroupList groupList) throws IOException {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" saveGroupList(groupList, filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" public void saveGroupList(ReadOnlyGroupList groupList, Path filePath) throws IOException {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" requireNonNull(groupList);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" JsonUtil.saveJsonFile(new JsonSerializableGroupList(groupList), filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":71}},{"path":"src/main/java/seedu/address/storage/JsonSerializableContactList.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":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" * An Immutable ContactList that is serializable to JSON format.","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"@JsonRootName(value \u003d \"contactlist\")","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"class JsonSerializableContactList {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" public static final String MESSAGE_DUPLICATE_COURSE_MATE \u003d \"Course mates list contains duplicate courseMate(s).\";","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" private final List\u003cJsonAdaptedCourseMate\u003e courseMates \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" * Constructs a {@code JsonSerializableContactList} with the given course mates.","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" public JsonSerializableContactList(@JsonProperty(\"courseMates\") List\u003cJsonAdaptedCourseMate\u003e courseMates) {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" this.courseMates.addAll(courseMates);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Converts a given {@code ReadOnlyContactList} into this class for Jackson use.","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableContactList}.","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" public JsonSerializableContactList(ReadOnlyContactList source) {","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" courseMates.addAll(source.getCourseMateList()","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" .stream()","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" .map(JsonAdaptedCourseMate::new)","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Converts this contact list into the model\u0027s {@code ContactList} object.","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" public ContactList toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" ContactList contactList \u003d new ContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" for (JsonAdaptedCourseMate jsonAdaptedCourseMate : courseMates) {","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMate \u003d jsonAdaptedCourseMate.toModelType();","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" if (contactList.hasCourseMate(courseMate)) {","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_COURSE_MATE);","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" contactList.addCourseMate(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" return contactList;","lastModifiedDate":"2024-03-12"},{"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"}],"authorContributionMap":{"Ryan-Reno":27,"-":36}},{"path":"src/main/java/seedu/address/storage/JsonSerializableGroupList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ReadOnlyGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" * An Immutable GroupList that is serializable to JSON format.","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"@JsonRootName(value \u003d \"groupList\")","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"public class JsonSerializableGroupList {","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" public static final String MESSAGE_DUPLICATE_GROUP \u003d \"Group list contains duplicate group(s).\";","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" private final List\u003cJsonAdaptedGroup\u003e groups \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" * Constructs a {@code JsonSerializableGroupList} with the given course mates.","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" @JsonCreator","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" public JsonSerializableGroupList(@JsonProperty(\"groups\") List\u003cJsonAdaptedGroup\u003e groups) {","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" this.groups.addAll(groups);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" * Converts a given {@code ReadOnlyGroupList} into this class for Jackson use.","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableGroupList}.","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public JsonSerializableGroupList(ReadOnlyGroupList source) {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" groups.addAll(source.getGroupList()","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" .stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" .map(JsonAdaptedGroup::new)","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" * Converts this contact list into the model\u0027s {@code GroupList} object.","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" public GroupList toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" GroupList groupList \u003d new GroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" for (JsonAdaptedGroup jsonAdaptedGroup : groups) {","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" Group group \u003d jsonAdaptedGroup.toModelType();","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" if (groupList.hasGroup(group)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_GROUP);","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" groupList.addGroup(group);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" return groupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":61}},{"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":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ReadOnlyGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-25"},{"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 Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"public interface Storage extends ContactListStorage, GroupListStorage, UserPrefsStorage {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" Path getContactListFilePath();","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" Optional\u003cReadOnlyContactList\u003e readContactList() throws DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" void saveContactList(ReadOnlyContactList contactList) throws IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" Path getGroupListFilePath();","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" Optional\u003cReadOnlyGroupList\u003e readGroupList() throws DataLoadingException;","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" void saveGroupList(ReadOnlyGroupList groupList) throws IOException;","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Ryan-Reno":4,"-":28,"ivan24004":10}},{"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":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ReadOnlyGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" * Manages storage of ContactList data in local storage.","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":" private ContactListStorage contactListStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" private GroupListStorage groupListStorage;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" * Creates a {@code StorageManager} with the given {@code ContactListStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" public StorageManager(ContactListStorage contactListStorage,","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" UserPrefsStorage userPrefsStorage,","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" GroupListStorage groupListStorage) {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" this.contactListStorage \u003d contactListStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" this.groupListStorage \u003d groupListStorage;","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ContactList 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-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" public Path getContactListFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" return contactListStorage.getContactListFilePath();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public Optional\u003cReadOnlyContactList\u003e readContactList() throws DataLoadingException {","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" return readContactList(contactListStorage.getContactListFilePath());","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public Optional\u003cReadOnlyContactList\u003e readContactList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" return contactListStorage.readContactList(filePath);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void saveContactList(ReadOnlyContactList contactList) throws IOException {","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":" saveContactList(contactList, contactListStorage.getContactListFilePath());","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void saveContactList(ReadOnlyContactList contactList, Path filePath) throws IOException {","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":" contactListStorage.saveContactList(contactList, filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d GroupList 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-20"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" public Path getGroupListFilePath() {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":" return groupListStorage.getGroupListFilePath();","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":" public Optional\u003cReadOnlyGroupList\u003e readGroupList() throws DataLoadingException {","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"ivan24004"},"content":" return readGroupList(groupListStorage.getGroupListFilePath());","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ivan24004"},"content":" public Optional\u003cReadOnlyGroupList\u003e readGroupList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":" return groupListStorage.readGroupList(filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ivan24004"},"content":" public void saveGroupList(ReadOnlyGroupList groupList) throws IOException {","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":" saveGroupList(groupList, groupListStorage.getGroupListFilePath());","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"ivan24004"},"content":" public void saveGroupList(ReadOnlyGroupList groupList, Path filePath) throws IOException {","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"ivan24004"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"ivan24004"},"content":" groupListStorage.saveGroupList(groupList, filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Ryan-Reno":16,"-":63,"ivan24004":33}},{"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":"benson1029"},"content":" private final CommandHistory commandHistory;","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":" private TextField commandTextField;","lastModifiedDate":"2016-09-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code CommandBox} with the given {@code CommandExecutor}.","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public CommandBox(CommandExecutor commandExecutor) {","lastModifiedDate":"2019-01-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.commandExecutor \u003d commandExecutor;","lastModifiedDate":"2018-12-09"},{"lineNumber":32,"author":{"gitId":"benson1029"},"content":" this.commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" // calls #setStyleToDefault() whenever there is a change to the text of the command box.","lastModifiedDate":"2017-06-28"},{"lineNumber":35,"author":{"gitId":"-"},"content":" commandTextField.textProperty().addListener((unused1, unused2, unused3) -\u003e setStyleToDefault());","lastModifiedDate":"2017-06-28"},{"lineNumber":36,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"benson1029"},"content":" commandTextField.addEventHandler(javafx.scene.input.KeyEvent.KEY_PRESSED, (key) -\u003e {","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":" switch (key.getCode()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":" case UP:","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"benson1029"},"content":" if (commandHistory.isCommandEdited(commandTextField.getText())) {","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"benson1029"},"content":" commandHistory.saveDraftCommand(commandTextField.getText());","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"benson1029"},"content":" commandTextField.setText(commandHistory.getPreviousCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"benson1029"},"content":" key.consume();","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"benson1029"},"content":" break;","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"benson1029"},"content":" case DOWN:","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"benson1029"},"content":" if (commandHistory.isCommandEdited(commandTextField.getText())) {","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"benson1029"},"content":" commandHistory.saveDraftCommand(commandTextField.getText());","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"benson1029"},"content":" commandTextField.setText(commandHistory.getNextCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"benson1029"},"content":" key.consume();","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"benson1029"},"content":" break;","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"benson1029"},"content":" default:","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"benson1029"},"content":" break;","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"benson1029"},"content":" });","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Handles the Enter button pressed event.","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" private void handleCommandEntered() {","lastModifiedDate":"2018-04-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String commandText \u003d commandTextField.getText();","lastModifiedDate":"2020-12-04"},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (commandText.equals(\"\")) {","lastModifiedDate":"2020-12-04"},{"lineNumber":66,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2020-12-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-12-04"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-12-04"},{"lineNumber":69,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-02-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" commandExecutor.execute(commandText);","lastModifiedDate":"2020-12-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" commandTextField.setText(\"\");","lastModifiedDate":"2016-09-14"},{"lineNumber":72,"author":{"gitId":"benson1029"},"content":" commandHistory.addCommand(commandText);","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2017-03-11"},{"lineNumber":74,"author":{"gitId":"-"},"content":" setStyleToIndicateCommandFailure();","lastModifiedDate":"2017-02-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets the command box style to use the default style.","lastModifiedDate":"2017-06-28"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":81,"author":{"gitId":"-"},"content":" private void setStyleToDefault() {","lastModifiedDate":"2017-06-28"},{"lineNumber":82,"author":{"gitId":"-"},"content":" commandTextField.getStyleClass().remove(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-02-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-28"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Sets the command box style to indicate a failed command.","lastModifiedDate":"2017-02-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":88,"author":{"gitId":"-"},"content":" private void setStyleToIndicateCommandFailure() {","lastModifiedDate":"2017-02-05"},{"lineNumber":89,"author":{"gitId":"-"},"content":" ObservableList\u003cString\u003e styleClass \u003d commandTextField.getStyleClass();","lastModifiedDate":"2017-03-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (styleClass.contains(ERROR_STYLE_CLASS)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":92,"author":{"gitId":"-"},"content":" return;","lastModifiedDate":"2017-03-08"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":95,"author":{"gitId":"-"},"content":" styleClass.add(ERROR_STYLE_CLASS);","lastModifiedDate":"2017-03-08"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Represents a function that can execute commands.","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" @FunctionalInterface","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" public interface CommandExecutor {","lastModifiedDate":"2018-12-09"},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2018-12-09"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"}],"authorContributionMap":{"benson1029":26,"-":85}},{"path":"src/main/java/seedu/address/ui/CommandHistory.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"benson1029"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"benson1029"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"benson1029"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"benson1029"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"benson1029"},"content":"/**","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"benson1029"},"content":" * Stores the history of commands entered by the user.","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"benson1029"},"content":"public class CommandHistory {","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"benson1029"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(CommandHistory.class);","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"benson1029"},"content":" private static final int MAX_SIZE \u003d 100;","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"benson1029"},"content":" private ArrayList\u003cString\u003e history \u003d new ArrayList\u003c\u003e(MAX_SIZE);","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"benson1029"},"content":" private int currentPointer \u003d 0;","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"benson1029"},"content":" * Creates a {@code CommandHistory} with an empty draft command.","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"benson1029"},"content":" public CommandHistory() {","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"benson1029"},"content":" history.add(\"\");","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"benson1029"},"content":" * Adds a command to the history.","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"benson1029"},"content":" public void addCommand(String command) {","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"benson1029"},"content":" if (history.size() \u003d\u003d MAX_SIZE) {","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"benson1029"},"content":" history.remove(0);","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"benson1029"},"content":" history.set(history.size() - 1, command);","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"benson1029"},"content":" history.add(\"\");","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"benson1029"},"content":" currentPointer \u003d history.size() - 1;","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"benson1029"},"content":" * Saves the draft command to the history.","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"benson1029"},"content":" public void saveDraftCommand(String draftCommand) {","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"benson1029"},"content":" assert(history.size() \u003e 0);","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"benson1029"},"content":" history.set(history.size() - 1, draftCommand);","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"benson1029"},"content":" currentPointer \u003d history.size() - 1;","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"benson1029"},"content":" * Returns the previous command from the history.","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"benson1029"},"content":" public String getPreviousCommand() {","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"benson1029"},"content":" logger.info(\"Finding previous command in history: currently at item \" + currentPointer);","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"benson1029"},"content":" assert(currentPointer \u003e\u003d 0 \u0026\u0026 currentPointer \u003c history.size());","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"benson1029"},"content":" // The currentPointer wraps around the history list.","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"benson1029"},"content":" currentPointer \u003d currentPointer - 1;","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"benson1029"},"content":" if (currentPointer \u003c 0) {","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"benson1029"},"content":" currentPointer \u003d history.size() - 1;","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"benson1029"},"content":" return history.get(currentPointer);","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"benson1029"},"content":" * Returns the next command from the history.","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"benson1029"},"content":" public String getNextCommand() {","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"benson1029"},"content":" logger.info(\"Finding next command in history: currently at item \" + currentPointer);","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"benson1029"},"content":" assert(currentPointer \u003e\u003d 0 \u0026\u0026 currentPointer \u003c history.size());","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"benson1029"},"content":" // For next command, we no longer wrap around the history list.","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"benson1029"},"content":" currentPointer \u003d currentPointer + 1;","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"benson1029"},"content":" if (currentPointer \u003e\u003d history.size()) {","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"benson1029"},"content":" currentPointer \u003d history.size() - 1;","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"benson1029"},"content":" return history.get(currentPointer);","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"benson1029"},"content":" * Checks whether the currently displayed command is edited.","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"benson1029"},"content":" public boolean isCommandEdited(String command) {","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"benson1029"},"content":" return history.get(currentPointer).compareTo(command) !\u003d 0;","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"benson1029":82}},{"path":"src/main/java/seedu/address/ui/CourseMateCard.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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":" * An UI component that displays information of a {@code CourseMate}.","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"public class CourseMateCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" private static final String FXML \u003d \"CourseMateListCard.fxml\";","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on ContactList level 4\u003c/a\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" public final CourseMate courseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" private FlowPane skills;","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" * Creates a {@code CourseMateCode} with the given {@code CourseMate} and index to display.","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMateCard(CourseMate courseMate, int displayedIndex) {","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" this.courseMate \u003d courseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"benson1029"},"content":" id.setText(\"#\" + displayedIndex + \" \");","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" name.setText(courseMate.getName().fullName);","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" phone.setText(courseMate.getPhone().value);","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" email.setText(courseMate.getEmail().value);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" courseMate.getSkills().stream()","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" .sorted(Comparator.comparing(skill -\u003e skill.skillName))","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" .forEach(skill -\u003e skills.getChildren().add(new Label(skill.skillName)));","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Ryan-Reno":16,"benson1029":1,"-":39}},{"path":"src/main/java/seedu/address/ui/CourseMateDetailPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"benson1029"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"benson1029"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"benson1029"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"benson1029"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"benson1029"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"benson1029"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"benson1029"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"benson1029"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"benson1029"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"benson1029"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"benson1029"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"benson1029"},"content":" * An UI component that displays detailed information of a {@code CourseMate}.","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"benson1029"},"content":"public class CourseMateDetailPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"benson1029"},"content":" private static final String FXML \u003d \"CourseMateDetailPanel.fxml\";","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"benson1029"},"content":" private final Logger logger \u003d LogsCenter.getLogger(CourseMateDetailPanel.class);","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"benson1029"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"benson1029"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"benson1029"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"benson1029"},"content":" private Label name;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"benson1029"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"benson1029"},"content":" private Label id;","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"benson1029"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"benson1029"},"content":" private Label phone;","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"benson1029"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"benson1029"},"content":" private Label email;","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"benson1029"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"benson1029"},"content":" private FlowPane skills;","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"benson1029"},"content":" * Creates a {@code CourseMateDetailPanel} with the given {@code CourseMate}.","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"benson1029"},"content":" public CourseMateDetailPanel(CourseMate courseMate) {","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":" super(FXML);","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":" loadCourseMate(courseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":42,"author":{"gitId":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"benson1029"},"content":" * Changes the {@code CourseMateDetailPanel} to display the given {@code CourseMate}.","lastModifiedDate":"2024-03-15"},{"lineNumber":44,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"benson1029"},"content":" public void loadCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"benson1029"},"content":" id.setText(\"## \");","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"benson1029"},"content":" name.setText(courseMate.getName().fullName);","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"benson1029"},"content":" phone.setText(courseMate.getPhone().value);","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"benson1029"},"content":" email.setText(courseMate.getEmail().value);","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"benson1029"},"content":" skills.getChildren().clear();","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"benson1029"},"content":" courseMate.getSkills().stream()","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"benson1029"},"content":" .sorted(Comparator.comparing(skill -\u003e skill.skillName))","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"benson1029"},"content":" .forEach(skill -\u003e skills.getChildren().add(new Label(skill.skillName)));","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"benson1029":55}},{"path":"src/main/java/seedu/address/ui/CourseMateListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"benson1029"},"content":"import javafx.event.EventHandler;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"benson1029"},"content":"import javafx.scene.input.KeyCode;","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"benson1029"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"benson1029"},"content":"import javafx.scene.input.MouseEvent;","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" * Panel containing the list of course mates.","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"public class CourseMateListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":" private static final String FXML \u003d \"CourseMateListPanel.fxml\";","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" private final Logger logger \u003d LogsCenter.getLogger(CourseMateListPanel.class);","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" @FXML","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" private ListView\u003cCourseMate\u003e courseMateListView;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"benson1029"},"content":" * Creates a {@code CourseMateListPanel} with the given {@code ObservableList}","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"benson1029"},"content":" * and {@code CourseMateDetailPanel}.","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"benson1029"},"content":" public CourseMateListPanel(ObservableList\u003cCourseMate\u003e courseMateList,","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"benson1029"},"content":" MainWindow mainWindow) {","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" super(FXML);","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" courseMateListView.setItems(courseMateList);","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" courseMateListView.setCellFactory(listView -\u003e new CourseMateListViewCell());","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"benson1029"},"content":" courseMateListView.setOnMouseClicked(","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"benson1029"},"content":" new CourseMateListClickHandler(courseMateListView, mainWindow));","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":" courseMateListView.setOnKeyPressed(","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":" new CourseMateListPressHandler(courseMateListView, mainWindow));","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code CourseMate} using a {@code CourseMateCard}.","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" class CourseMateListViewCell extends ListCell\u003cCourseMate\u003e {","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" @Override","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" protected void updateItem(CourseMate courseMate, boolean empty) {","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" super.updateItem(courseMate, empty);","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" if (empty || courseMate \u003d\u003d null) {","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" setText(null);","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" } else {","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" setGraphic(new CourseMateCard(courseMate, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"benson1029"},"content":"class CourseMateListClickHandler implements EventHandler\u003cMouseEvent\u003e {","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"benson1029"},"content":" private ListView\u003cCourseMate\u003e courseMateListView;","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"benson1029"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"benson1029"},"content":" public CourseMateListClickHandler(ListView\u003cCourseMate\u003e courseMateListView,","lastModifiedDate":"2024-03-15"},{"lineNumber":66,"author":{"gitId":"benson1029"},"content":" MainWindow mainWindow) {","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"benson1029"},"content":" this.courseMateListView \u003d courseMateListView;","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"benson1029"},"content":" this.mainWindow \u003d mainWindow;","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"benson1029"},"content":" public void handle(MouseEvent event) {","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"benson1029"},"content":" if (event.getClickCount() \u003d\u003d 2) {","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"benson1029"},"content":" CourseMate selectedCourseMate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":75,"author":{"gitId":"benson1029"},"content":" courseMateListView.getSelectionModel().getSelectedItem();","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"benson1029"},"content":" mainWindow.handleCourseMateListSelect(selectedCourseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":78,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":79,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"benson1029"},"content":"class CourseMateListPressHandler implements EventHandler\u003cKeyEvent\u003e {","lastModifiedDate":"2024-03-15"},{"lineNumber":82,"author":{"gitId":"benson1029"},"content":" private ListView\u003cCourseMate\u003e courseMateListView;","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"benson1029"},"content":" private MainWindow mainWindow;","lastModifiedDate":"2024-03-15"},{"lineNumber":84,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":85,"author":{"gitId":"benson1029"},"content":" public CourseMateListPressHandler(ListView\u003cCourseMate\u003e courseMateListView,","lastModifiedDate":"2024-03-15"},{"lineNumber":86,"author":{"gitId":"benson1029"},"content":" MainWindow mainWindow) {","lastModifiedDate":"2024-03-15"},{"lineNumber":87,"author":{"gitId":"benson1029"},"content":" this.courseMateListView \u003d courseMateListView;","lastModifiedDate":"2024-03-15"},{"lineNumber":88,"author":{"gitId":"benson1029"},"content":" this.mainWindow \u003d mainWindow;","lastModifiedDate":"2024-03-15"},{"lineNumber":89,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":90,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":91,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":92,"author":{"gitId":"benson1029"},"content":" public void handle(KeyEvent event) {","lastModifiedDate":"2024-03-15"},{"lineNumber":93,"author":{"gitId":"benson1029"},"content":" if (event.getCode().equals(KeyCode.ENTER)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"benson1029"},"content":" CourseMate selectedCourseMate \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"benson1029"},"content":" courseMateListView.getSelectionModel().getSelectedItem();","lastModifiedDate":"2024-03-15"},{"lineNumber":96,"author":{"gitId":"benson1029"},"content":" mainWindow.handleCourseMateListSelect(selectedCourseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":98,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":99,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"Ryan-Reno":47,"benson1029":52}},{"path":"src/main/java/seedu/address/ui/GroupListCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":" * An UI component that displays information of a {@code Group}.","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":"public class GroupListCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":" private static final String FXML \u003d \"GroupListCard.fxml\";","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":" private final Group group;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"yuhinarita"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":" private Label name;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" private FlowPane groupMembers;","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"yuhinarita"},"content":" * Creates a {@code GroupCard} with the given {@code Group}.","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"yuhinarita"},"content":" public GroupListCard(Group group) {","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"yuhinarita"},"content":" super(FXML);","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"yuhinarita"},"content":" this.group \u003d group;","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"yuhinarita"},"content":" name.setText(group.getName().fullName);","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" group.asUnmodifiableObservableList().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"yuhinarita"},"content":" .sorted(Comparator.comparing(courseMate -\u003e courseMate.getName().fullName))","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"yuhinarita"},"content":" .forEach(courseMate -\u003e groupMembers.getChildren().add(new Label(courseMate.getName().fullName)));","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"yuhinarita":38,"ivan24004":1}},{"path":"src/main/java/seedu/address/ui/GroupListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":" * Panel containing the list of groups.","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":"public class GroupListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":" private static final String FXML \u003d \"GroupListPanel.fxml\";","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":" private final Logger logger \u003d LogsCenter.getLogger(GroupListPanel.class);","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":" private ListView\u003cGroup\u003e groupListView;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" * Creates a {@code GroupListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" * @param groupList","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"yuhinarita"},"content":" public GroupListPanel(ObservableList\u003cGroup\u003e groupList) {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"yuhinarita"},"content":" super(FXML);","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":" groupListView.setItems(groupList);","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"yuhinarita"},"content":" groupListView.setCellFactory(listView -\u003e new GroupListViewCell());","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"yuhinarita"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Group} using a {@code GroupCard}.","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"yuhinarita"},"content":" class GroupListViewCell extends ListCell\u003cGroup\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"yuhinarita"},"content":" protected void updateItem(Group group, boolean empty) {","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"yuhinarita"},"content":" super.updateItem(group, empty);","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"yuhinarita"},"content":" if (empty || group \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"yuhinarita"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"yuhinarita"},"content":" setText(null);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"yuhinarita"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"yuhinarita"},"content":" setGraphic(new GroupListCard(group).getRoot());","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"yuhinarita":50}},{"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":"benson1029"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-15"},{"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":"Ryan-Reno"},"content":" private CourseMateListPanel courseMateListPanel;","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"benson1029"},"content":" private CourseMateDetailPanel courseMateDetailPanel;","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"yuhinarita"},"content":" private GroupListPanel groupListPanel;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":48,"author":{"gitId":"benson1029"},"content":" private StackPane courseMateListPanelPlaceholder;","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"benson1029"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"benson1029"},"content":" private StackPane courseMateDetailPanelPlaceholder;","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"yuhinarita"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"yuhinarita"},"content":" private StackPane groupListPanelPlaceholder;","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":75,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-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":"benson1029"},"content":" courseMateListPanel \u003d new CourseMateListPanel(logic.getFilteredCourseMateList(), this);","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"benson1029"},"content":" courseMateListPanelPlaceholder.getChildren().add(courseMateListPanel.getRoot());","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"benson1029"},"content":" courseMateDetailPanel \u003d new CourseMateDetailPanel(logic.getFilteredCourseMateList().get(0));","lastModifiedDate":"2024-03-15"},{"lineNumber":126,"author":{"gitId":"Ryan-Reno"},"content":" logic.setRecentlyProcessedCourseMate(logic.getFilteredCourseMateList().get(0));","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"benson1029"},"content":" courseMateDetailPanelPlaceholder.getChildren().add(courseMateDetailPanel.getRoot());","lastModifiedDate":"2024-03-15"},{"lineNumber":128,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"yuhinarita"},"content":" groupListPanel \u003d new GroupListPanel(logic.getFilteredGroupList());","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"yuhinarita"},"content":" groupListPanelPlaceholder.getChildren().add(groupListPanel.getRoot());","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09"},{"lineNumber":133,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":135,"author":{"gitId":"Ryan-Reno"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getContactListFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":138,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25"},{"lineNumber":139,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":147,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":148,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":150,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":166,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":173,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":174,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":175,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":182,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMateListPanel getCourseMateListPanel() {","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"Ryan-Reno"},"content":" return courseMateListPanel;","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":186,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":202,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"benson1029"},"content":" if (commandResult.isShowCourseMate()) {","lastModifiedDate":"2024-03-15"},{"lineNumber":206,"author":{"gitId":"benson1029"},"content":" courseMateDetailPanel.loadCourseMate(logic.getRecentlyProcessedCourseMate());","lastModifiedDate":"2024-03-15"},{"lineNumber":207,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":208,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":210,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":211,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":212,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":213,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":216,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":217,"author":{"gitId":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":218,"author":{"gitId":"benson1029"},"content":" * Handles selection change in the course mate list panel.","lastModifiedDate":"2024-03-15"},{"lineNumber":219,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":220,"author":{"gitId":"benson1029"},"content":" public void handleCourseMateListSelect(CourseMate courseMate) {","lastModifiedDate":"2024-03-15"},{"lineNumber":221,"author":{"gitId":"benson1029"},"content":" logic.setRecentlyProcessedCourseMate(courseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":222,"author":{"gitId":"benson1029"},"content":" courseMateDetailPanel.loadCourseMate(courseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":223,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"yuhinarita":6,"Ryan-Reno":5,"benson1029":23,"-":190}},{"path":"src/main/resources/view/CourseMateDetailPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"benson1029"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"benson1029"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"benson1029"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"benson1029"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"benson1029"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"benson1029"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"benson1029"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"benson1029"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"benson1029"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"benson1029"},"content":"\u003cHBox id\u003d\"cardPane\" styleClass\u003d\"list-cell\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"benson1029"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"benson1029"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"benson1029"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"300\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"benson1029"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"benson1029"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\" styleClass\u003d\"detail-card\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"benson1029"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"benson1029"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":20,"author":{"gitId":"benson1029"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":21,"author":{"gitId":"benson1029"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"benson1029"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"detail_big_label\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"benson1029"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":24,"author":{"gitId":"benson1029"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"benson1029"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"benson1029"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"benson1029"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"benson1029"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"detail_big_label\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"benson1029"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"benson1029"},"content":" \u003cFlowPane fx:id\u003d\"skills\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"benson1029"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"benson1029"},"content":" \u003cLabel styleClass\u003d\"detail_small_label\" text\u003d\"Phone number: \" minWidth\u003d\"180\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"benson1029"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"detail_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":34,"author":{"gitId":"benson1029"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"benson1029"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"benson1029"},"content":" \u003cLabel styleClass\u003d\"detail_small_label\" text\u003d\"Email address: \" minWidth\u003d\"180\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"benson1029"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"detail_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"benson1029"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"benson1029"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"benson1029":41}},{"path":"src/main/resources/view/CourseMateListCard.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":"benson1029"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"300\" /\u003e","lastModifiedDate":"2024-03-15"},{"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":"Ryan-Reno"},"content":" \u003cFlowPane fx:id\u003d\"skills\" /\u003e","lastModifiedDate":"2024-03-12"},{"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":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Ryan-Reno":1,"benson1029":1,"-":33}},{"path":"src/main/resources/view/CourseMateListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":" \u003cListView fx:id\u003d\"courseMateListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Ryan-Reno":1,"-":7}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08"},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02"},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15"},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02"},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10"},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08"},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02"},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02"},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02"},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02"},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02"},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02"},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"benson1029"},"content":".detail-card {","lastModifiedDate":"2024-03-15"},{"lineNumber":136,"author":{"gitId":"benson1029"},"content":" -fx-border-radius: 10 10 10 10;","lastModifiedDate":"2024-03-15"},{"lineNumber":137,"author":{"gitId":"benson1029"},"content":" -fx-border-color: white;","lastModifiedDate":"2024-03-15"},{"lineNumber":138,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-15"},{"lineNumber":139,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":140,"author":{"gitId":"benson1029"},"content":".detail_big_label {","lastModifiedDate":"2024-03-15"},{"lineNumber":141,"author":{"gitId":"benson1029"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"benson1029"},"content":" -fx-font-size: 24px;","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"benson1029"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-15"},{"lineNumber":145,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":146,"author":{"gitId":"benson1029"},"content":".detail_small_label {","lastModifiedDate":"2024-03-15"},{"lineNumber":147,"author":{"gitId":"benson1029"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2024-03-15"},{"lineNumber":148,"author":{"gitId":"benson1029"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2024-03-15"},{"lineNumber":149,"author":{"gitId":"benson1029"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-15"},{"lineNumber":150,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-15"},{"lineNumber":151,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09"},{"lineNumber":158,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09"},{"lineNumber":159,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":162,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02"},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":177,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08"},{"lineNumber":181,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":185,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":190,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","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 {","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":197,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":200,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08"},{"lineNumber":205,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","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-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15"},{"lineNumber":214,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","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":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-color: black;","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":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":231,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08"},{"lineNumber":235,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13"},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","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:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":251,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","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:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","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":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":274,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15"},{"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 \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":288,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":298,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":299,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":301,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":302,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02"},{"lineNumber":303,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":305,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":315,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":317,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":319,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":320,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":321,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":323,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":325,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":327,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":330,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":332,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":333,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":334,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":335,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":337,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":339,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":340,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02"},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02"},{"lineNumber":343,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13"},{"lineNumber":344,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":345,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02"},{"lineNumber":346,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":348,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15"},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15"},{"lineNumber":350,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":352,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02"},{"lineNumber":353,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02"},{"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":"benson1029"},"content":"#skills {","lastModifiedDate":"2024-03-21"},{"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":"benson1029"},"content":"#skills .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":363,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18"},{"lineNumber":364,"author":{"gitId":"benson1029"},"content":" -fx-background-color: #7c3176;","lastModifiedDate":"2024-03-21"},{"lineNumber":365,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18"},{"lineNumber":366,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":367,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18"},{"lineNumber":368,"author":{"gitId":"benson1029"},"content":" -fx-font-size: 12;","lastModifiedDate":"2024-03-21"},{"lineNumber":369,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-21"},{"lineNumber":370,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":371,"author":{"gitId":"benson1029"},"content":"#groupMembers {","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":"benson1029"},"content":"#groupMembers .label {","lastModifiedDate":"2024-03-21"},{"lineNumber":377,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-21"},{"lineNumber":378,"author":{"gitId":"benson1029"},"content":" -fx-background-color: #2a6b33;","lastModifiedDate":"2024-03-21"},{"lineNumber":379,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-03-21"},{"lineNumber":380,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-03-21"},{"lineNumber":381,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-03-21"},{"lineNumber":382,"author":{"gitId":"benson1029"},"content":" -fx-font-size: 14;","lastModifiedDate":"2024-03-21"},{"lineNumber":383,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"}],"authorContributionMap":{"benson1029":27,"-":356}},{"path":"src/main/resources/view/GroupListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"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-16"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"yuhinarita"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"300\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"yuhinarita"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":" \u003cFlowPane fx:id\u003d\"groupMembers\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"yuhinarita"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"yuhinarita":27}},{"path":"src/main/resources/view/GroupListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":" \u003cListView fx:id\u003d\"groupListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"yuhinarita":1,"-":7}},{"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":"benson1029"},"content":"\u003c?import javafx.scene.control.Label?\u003e \u003c!-- temporary --\u003e","lastModifiedDate":"2024-03-15"},{"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":"benson1029"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"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":"benson1029"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":52,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"benson1029"},"content":" \u003cVBox fx:id\u003d\"courseMateList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"595\" prefWidth\u003d\"595\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-15"},{"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":"benson1029"},"content":" \u003cStackPane fx:id\u003d\"courseMateListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-15"},{"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":"benson1029"},"content":" \u003cVBox styleClass\u003d\"pane-with-border\" minWidth\u003d\"595\" prefWidth\u003d\"595\"\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"benson1029"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"benson1029"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"benson1029"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"benson1029"},"content":" \u003cStackPane fx:id\u003d\"courseMateDetailPanelPlaceholder\"/\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"yuhinarita"},"content":" \u003cStackPane fx:id\u003d\"groupListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"benson1029"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":67,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"benson1029"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":71,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"yuhinarita":1,"benson1029":14,"-":59}},{"path":"src/test/java/seedu/address/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.commons.core.index;","lastModifiedDate":"2017-05-24"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" final Index fifthCourseMateIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(fifthCourseMateIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(fifthCourseMateIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(fifthCourseMateIndex.equals(fifthCourseMateIndex));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(fifthCourseMateIndex.equals(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(fifthCourseMateIndex.equals(5.0f));","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(fifthCourseMateIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Ryan-Reno":7,"-":55}},{"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":"Ryan-Reno"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.AMY;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-18"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.storage.JsonContactListStorage;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":"import seedu.address.storage.JsonGroupListStorage;","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" JsonContactListStorage contactListStorage \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" new JsonContactListStorage(temporaryFolder.resolve(\"contactList.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" JsonGroupListStorage groupListStorage \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" new JsonGroupListStorage(temporaryFolder.resolve(\"groupList.json\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" StorageManager storage \u003d new StorageManager(contactListStorage, userPrefsStorage, groupListStorage);","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":" String deleteCommand \u003d \"delete #9\";","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20"},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09"},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" public void getFilteredCourseMateList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredCourseMateList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":94,"author":{"gitId":"yuhinarita"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":95,"author":{"gitId":"yuhinarita"},"content":" public void getFilteredGroupList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":96,"author":{"gitId":"yuhinarita"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredGroupList().remove(0));","lastModifiedDate":"2024-03-22"},{"lineNumber":97,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":98,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":99,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"benson1029"},"content":" public void getRecentlyProcessedCourseMate_newLogicManager_returnsNull() {","lastModifiedDate":"2024-03-15"},{"lineNumber":101,"author":{"gitId":"benson1029"},"content":" assertEquals(null, logic.getRecentlyProcessedCourseMate());","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":103,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":104,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":105,"author":{"gitId":"benson1029"},"content":" public void getRecentlyProcessedCourseMate_setToAmy_returnsAmy() {","lastModifiedDate":"2024-03-15"},{"lineNumber":106,"author":{"gitId":"benson1029"},"content":" model.setRecentlyProcessedCourseMate(AMY);","lastModifiedDate":"2024-03-15"},{"lineNumber":107,"author":{"gitId":"benson1029"},"content":" assertEquals(AMY, logic.getRecentlyProcessedCourseMate());","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":110,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":111,"author":{"gitId":"benson1029"},"content":" public void setRecentlyProcessedCourseMate_setToAmy_returnsAmy() {","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"benson1029"},"content":" logic.setRecentlyProcessedCourseMate(AMY);","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"benson1029"},"content":" assertEquals(AMY, logic.getRecentlyProcessedCourseMate());","lastModifiedDate":"2024-03-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":123,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":132,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11"},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14"},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11"},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14"},{"lineNumber":152,"author":{"gitId":"ivan24004"},"content":" Model expectedModel \u003d new ModelManager(model.getContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":157,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":163,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14"},{"lineNumber":164,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19"},{"lineNumber":169,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":170,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13"},{"lineNumber":171,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13"},{"lineNumber":172,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13"},{"lineNumber":173,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13"},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":175,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13"},{"lineNumber":176,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13"},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":178,"author":{"gitId":"Ryan-Reno"},"content":" // Inject LogicManager with an ContactListStorage that throws the IOException e when saving","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"Ryan-Reno"},"content":" JsonContactListStorage contactListStorage \u003d new JsonContactListStorage(prefPath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"Ryan-Reno"},"content":" public void saveContactList(ReadOnlyContactList contactList, Path filePath)","lastModifiedDate":"2024-03-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13"},{"lineNumber":183,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13"},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":188,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":189,"author":{"gitId":"ivan24004"},"content":" JsonGroupListStorage groupListStorage \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"ivan24004"},"content":" new JsonGroupListStorage(temporaryFolder.resolve(\"ExceptionGroupList.json\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"ivan24004"},"content":" StorageManager storage \u003d new StorageManager(contactListStorage, userPrefsStorage, groupListStorage);","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":193,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13"},{"lineNumber":195,"author":{"gitId":"Ryan-Reno"},"content":" // Triggers the saveContactList method by executing an add command","lastModifiedDate":"2024-03-12"},{"lineNumber":196,"author":{"gitId":"tzaph"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + \" \" + VALID_NAME_AMY + \" \" + PHONE_DESC_AMY","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"yuhinarita"},"content":" + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-15"},{"lineNumber":198,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate expectedCourseMate \u003d new CourseMateBuilder(AMY).withSkills().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":199,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":200,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.addCourseMate(expectedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"yuhinarita":6,"Ryan-Reno":18,"benson1029":15,"tzaph":2,"-":151,"ivan24004":11}},{"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":"benson1029"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertRecentlyProcessedCourseMateEdited;","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"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-15"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_newCourseMate_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate validCourseMate \u003d new CourseMateBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" Model expectedModel \u003d new ModelManager(model.getContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.addCourseMate(validCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandSuccess(new AddCommand(validCourseMate), model,","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":" AddCommand.MESSAGE_SUCCESS, expectedModel, true);","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, validCourseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_duplicateCourseMate_throwsCommandException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMateInList \u003d model.getContactList().getCourseMateList().get(0);","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandFailure(new AddCommand(courseMateInList), model,","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" AddCommand.MESSAGE_DUPLICATE_COURSE_MATE);","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-15"},{"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":{"Ryan-Reno":11,"benson1029":4,"-":32,"ivan24004":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":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.ALICE;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"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.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ReadOnlyGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.exceptions.GroupNotFoundException;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void constructor_nullCourseMate_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void execute_courseMateAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" ModelStubAcceptingCourseMateAdded modelStub \u003d new ModelStubAcceptingCourseMateAdded();","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate validCourseMate \u003d new CourseMateBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" CommandResult commandResult \u003d new AddCommand(validCourseMate).execute(modelStub);","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":47,"author":{"gitId":"benson1029"},"content":" assertEquals(AddCommand.MESSAGE_SUCCESS, commandResult.getFeedbackToUser());","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(Arrays.asList(validCourseMate), modelStub.courseMatesAdded);","lastModifiedDate":"2024-03-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":"Ryan-Reno"},"content":" public void execute_duplicateCourseMate_throwsCommandException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate validCourseMate \u003d new CourseMateBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" AddCommand addCommand \u003d new AddCommand(validCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" ModelStub modelStub \u003d new ModelStubWithCourseMate(validCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" AddCommand.MESSAGE_DUPLICATE_COURSE_MATE, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" CourseMate alice \u003d new CourseMateBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate bob \u003d new CourseMateBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" // different courseMate -\u003e returns false","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public Path getContactListFilePath() {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void setContactListFilePath(Path contactListFilePath) {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void addCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void setContactList(ReadOnlyContactList contactList) {","lastModifiedDate":"2024-03-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":"2017-05-12"},{"lineNumber":137,"author":{"gitId":"Ryan-Reno"},"content":" public ReadOnlyContactList getContactList() {","lastModifiedDate":"2024-03-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":"Ryan-Reno"},"content":" public boolean hasCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void deleteCourseMate(CourseMate target) {","lastModifiedDate":"2024-03-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":"2017-05-12"},{"lineNumber":152,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate(CourseMate target, CourseMate editedCourseMate) {","lastModifiedDate":"2024-03-12"},{"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":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"ivan24004"},"content":" * Returns the user prefs\u0027 contact list file path.","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"ivan24004"},"content":" public Path getGroupListFilePath() {","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"ivan24004"},"content":" * Sets the user prefs\u0027 contact list file path.","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"ivan24004"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"ivan24004"},"content":" * @param groupListFilePath","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"ivan24004"},"content":" public void setGroupListFilePath(Path groupListFilePath) {","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"ivan24004"},"content":" * Replaces contact list data with the data in {@code groupList}.","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"ivan24004"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"ivan24004"},"content":" * @param groupList","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"ivan24004"},"content":" public void setGroupList(ReadOnlyGroupList groupList) {","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"ivan24004"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":182,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":183,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":184,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":185,"author":{"gitId":"ivan24004"},"content":" * Returns the GroupList","lastModifiedDate":"2024-03-20"},{"lineNumber":186,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":187,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":188,"author":{"gitId":"ivan24004"},"content":" public ReadOnlyGroupList getGroupList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":189,"author":{"gitId":"ivan24004"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-20"},{"lineNumber":190,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":192,"author":{"gitId":"Ryan-Reno"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"Ryan-Reno"},"content":" public List\u003cCourseMate\u003e findCourseMate(QueryableCourseMate queryableCourseMate) {","lastModifiedDate":"2024-03-21"},{"lineNumber":194,"author":{"gitId":"ivan24004"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":195,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":196,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"ivan24004"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-03-18"},{"lineNumber":199,"author":{"gitId":"ivan24004"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":200,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":201,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":202,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"ivan24004"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-03-18"},{"lineNumber":204,"author":{"gitId":"ivan24004"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":205,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":206,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":207,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":208,"author":{"gitId":"ivan24004"},"content":" public void deleteGroup(Group target) {","lastModifiedDate":"2024-03-18"},{"lineNumber":209,"author":{"gitId":"ivan24004"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":210,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"ivan24004"},"content":" public Group findGroup(Name name) throws GroupNotFoundException {","lastModifiedDate":"2024-03-18"},{"lineNumber":214,"author":{"gitId":"ivan24004"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":215,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":216,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"ivan24004"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":218,"author":{"gitId":"ivan24004"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"ivan24004"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-18"},{"lineNumber":220,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":221,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":222,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":223,"author":{"gitId":"Ryan-Reno"},"content":" public ObservableList\u003cCourseMate\u003e getFilteredCourseMateList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":224,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":227,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":228,"author":{"gitId":"Ryan-Reno"},"content":" public void updateFilteredCourseMateList(Predicate\u003cCourseMate\u003e predicate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":229,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":231,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":232,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":233,"author":{"gitId":"yuhinarita"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-03-16"},{"lineNumber":234,"author":{"gitId":"yuhinarita"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":235,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":236,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":237,"author":{"gitId":"yuhinarita"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":238,"author":{"gitId":"yuhinarita"},"content":" public void updateFilteredGroupList(Predicate\u003cGroup\u003e predicate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":239,"author":{"gitId":"yuhinarita"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-16"},{"lineNumber":240,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":241,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":242,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":243,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":244,"author":{"gitId":"benson1029"},"content":" public CourseMate getRecentlyProcessedCourseMate() {","lastModifiedDate":"2024-03-15"},{"lineNumber":245,"author":{"gitId":"benson1029"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-15"},{"lineNumber":246,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":247,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":248,"author":{"gitId":"benson1029"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":249,"author":{"gitId":"benson1029"},"content":" public void setRecentlyProcessedCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-15"},{"lineNumber":250,"author":{"gitId":"benson1029"},"content":" // does nothing","lastModifiedDate":"2024-03-15"},{"lineNumber":251,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":254,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":255,"author":{"gitId":"Ryan-Reno"},"content":" * A Model stub that contains a single courseMate.","lastModifiedDate":"2024-03-12"},{"lineNumber":256,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":257,"author":{"gitId":"Ryan-Reno"},"content":" private class ModelStubWithCourseMate extends ModelStub {","lastModifiedDate":"2024-03-12"},{"lineNumber":258,"author":{"gitId":"Ryan-Reno"},"content":" private final CourseMate courseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":260,"author":{"gitId":"Ryan-Reno"},"content":" ModelStubWithCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":261,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":262,"author":{"gitId":"Ryan-Reno"},"content":" this.courseMate \u003d courseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":263,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":265,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":266,"author":{"gitId":"Ryan-Reno"},"content":" public boolean hasCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":267,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":268,"author":{"gitId":"Ryan-Reno"},"content":" return this.courseMate.isSameCourseMate(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":270,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":272,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":273,"author":{"gitId":"Ryan-Reno"},"content":" * A Model stub that always accept the courseMate being added.","lastModifiedDate":"2024-03-12"},{"lineNumber":274,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":275,"author":{"gitId":"Ryan-Reno"},"content":" private class ModelStubAcceptingCourseMateAdded extends ModelStub {","lastModifiedDate":"2024-03-12"},{"lineNumber":276,"author":{"gitId":"Ryan-Reno"},"content":" final ArrayList\u003cCourseMate\u003e courseMatesAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-12"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":278,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":279,"author":{"gitId":"Ryan-Reno"},"content":" public boolean hasCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":280,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":281,"author":{"gitId":"Ryan-Reno"},"content":" return courseMatesAdded.stream().anyMatch(courseMate::isSameCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":284,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":285,"author":{"gitId":"Ryan-Reno"},"content":" public void addCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":286,"author":{"gitId":"Ryan-Reno"},"content":" requireNonNull(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":287,"author":{"gitId":"Ryan-Reno"},"content":" courseMatesAdded.add(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":288,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":290,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":291,"author":{"gitId":"Ryan-Reno"},"content":" public ReadOnlyContactList getContactList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":292,"author":{"gitId":"Ryan-Reno"},"content":" return new ContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":294,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"yuhinarita":12,"Ryan-Reno":53,"benson1029":11,"-":159,"ivan24004":61}},{"path":"src/test/java/seedu/address/logic/commands/AddMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_NAME_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_QUERYABLE_SET_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_QUERYABLE_SET_2;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_UNQUERYABLE_SET_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.getTypicalGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" * {@code AddMemberCommand}.","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"public class AddMemberCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" private final Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), getTypicalGroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" private final Model emptyGroupListModel \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" public void constructor_nullParameters_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" new AddMemberCommand(null, null));","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public void execute_nullParameters_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" AddMemberCommand addMemberCommand \u003d new AddMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" addMemberCommand.execute(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" public void execute_groupNotInList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" AddMemberCommand addMemberCommand \u003d new AddMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" assertThrows(CommandException.class, () -\u003e addMemberCommand.execute(emptyGroupListModel));","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" public void execute_groupInListMembersNotInList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" AddMemberCommand addMemberCommand \u003d new AddMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_UNQUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" assertThrows(CommandException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" addMemberCommand.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" public void execute_groupInListMembersNotInGroup_runsNormally() {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" AddMemberCommand addMemberCommand \u003d new AddMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_2);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" assertTrue(model.hasGroup(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e addMemberCommand.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e new DeleteMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_2));","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" public void execute_groupInListMemberInGroup_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" AddMemberCommand addMemberCommand \u003d new AddMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" assertThrows(CommandException.class, () -\u003e addMemberCommand.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":71}},{"path":"src/test/java/seedu/address/logic/commands/AddSkillCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_ADDSKILL_CPP_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_ADDSKILL_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertRecentlyProcessedCourseMateEdited;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showAllCourseMates;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showCourseMateAtIndex;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand.AddSkillDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.AddSkillDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" * Contains integration tests (interaction with the Model) and unit tests for AddSkillCommand.","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":"public class AddSkillCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":" private Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" public void execute_singleSkillUnfilteredList_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":" Index indexLastCourseMate \u003d Index.fromOneBased(model.getFilteredCourseMateList().size());","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" CourseMate lastCourseMate \u003d model.getFilteredCourseMateList().get(indexLastCourseMate.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" CourseMateBuilder courseMateInList \u003d new CourseMateBuilder(lastCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" CourseMate editedCourseMate \u003d courseMateInList.withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor descriptor \u003d new AddSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" AddSkillCommand addSkillCommand \u003d new AddSkillCommand(new QueryableCourseMate(indexLastCourseMate), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" String expectedMessage \u003d AddSkillCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"tzaph"},"content":" expectedModel.setCourseMate(lastCourseMate, editedCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"tzaph"},"content":" assertCommandSuccess(addSkillCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, editedCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" CourseMate courseMateInFilteredList \u003d model.getFilteredCourseMateList()","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":" .get(INDEX_FIRST_COURSE_MATE.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":" CourseMate editedCourseMate \u003d new CourseMateBuilder(courseMateInFilteredList)","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":" AddSkillCommand addSkillCommand \u003d new AddSkillCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE),","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":" new AddSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build());","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" String expectedMessage \u003d AddSkillCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"tzaph"},"content":" expectedModel.setCourseMate(model.getFilteredCourseMateList().get(0), editedCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"tzaph"},"content":" assertCommandSuccess(addSkillCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, editedCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_similarCourseMates() {","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" showAllCourseMates(model, new Name(\"a\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" AddSkillCommand addSkillCommand \u003d new AddSkillCommand(new QueryableCourseMate(new Name(\"a\")),","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":" new AddSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build());","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" String expectedMessage \u003d String.format(Messages.MESSAGE_SIMILAR_COURSE_MATE_NAME, 4);","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(\"a\");","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandSuccess(addSkillCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"tzaph"},"content":" public void execute_invalidCourseMateIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"tzaph"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredCourseMateList().size() + 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor descriptor \u003d new AddSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"tzaph"},"content":" AddSkillCommand addSkillCommand \u003d new AddSkillCommand(new QueryableCourseMate(outOfBoundIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"tzaph"},"content":" assertCommandFailure(addSkillCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"tzaph"},"content":" public void execute_invalidCourseMateNameUnfilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"tzaph"},"content":" Name name \u003d new Name(\"Bob\");","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor descriptor \u003d new AddSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"tzaph"},"content":" AddSkillCommand addSkillCommand \u003d new AddSkillCommand(new QueryableCourseMate(name), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"tzaph"},"content":" assertCommandFailure(addSkillCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"tzaph"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"tzaph"},"content":" * but smaller than size of contact list","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"tzaph"},"content":" public void execute_invalidCourseMateIndexFilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"tzaph"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"tzaph"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"tzaph"},"content":" // ensures that outOfBoundIndex is still in bounds of contact list","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"tzaph"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getContactList().getCourseMateList().size());","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"tzaph"},"content":" AddSkillCommand addSkillCommand \u003d new AddSkillCommand(new QueryableCourseMate(outOfBoundIndex),","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"tzaph"},"content":" new AddSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build());","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"tzaph"},"content":" assertCommandFailure(addSkillCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"tzaph"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"tzaph"},"content":" final AddSkillCommand standardCommand \u003d new AddSkillCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"tzaph"},"content":" new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), DESC_ADDSKILL_JAVA);","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"tzaph"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"tzaph"},"content":" AddSkillCommand.AddSkillDescriptor copyDescriptor \u003d new AddSkillDescriptor(DESC_ADDSKILL_JAVA);","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"tzaph"},"content":" AddSkillCommand commandWithSameValues \u003d new AddSkillCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"tzaph"},"content":" new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), copyDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"tzaph"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"tzaph"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"tzaph"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"tzaph"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"tzaph"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"tzaph"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"tzaph"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"tzaph"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"tzaph"},"content":" assertFalse(standardCommand.equals(new AddSkillCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"tzaph"},"content":" new QueryableCourseMate(INDEX_SECOND_COURSE_MATE), DESC_ADDSKILL_JAVA)));","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"tzaph"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"tzaph"},"content":" assertFalse(standardCommand.equals(","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"tzaph"},"content":" new AddSkillCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), DESC_ADDSKILL_CPP_CSHARP)));","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"tzaph"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"tzaph"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor addSkillDescriptor \u003d new AddSkillDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"tzaph"},"content":" AddSkillCommand addSkillCommand \u003d new AddSkillCommand(new QueryableCourseMate(index), addSkillDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"tzaph"},"content":" String expected \u003d AddSkillCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"tzaph"},"content":" + \"{index\u003d\" + index + \", addSkillDescriptor\u003d\"","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"tzaph"},"content":" + addSkillDescriptor + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"tzaph"},"content":" assertEquals(expected, addSkillCommand.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Ryan-Reno":20,"tzaph":160}},{"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":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_emptyContactList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel, false);","lastModifiedDate":"2024-03-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_nonEmptyContactList_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" Model expectedModel \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.setContactList(new ContactList());","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel, false);","lastModifiedDate":"2024-03-15"},{"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":{"Ryan-Reno":5,"benson1029":2,"-":23,"ivan24004":3}},{"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":"-"},"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":"benson1029"},"content":" + \", exit\u003d\" + commandResult.isExit() + \", showCourseMate\u003d\" + commandResult.isShowCourseMate() + \"}\";","lastModifiedDate":"2024-03-15"},{"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":{"benson1029":1,"-":62}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"benson1029"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.AddSkillDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.DeleteSkillDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.EditCourseMateDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"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":"tzaph"},"content":" public static final String VALID_SKILL_CPP \u003d \"C++\";","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" public static final String VALID_SKILL_JAVA \u003d \"Java\";","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":" public static final String VALID_SKILL_CSHARP \u003d \"C#\";","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" public static final String INVALID_NAME_AMPERSAND \u003d \"James\u0026\";","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" public static final String INVALID_PHONE_ALPHABET \u003d \"911a\";","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" public static final String INVALID_EMAIL_MISSING_AT \u003d \"bob!yahoo\";","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + \" \" + VALID_NAME_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + \" \" + VALID_NAME_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + \" \" + VALID_PHONE_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + \" \" + VALID_PHONE_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + \" \" + VALID_EMAIL_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + \" \" + VALID_EMAIL_BOB;","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" public static final String SKILL_DESC_CPP \u003d \" \" + PREFIX_SKILL + \" \" + VALID_SKILL_CPP;","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":" public static final String SKILL_DESC_CSHARP \u003d \" \" + PREFIX_SKILL + \" \" + VALID_SKILL_CSHARP;","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" public static final String SKILL_DESC_JAVA \u003d \" \" + PREFIX_SKILL + \" \" + VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \" \" + INVALID_NAME_AMPERSAND;","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \" \" + INVALID_PHONE_ALPHABET;","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"tzaph"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \" \" + INVALID_EMAIL_MISSING_AT;","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" public static final EditCommand.EditCourseMateDescriptor DESC_AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" public static final EditCommand.EditCourseMateDescriptor DESC_BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" public static final AddSkillCommand.AddSkillDescriptor DESC_ADDSKILL_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" public static final AddSkillCommand.AddSkillDescriptor DESC_ADDSKILL_CPP_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" public static final DeleteSkillCommand.DeleteSkillDescriptor DESC_DELSKILL_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":" public static final DeleteSkillCommand.DeleteSkillDescriptor DESC_DELSKILL_CPP_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"Ryan-Reno"},"content":" DESC_AMY \u003d new EditCourseMateDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"yuhinarita"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":" DESC_BOB \u003d new EditCourseMateDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"yuhinarita"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-15"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_JAVA, VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":" DESC_ADDSKILL_JAVA \u003d new AddSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"tzaph"},"content":" DESC_ADDSKILL_CPP_CSHARP \u003d new AddSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_CPP).withSkills(VALID_SKILL_CSHARP).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"tzaph"},"content":" DESC_DELSKILL_JAVA \u003d new DeleteSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"tzaph"},"content":" DESC_DELSKILL_CPP_CSHARP \u003d new DeleteSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_CPP).withSkills(VALID_SKILL_CSHARP).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"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":"benson1029"},"content":" Model expectedModel, boolean showCourseMate) {","lastModifiedDate":"2024-03-15"},{"lineNumber":109,"author":{"gitId":"benson1029"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage, false, false, showCourseMate);","lastModifiedDate":"2024-03-15"},{"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":"benson1029"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":114,"author":{"gitId":"benson1029"},"content":" * Confirms that the {@code recentlyProcessedCourseMate} in the model is edited with {@code editedCourseMate}.","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"benson1029"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"benson1029"},"content":" public static void assertRecentlyProcessedCourseMateEdited(Model model, CourseMate editedCourseMate) {","lastModifiedDate":"2024-03-15"},{"lineNumber":117,"author":{"gitId":"benson1029"},"content":" assertEquals(editedCourseMate, model.getRecentlyProcessedCourseMate());","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"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":"Ryan-Reno"},"content":" * - the contact list, filtered courseMate list and selected courseMate in {@code actualModel} remain unchanged","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" ContactList expectedContactList \u003d new ContactList(actualModel.getContactList());","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredCourseMateList());","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" assertEquals(expectedContactList, actualModel.getContactList());","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredCourseMateList());","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"author":{"gitId":"Ryan-Reno"},"content":" * Updates {@code model}\u0027s filtered list to show only the courseMate at the given {@code targetIndex} in the","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"Ryan-Reno"},"content":" * {@code model}\u0027s contact list.","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":140,"author":{"gitId":"Ryan-Reno"},"content":" public static void showCourseMateAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredCourseMateList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":143,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMate \u003d model.getFilteredCourseMateList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"Ryan-Reno"},"content":" final String[] splitName \u003d courseMate.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"benson1029"},"content":" model.updateFilteredCourseMateList(new ContainsKeywordPredicate(splitName[0]));","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":147,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(1, model.getFilteredCourseMateList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":150,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"Ryan-Reno"},"content":" * Updates {@code model}\u0027s filtered list to show all coursemates with matching {@code targetName} in the","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"Ryan-Reno"},"content":" * {@code model}\u0027s contact list.","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"Ryan-Reno"},"content":" public static void showAllCourseMates(Model model, Name targetName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e courseMate \u003d model.findCourseMate(new QueryableCourseMate(targetName));","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"Ryan-Reno"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"Ryan-Reno"},"content":" targetName.toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"Ryan-Reno"},"content":" model.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"yuhinarita":2,"Ryan-Reno":32,"benson1029":11,"tzaph":34,"-":82}},{"path":"src/test/java/seedu/address/logic/commands/CreateGroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_NAME_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_QUERYABLE_SET_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_UNQUERYABLE_SET_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.getTypicalGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" * {@code CreateGroupCommand}.","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":"public class CreateGroupCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" private final Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), getTypicalGroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" private final Model emptyGroupListModel \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" public void constructor_nullParameters_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" new CreateGroupCommand(null, null));","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" public void execute_nullParameters_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" CreateGroupCommand createGroupCommand \u003d new CreateGroupCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" createGroupCommand.execute(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" public void execute_groupInList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" CreateGroupCommand createGroupCommand \u003d new CreateGroupCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" assertTrue(model.hasGroup(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" assertThrows(CommandException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" createGroupCommand.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" public void execute_groupNotInList_runsNormally() {","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" CreateGroupCommand createGroupCommand \u003d new CreateGroupCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e createGroupCommand.execute(emptyGroupListModel));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" public void execute_membersNotInList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" CreateGroupCommand createGroupCommand \u003d new CreateGroupCommand(SAMPLE_GROUP_NAME_1, SAMPLE_UNQUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" assertThrows(CommandException.class, () -\u003e createGroupCommand.execute(emptyGroupListModel));","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":63}},{"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":"benson1029"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertRecentlyProcessedCourseMateEdited;","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showAllCourseMates;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showCourseMateAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"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.commons.core.index.Index;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23"},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" private Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMateToDelete \u003d model.getFilteredCourseMateList().get(INDEX_FIRST_COURSE_MATE.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE));","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"benson1029"},"content":" String expectedMessage \u003d DeleteCommand.MESSAGE_DELETE_COURSE_MATE_SUCCESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.deleteCourseMate(courseMateToDelete);","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":47,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, courseMateToDelete);","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_similarCourseMates() {","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" showAllCourseMates(model, new Name(\"a\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new QueryableCourseMate(new Name(\"a\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" String expectedMessage \u003d String.format(Messages.MESSAGE_SIMILAR_COURSE_MATE_NAME, 4);","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(\"a\");","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredCourseMateList().size() + 1);","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new QueryableCourseMate(outOfBoundIndex));","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_invalidNameUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" Name name \u003d new Name(\"Alice Paulines\");","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new QueryableCourseMate(name));","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-20"},{"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_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMateToDelete \u003d model.getFilteredCourseMateList().get(INDEX_FIRST_COURSE_MATE.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE));","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"benson1029"},"content":" String expectedMessage \u003d DeleteCommand.MESSAGE_DELETE_COURSE_MATE_SUCCESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":94,"author":{"gitId":"ivan24004"},"content":" Model expectedModel \u003d new ModelManager(model.getContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.deleteCourseMate(courseMateToDelete);","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Ryan-Reno"},"content":" showNoCourseMate(expectedModel);","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":98,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-15"},{"lineNumber":99,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, courseMateToDelete);","lastModifiedDate":"2024-03-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getContactList().getCourseMateList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new QueryableCourseMate(outOfBoundIndex));","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE));","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(new QueryableCourseMate(INDEX_SECOND_COURSE_MATE));","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":125,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE));","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":134,"author":{"gitId":"Ryan-Reno"},"content":" // different courseMate -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":141,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(new QueryableCourseMate(targetIndex));","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"Ryan-Reno"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{queryableCourseMateIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":149,"author":{"gitId":"Ryan-Reno"},"content":" private void showNoCourseMate(Model model) {","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"Ryan-Reno"},"content":" model.updateFilteredCourseMateList(p -\u003e false);","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":152,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(model.getFilteredCourseMateList().isEmpty());","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Ryan-Reno":55,"benson1029":9,"-":86,"ivan24004":4}},{"path":"src/test/java/seedu/address/logic/commands/DeleteGroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_NAME_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.getTypicalGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"public class DeleteGroupCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" private final Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), getTypicalGroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" private final Model emptyGroupListModel \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" public void constructor_nullParameters_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" new DeleteGroupCommand(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" public void execute_nullParameters_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" DeleteGroupCommand deleteGroupCommand \u003d new DeleteGroupCommand(SAMPLE_GROUP_NAME_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" deleteGroupCommand.execute(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public void execute_groupInList_runsNormally() {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" DeleteGroupCommand deleteGroupCommand \u003d new DeleteGroupCommand(SAMPLE_GROUP_NAME_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" assertTrue(model.hasGroup(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e deleteGroupCommand.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" public void execute_groupNotInList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" DeleteGroupCommand deleteGroupCommand \u003d new DeleteGroupCommand(SAMPLE_GROUP_NAME_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" assertThrows(CommandException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" deleteGroupCommand.execute(emptyGroupListModel));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":50}},{"path":"src/test/java/seedu/address/logic/commands/DeleteMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"public class DeleteMemberCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" private DeleteMemberCommandParser parser \u003d new DeleteMemberCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" public void parse_validArgs_returnsDeleteMemberCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" Name groupName1 \u003d new Name(\"group 1\");","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" Set\u003cQueryableCourseMate\u003e courseMates1 \u003d new HashSet\u003c\u003e(List.of(","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" new QueryableCourseMate(new Name(\"Bob\"))));","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" DeleteMemberCommand targetCommand \u003d new DeleteMemberCommand(groupName1, courseMates1);","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" assertParseSuccess(parser, \"group 1 -cm Bob\", targetCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" Name groupName2 \u003d new Name(\"group 1\");","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" Set\u003cQueryableCourseMate\u003e courseMates2 \u003d new HashSet\u003c\u003e(List.of(","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" new QueryableCourseMate(new Name(\"Bob\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" new QueryableCourseMate(new Name(\"Alice\"))));","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" assertParseSuccess(parser, \"group 1 -cm Bob -cm Alice\",","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" new DeleteMemberCommand(groupName2, courseMates2));","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public void parse_invalidArgs_returnsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" assertParseFailure(parser, \"group 1\",","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" assertParseFailure(parser, \"group 1 -cm\",","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" assertParseFailure(parser, \"gr@up 1 -cm Bob\",","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":46}},{"path":"src/test/java/seedu/address/logic/commands/DeleteMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_NAME_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_QUERYABLE_SET_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_QUERYABLE_SET_3;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_UNQUERYABLE_SET_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.getTypicalGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" * {@code DeleteMemberCommand}.","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"public class DeleteMemberCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" private final Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), getTypicalGroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" private final Model emptyGroupListModel \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" public void constructor_nullParameters_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" new DeleteMemberCommand(null, null));","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public void execute_nullParameters_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" deleteMemberCommand.execute(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" public void execute_groupNotInList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" DeleteMemberCommand deleteMemberCommand \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" new DeleteMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" assertThrows(CommandException.class, () -\u003e deleteMemberCommand.execute(emptyGroupListModel));","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" public void execute_groupInListMembersNotInList_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" DeleteMemberCommand deleteMemberCommand \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" new DeleteMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_UNQUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" assertThrows(CommandException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" deleteMemberCommand.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" public void execute_groupInListMembersNotInGroup_throwsCommandException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" DeleteMemberCommand deleteMemberCommand \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" new DeleteMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_3);","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" assertTrue(model.hasGroup(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" assertThrows(CommandException.class, () -\u003e deleteMemberCommand.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" public void execute_groupInListMemberInGroup_runsNormally() {","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" DeleteMemberCommand deleteMemberCommand \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" new DeleteMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e deleteMemberCommand.execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":" new AddMemberCommand(SAMPLE_GROUP_NAME_1, SAMPLE_QUERYABLE_SET_1).execute(model));","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":76}},{"path":"src/test/java/seedu/address/logic/commands/DeleteSkillCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_DELSKILL_CPP_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_DELSKILL_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertRecentlyProcessedCourseMateEdited;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showAllCourseMates;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showCourseMateAtIndex;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand.DeleteSkillDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.DeleteSkillDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" * Contains integration tests (interaction with the Model) and unit tests for DeleteSkillCommand.","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":"public class DeleteSkillCommandTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":" private Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" public void execute_singleSkillUnfilteredList_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":" CourseMate courseMateToEdit \u003d model.getFilteredCourseMateList().get(INDEX_FIRST_COURSE_MATE.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" CourseMateBuilder courseMateInList \u003d new CourseMateBuilder(courseMateToEdit);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" CourseMate editedCourseMate \u003d courseMateInList.removeSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor descriptor \u003d new DeleteSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand deleteSkillCommand \u003d new DeleteSkillCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" String expectedMessage \u003d DeleteSkillCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"tzaph"},"content":" expectedModel.setCourseMate(courseMateToEdit, editedCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"tzaph"},"content":" assertCommandSuccess(deleteSkillCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, editedCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" CourseMate courseMateInFilteredList \u003d model.getFilteredCourseMateList()","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":" .get(INDEX_FIRST_COURSE_MATE.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":" CourseMate editedCourseMate \u003d new CourseMateBuilder(courseMateInFilteredList)","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" .removeSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand deleteSkillCommand \u003d new DeleteSkillCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE),","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":" new DeleteSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build());","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" String expectedMessage \u003d DeleteSkillCommand.MESSAGE_SUCCESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"tzaph"},"content":" expectedModel.setCourseMate(model.getFilteredCourseMateList().get(0), editedCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"tzaph"},"content":" assertCommandSuccess(deleteSkillCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, editedCourseMate);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_similarCourseMates() {","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" showAllCourseMates(model, new Name(\"a\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" DeleteSkillCommand deleteSkillCommand \u003d new DeleteSkillCommand(new QueryableCourseMate(new Name(\"a\")),","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":" new DeleteSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build());","lastModifiedDate":"2024-03-21"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" String expectedMessage \u003d String.format(Messages.MESSAGE_SIMILAR_COURSE_MATE_NAME, 4);","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-21"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(\"a\");","lastModifiedDate":"2024-03-21"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":96,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandSuccess(deleteSkillCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"Ryan-Reno"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":101,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"tzaph"},"content":" public void execute_invalidCourseMateIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"tzaph"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredCourseMateList().size() + 1);","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor descriptor \u003d new DeleteSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand deleteSkillCommand \u003d new DeleteSkillCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"tzaph"},"content":" new QueryableCourseMate(outOfBoundIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"tzaph"},"content":" assertCommandFailure(deleteSkillCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-20"},{"lineNumber":110,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"tzaph"},"content":" public void execute_invalidCourseMateNameUnfilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"tzaph"},"content":" Name name \u003d new Name(\"Bob\");","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor descriptor \u003d new DeleteSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand deleteSkillCommand \u003d new DeleteSkillCommand(new QueryableCourseMate(name), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"tzaph"},"content":" assertCommandFailure(deleteSkillCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"tzaph"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"tzaph"},"content":" * but smaller than size of contact list","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"tzaph"},"content":" public void execute_invalidCourseMateIndexFilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"tzaph"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"tzaph"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"tzaph"},"content":" // ensures that outOfBoundIndex is still in bounds of contact list","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"tzaph"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getContactList().getCourseMateList().size());","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand deleteSkillCommand \u003d new DeleteSkillCommand(new QueryableCourseMate(outOfBoundIndex),","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"tzaph"},"content":" new DeleteSkillDescriptorBuilder().withSkills(VALID_SKILL_JAVA).build());","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"tzaph"},"content":" assertCommandFailure(deleteSkillCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"tzaph"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-20"},{"lineNumber":138,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"tzaph"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"tzaph"},"content":" final DeleteSkillCommand standardCommand \u003d new DeleteSkillCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":143,"author":{"gitId":"tzaph"},"content":" new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), DESC_DELSKILL_JAVA);","lastModifiedDate":"2024-03-20"},{"lineNumber":144,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":145,"author":{"gitId":"tzaph"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":146,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand.DeleteSkillDescriptor copyDescriptor \u003d new DeleteSkillDescriptor(DESC_DELSKILL_JAVA);","lastModifiedDate":"2024-03-20"},{"lineNumber":147,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand commandWithSameValues \u003d new DeleteSkillCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"tzaph"},"content":" new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), copyDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"tzaph"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"tzaph"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"tzaph"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":154,"author":{"gitId":"tzaph"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":155,"author":{"gitId":"tzaph"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":156,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":157,"author":{"gitId":"tzaph"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"tzaph"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-03-20"},{"lineNumber":159,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":160,"author":{"gitId":"tzaph"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":161,"author":{"gitId":"tzaph"},"content":" assertFalse(standardCommand.equals(new DeleteSkillCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":162,"author":{"gitId":"tzaph"},"content":" new QueryableCourseMate(INDEX_SECOND_COURSE_MATE), DESC_DELSKILL_JAVA)));","lastModifiedDate":"2024-03-20"},{"lineNumber":163,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"tzaph"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"tzaph"},"content":" assertFalse(standardCommand.equals(","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"tzaph"},"content":" new DeleteSkillCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), DESC_DELSKILL_CPP_CSHARP)));","lastModifiedDate":"2024-03-20"},{"lineNumber":167,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":168,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":169,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"tzaph"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"tzaph"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor deleteSkillDescriptor \u003d new DeleteSkillDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand deleteSkillCommand \u003d new DeleteSkillCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"tzaph"},"content":" new QueryableCourseMate(index), deleteSkillDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"tzaph"},"content":" String expected \u003d DeleteSkillCommand.class.getCanonicalName()","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"tzaph"},"content":" + \"{index\u003d\" + index + \", deleteSkillDescriptor\u003d\"","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"tzaph"},"content":" + deleteSkillDescriptor + \"}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"tzaph"},"content":" assertEquals(expected, deleteSkillCommand.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":181,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Ryan-Reno":19,"tzaph":162}},{"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":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-12"},{"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":"benson1029"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertRecentlyProcessedCourseMateEdited;","lastModifiedDate":"2024-03-15"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showAllCourseMates;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showCourseMateAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.logic.commands.EditCommand.EditCourseMateDescriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-18"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.EditCourseMateDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" private Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"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":"Ryan-Reno"},"content":" CourseMate editedCourseMate \u003d new CourseMateBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand.EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder(editedCourseMate).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"benson1029"},"content":" String expectedMessage \u003d EditCommand.MESSAGE_EDIT_COURSE_MATE_SUCCESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.setCourseMate(model.getFilteredCourseMateList().get(0), editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":56,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, editedCourseMate);","lastModifiedDate":"2024-03-15"},{"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":"Ryan-Reno"},"content":" Index indexLastCourseMate \u003d Index.fromOneBased(model.getFilteredCourseMateList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate lastCourseMate \u003d model.getFilteredCourseMateList().get(indexLastCourseMate.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" CourseMateBuilder courseMateInList \u003d new CourseMateBuilder(lastCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate editedCourseMate \u003d courseMateInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Ryan-Reno"},"content":" .withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Ryan-Reno"},"content":" .withPhone(VALID_PHONE_BOB).withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(indexLastCourseMate), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":73,"author":{"gitId":"benson1029"},"content":" String expectedMessage \u003d EditCommand.MESSAGE_EDIT_COURSE_MATE_SUCCESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.setCourseMate(lastCourseMate, editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":79,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, editedCourseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), new EditCourseMateDescriptor());","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate editedCourseMate \u003d model.getFilteredCourseMateList().get(INDEX_FIRST_COURSE_MATE.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":89,"author":{"gitId":"benson1029"},"content":" String expectedMessage \u003d EditCommand.MESSAGE_EDIT_COURSE_MATE_SUCCESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"ivan24004"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-15"},{"lineNumber":95,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, editedCourseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMateInFilteredList \u003d model.getFilteredCourseMateList()","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"Ryan-Reno"},"content":" .get(INDEX_FIRST_COURSE_MATE.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate editedCourseMate \u003d new CourseMateBuilder(courseMateInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE),","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" new EditCourseMateDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":108,"author":{"gitId":"benson1029"},"content":" String expectedMessage \u003d EditCommand.MESSAGE_EDIT_COURSE_MATE_SUCCESS;","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":110,"author":{"gitId":"ivan24004"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-18"},{"lineNumber":111,"author":{"gitId":"ivan24004"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.setCourseMate(model.getFilteredCourseMateList().get(0), editedCourseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":114,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, editedCourseMate);","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":119,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_similarCourseMates() {","lastModifiedDate":"2024-03-21"},{"lineNumber":120,"author":{"gitId":"Ryan-Reno"},"content":" showAllCourseMates(model, new Name(\"a\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":121,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(new Name(\"a\")),","lastModifiedDate":"2024-03-21"},{"lineNumber":122,"author":{"gitId":"Ryan-Reno"},"content":" new EditCourseMateDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-21"},{"lineNumber":123,"author":{"gitId":"Ryan-Reno"},"content":" String expectedMessage \u003d String.format(Messages.MESSAGE_SIMILAR_COURSE_MATE_NAME, 4);","lastModifiedDate":"2024-03-21"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":125,"author":{"gitId":"Ryan-Reno"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"Ryan-Reno"},"content":" new ContactList(model.getContactList()), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"Ryan-Reno"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(\"a\");","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel, true);","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"Ryan-Reno"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":136,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_duplicateCourseMateUnfilteredList_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate firstCourseMate \u003d model.getFilteredCourseMateList().get(INDEX_FIRST_COURSE_MATE.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder(firstCourseMate).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(INDEX_SECOND_COURSE_MATE), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":141,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":146,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_duplicateCourseMateFilteredList_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"Ryan-Reno"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"Ryan-Reno"},"content":" // edit courseMate in filtered list into a duplicate in contact list","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMateInList \u003d model.getContactList().getCourseMateList()","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"Ryan-Reno"},"content":" .get(INDEX_SECOND_COURSE_MATE.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE),","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"Ryan-Reno"},"content":" new EditCourseMateDescriptorBuilder(courseMateInList).build());","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":155,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":160,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_invalidCourseMateIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"Ryan-Reno"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredCourseMateList().size() + 1);","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(outOfBoundIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":165,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":170,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_invalidCourseMateNameUnfilteredList_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":171,"author":{"gitId":"Ryan-Reno"},"content":" Name name \u003d new Name(\"Bob\");","lastModifiedDate":"2024-03-20"},{"lineNumber":172,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":173,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(name), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":175,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_NAME);","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"Ryan-Reno"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-20"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":180,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":181,"author":{"gitId":"Ryan-Reno"},"content":" * but smaller than size of contact list","lastModifiedDate":"2024-03-12"},{"lineNumber":182,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":184,"author":{"gitId":"Ryan-Reno"},"content":" public void execute_invalidCourseMateIndexFilteredList_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":185,"author":{"gitId":"Ryan-Reno"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"Ryan-Reno"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":187,"author":{"gitId":"Ryan-Reno"},"content":" // ensures that outOfBoundIndex is still in bounds of contact list","lastModifiedDate":"2024-03-12"},{"lineNumber":188,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getContactList().getCourseMateList().size());","lastModifiedDate":"2024-03-12"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":190,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(outOfBoundIndex),","lastModifiedDate":"2024-03-20"},{"lineNumber":191,"author":{"gitId":"Ryan-Reno"},"content":" new EditCourseMateDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-03-12"},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":193,"author":{"gitId":"Ryan-Reno"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_COURSE_MATE_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-12"},{"lineNumber":194,"author":{"gitId":"benson1029"},"content":" assertRecentlyProcessedCourseMateEdited(model, null);","lastModifiedDate":"2024-03-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":199,"author":{"gitId":"Ryan-Reno"},"content":" final EditCommand standardCommand \u003d new EditCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":200,"author":{"gitId":"Ryan-Reno"},"content":" new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), DESC_AMY);","lastModifiedDate":"2024-03-20"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":202,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":203,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand.EditCourseMateDescriptor copyDescriptor \u003d new EditCourseMateDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-12"},{"lineNumber":204,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":205,"author":{"gitId":"Ryan-Reno"},"content":" new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), copyDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":206,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08"},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":208,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08"},{"lineNumber":209,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":211,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":214,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":215,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":217,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":218,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(standardCommand.equals(new EditCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":219,"author":{"gitId":"Ryan-Reno"},"content":" new QueryableCourseMate(INDEX_SECOND_COURSE_MATE), DESC_AMY)));","lastModifiedDate":"2024-03-20"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08"},{"lineNumber":222,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(standardCommand.equals(","lastModifiedDate":"2024-03-20"},{"lineNumber":223,"author":{"gitId":"Ryan-Reno"},"content":" new EditCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), DESC_BOB)));","lastModifiedDate":"2024-03-20"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":226,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":229,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor editCourseMateDescriptor \u003d new EditCourseMateDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":230,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand editCommand \u003d new EditCommand(new QueryableCourseMate(index), editCourseMateDescriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":231,"author":{"gitId":"Ryan-Reno"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editCourseMateDescriptor\u003d\"","lastModifiedDate":"2024-03-12"},{"lineNumber":232,"author":{"gitId":"Ryan-Reno"},"content":" + editCourseMateDescriptor + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":233,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"Ryan-Reno":98,"benson1029":17,"-":111,"ivan24004":10}},{"path":"src/test/java/seedu/address/logic/commands/EditCourseMateDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"import seedu.address.logic.commands.EditCommand.EditCourseMateDescriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.EditCourseMateDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"public class EditCourseMateDescriptorTest {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" EditCourseMateDescriptor descriptorWithSameValues \u003d new EditCourseMateDescriptor(DESC_AMY);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" EditCommand.EditCourseMateDescriptor editedAmy \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" new EditCourseMateDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" editedAmy \u003d new EditCourseMateDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" editedAmy \u003d new EditCourseMateDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" // different skills -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" editedAmy \u003d new EditCourseMateDescriptorBuilder(DESC_AMY).withSkills(VALID_SKILL_JAVA).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":"","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":"Ryan-Reno"},"content":" EditCommand.EditCourseMateDescriptor editCourseMateDescriptor \u003d new EditCommand.EditCourseMateDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" String expected \u003d EditCommand.EditCourseMateDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" + editCourseMateDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" + editCourseMateDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"yuhinarita"},"content":" + editCourseMateDescriptor.getEmail().orElse(null) + \", skills\u003d\"","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" + editCourseMateDescriptor.getSkills().orElse(null) + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expected, editCourseMateDescriptor.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"yuhinarita":1,"Ryan-Reno":17,"-":48}},{"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":"Ryan-Reno"},"content":"import static seedu.address.logic.Messages.MESSAGE_COURSE_MATES_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.CARL;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.FIONA;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-12"},{"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":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-18"},{"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":"benson1029"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-17"},{"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":"ivan24004"},"content":" private Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"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":"benson1029"},"content":" ContainsKeywordPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"benson1029"},"content":" new ContainsKeywordPredicate(\"first\");","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"benson1029"},"content":" new ContainsKeywordPredicate(\"second\");","lastModifiedDate":"2024-03-17"},{"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":"Ryan-Reno"},"content":" // different courseMate -\u003e returns false","lastModifiedDate":"2024-03-12"},{"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":"benson1029"},"content":" public void execute_nonMatchingKeywords_noCourseMateFound() {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" String expectedMessage \u003d String.format(MESSAGE_COURSE_MATES_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate predicate \u003d preparePredicate(\"foo bar\");","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel, false);","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(Collections.emptyList(), model.getFilteredCourseMateList());","lastModifiedDate":"2024-03-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":"benson1029"},"content":" public void execute_commonSubstring_multipleCourseMatesFound() {","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"benson1029"},"content":" String expectedMessage \u003d String.format(MESSAGE_COURSE_MATES_LISTED_OVERVIEW, 2);","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate predicate \u003d preparePredicate(\"z\");","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" expectedModel.updateFilteredCourseMateList(predicate);","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel, false);","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"benson1029"},"content":" assertEquals(Arrays.asList(CARL, FIONA), model.getFilteredCourseMateList());","lastModifiedDate":"2024-03-17"},{"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":"benson1029"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(\"keyword\");","lastModifiedDate":"2024-03-17"},{"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":"benson1029"},"content":" * Parses {@code userInput} into a {@code ContainsKeywordsPredicate}.","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12"},{"lineNumber":88,"author":{"gitId":"benson1029"},"content":" private ContainsKeywordPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"benson1029"},"content":" return new ContainsKeywordPredicate(userInput.trim());","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Ryan-Reno":9,"benson1029":17,"-":62,"ivan24004":3}},{"path":"src/test/java/seedu/address/logic/commands/FindGroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.logic.Messages.MESSAGE_GROUPS_LISTED_OVERVIEW;","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_1;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_2;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_3;","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.testutil.TypicalGroups.getTypicalGroupList;","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"yuhinarita"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.ContainsGroupKeywordPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":"/**","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" * Contains integration tests (interaction with the Model) for {@code FindGroupCommand}.","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"yuhinarita"},"content":"public class FindGroupCommandTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"yuhinarita"},"content":" private Model model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), getTypicalGroupList());","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"yuhinarita"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), getTypicalGroupList());","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"yuhinarita"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"yuhinarita"},"content":" public void equals() {","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"yuhinarita"},"content":" ContainsGroupKeywordPredicate firstPredicate \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"yuhinarita"},"content":" new ContainsGroupKeywordPredicate(\"first\");","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"yuhinarita"},"content":" ContainsGroupKeywordPredicate secondPredicate \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"yuhinarita"},"content":" new ContainsGroupKeywordPredicate(\"second\");","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"yuhinarita"},"content":" FindGroupCommand findFirstCommand \u003d new FindGroupCommand(firstPredicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"yuhinarita"},"content":" FindGroupCommand findSecondCommand \u003d new FindGroupCommand(secondPredicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"yuhinarita"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"yuhinarita"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"yuhinarita"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"yuhinarita"},"content":" FindGroupCommand findFirstCommandCopy \u003d new FindGroupCommand(firstPredicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"yuhinarita"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"yuhinarita"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"yuhinarita"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"yuhinarita"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"yuhinarita"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"yuhinarita"},"content":" // different groups -\u003e returns false","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"yuhinarita"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"yuhinarita"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"yuhinarita"},"content":" public void execute_nonMatchingKeywords_noGroupFound() {","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"yuhinarita"},"content":" String expectedMessage \u003d String.format(MESSAGE_GROUPS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"yuhinarita"},"content":" ContainsGroupKeywordPredicate predicate \u003d preparePredicate(\"foo bar\");","lastModifiedDate":"2024-03-22"},{"lineNumber":62,"author":{"gitId":"yuhinarita"},"content":" FindGroupCommand command \u003d new FindGroupCommand(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":63,"author":{"gitId":"yuhinarita"},"content":" expectedModel.updateFilteredGroupList(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":64,"author":{"gitId":"yuhinarita"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel, false);","lastModifiedDate":"2024-03-22"},{"lineNumber":65,"author":{"gitId":"yuhinarita"},"content":" assertEquals(Collections.emptyList(), model.getFilteredGroupList());","lastModifiedDate":"2024-03-22"},{"lineNumber":66,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":67,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":68,"author":{"gitId":"yuhinarita"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":69,"author":{"gitId":"yuhinarita"},"content":" public void execute_commonSubstring_multipleGroupsFound() {","lastModifiedDate":"2024-03-22"},{"lineNumber":70,"author":{"gitId":"yuhinarita"},"content":" String expectedMessage \u003d String.format(MESSAGE_GROUPS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-03-22"},{"lineNumber":71,"author":{"gitId":"yuhinarita"},"content":" ContainsGroupKeywordPredicate predicate \u003d preparePredicate(\"Group\");","lastModifiedDate":"2024-03-22"},{"lineNumber":72,"author":{"gitId":"yuhinarita"},"content":" FindGroupCommand command \u003d new FindGroupCommand(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":73,"author":{"gitId":"yuhinarita"},"content":" expectedModel.updateFilteredGroupList(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":74,"author":{"gitId":"yuhinarita"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel, false);","lastModifiedDate":"2024-03-22"},{"lineNumber":75,"author":{"gitId":"yuhinarita"},"content":" assertEquals(Arrays.asList(SAMPLE_GROUP_1, SAMPLE_GROUP_2, SAMPLE_GROUP_3), model.getFilteredGroupList());","lastModifiedDate":"2024-03-22"},{"lineNumber":76,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":77,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":78,"author":{"gitId":"yuhinarita"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":79,"author":{"gitId":"yuhinarita"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-22"},{"lineNumber":80,"author":{"gitId":"yuhinarita"},"content":" ContainsGroupKeywordPredicate predicate \u003d new ContainsGroupKeywordPredicate(\"keyword\");","lastModifiedDate":"2024-03-22"},{"lineNumber":81,"author":{"gitId":"yuhinarita"},"content":" FindGroupCommand findGroupCommand \u003d new FindGroupCommand(predicate);","lastModifiedDate":"2024-03-22"},{"lineNumber":82,"author":{"gitId":"yuhinarita"},"content":" String expected \u003d FindGroupCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-03-22"},{"lineNumber":83,"author":{"gitId":"yuhinarita"},"content":" assertEquals(expected, findGroupCommand.toString());","lastModifiedDate":"2024-03-22"},{"lineNumber":84,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":85,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":86,"author":{"gitId":"yuhinarita"},"content":" /**","lastModifiedDate":"2024-03-22"},{"lineNumber":87,"author":{"gitId":"yuhinarita"},"content":" * Parses {@code userInput} into a {@code ContainsKeywordsPredicate}.","lastModifiedDate":"2024-03-22"},{"lineNumber":88,"author":{"gitId":"yuhinarita"},"content":" */","lastModifiedDate":"2024-03-22"},{"lineNumber":89,"author":{"gitId":"yuhinarita"},"content":" private ContainsGroupKeywordPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-03-22"},{"lineNumber":90,"author":{"gitId":"yuhinarita"},"content":" return new ContainsGroupKeywordPredicate(userInput.trim());","lastModifiedDate":"2024-03-22"},{"lineNumber":91,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":92,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"yuhinarita":92}},{"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":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showCourseMateAtIndex;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"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":"ivan24004"},"content":"import seedu.address.model.GroupList;","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":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" model \u003d new ModelManager(getTypicalContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" expectedModel \u003d new ModelManager(model.getContactList(), new UserPrefs(), new GroupList());","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel, false);","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" showCourseMateAtIndex(model, INDEX_FIRST_COURSE_MATE);","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel, false);","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Ryan-Reno":4,"benson1029":2,"-":31,"ivan24004":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.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_AMPERSAND;","lastModifiedDate":"2024-03-18"},{"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.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_CPP;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_CSHARP;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_JAVA;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_CPP;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_CSHARP;","lastModifiedDate":"2024-03-19"},{"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":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.AMY;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":" CourseMate expectedCourseMate \u003d new CourseMateBuilder(BOB).withSkills(VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" + SKILL_DESC_CPP, new AddCommand(expectedCourseMate));","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" // multiple skills - all accepted","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate expectedCourseMateMultipleSkills \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" new CourseMateBuilder(BOB).withSkills(VALID_SKILL_CPP, VALID_SKILL_CSHARP).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":" VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" + SKILL_DESC_CSHARP + SKILL_DESC_CPP,","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" new AddCommand(expectedCourseMateMultipleSkills));","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" public void parse_repeatedNonSkillValue_failure() {","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":" String validExpectedCourseMateString \u003d VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" + SKILL_DESC_CPP;","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, validExpectedCourseMateString + PHONE_DESC_AMY,","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, validExpectedCourseMateString + EMAIL_DESC_AMY,","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":" validExpectedCourseMateString + PHONE_DESC_AMY","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"yuhinarita"},"content":" + EMAIL_DESC_AMY + NAME_DESC_AMY + validExpectedCourseMateString,","lastModifiedDate":"2024-03-15"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"tzaph"},"content":" + EMAIL_DESC_BOB + SKILL_DESC_CPP,","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, VALID_NAME_BOB + INVALID_PHONE_DESC + PHONE_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"tzaph"},"content":" + EMAIL_DESC_BOB + SKILL_DESC_CPP,","lastModifiedDate":"2024-03-19"},{"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":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"tzaph"},"content":" + INVALID_EMAIL_DESC + SKILL_DESC_CPP,","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + INVALID_PHONE_DESC","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"tzaph"},"content":" + EMAIL_DESC_BOB + SKILL_DESC_CPP,","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" // zero skills","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate expectedCourseMate \u003d new CourseMateBuilder(AMY).withSkills().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, VALID_NAME_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-03-18"},{"lineNumber":109,"author":{"gitId":"Ryan-Reno"},"content":" new AddCommand(expectedCourseMate));","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":117,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, VALID_NAME_BOB + EMAIL_DESC_BOB + VALID_PHONE_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":121,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB,","lastModifiedDate":"2024-03-19"},{"lineNumber":122,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":124,"author":{"gitId":"tzaph"},"content":" // all prefixes missing, all counted as name","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"yuhinarita"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB,","lastModifiedDate":"2024-03-15"},{"lineNumber":126,"author":{"gitId":"tzaph"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"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_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":131,"author":{"gitId":"tzaph"},"content":" // missing name","lastModifiedDate":"2024-03-18"},{"lineNumber":132,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, PHONE_DESC_BOB + EMAIL_DESC_BOB,","lastModifiedDate":"2024-03-18"},{"lineNumber":133,"author":{"gitId":"tzaph"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-18"},{"lineNumber":134,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":136,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, INVALID_NAME_AMPERSAND + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"tzaph"},"content":" + SKILL_DESC_JAVA + SKILL_DESC_CPP, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":140,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, VALID_NAME_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"tzaph"},"content":" + SKILL_DESC_JAVA + SKILL_DESC_CPP, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"tzaph"},"content":" + SKILL_DESC_JAVA + SKILL_DESC_CPP, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, INVALID_NAME_AMPERSAND + PHONE_DESC_BOB + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-03-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"yuhinarita":2,"Ryan-Reno":16,"tzaph":41,"-":92}},{"path":"src/test/java/seedu/address/logic/parser/AddMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"public class AddMemberCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" private AddMemberCommandParser parser \u003d new AddMemberCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" public void parse_validArgs_returnsAddMemberCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" Name groupName1 \u003d new Name(\"group 1\");","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" Set\u003cQueryableCourseMate\u003e courseMates1 \u003d new HashSet\u003c\u003e(List.of(","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" new QueryableCourseMate(new Name(\"Bob\"))));","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" AddMemberCommand targetCommand \u003d new AddMemberCommand(groupName1, courseMates1);","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" assertParseSuccess(parser, \"group 1 -cm Bob\", targetCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" Name groupName2 \u003d new Name(\"group 1\");","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" Set\u003cQueryableCourseMate\u003e courseMates2 \u003d new HashSet\u003c\u003e(List.of(","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" new QueryableCourseMate(new Name(\"Bob\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" new QueryableCourseMate(new Name(\"Alice\"))));","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" assertParseSuccess(parser, \"group 1 -cm Bob -cm Alice\",","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" new AddMemberCommand(groupName2, courseMates2));","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public void parse_invalidArgs_returnsParseException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" assertParseFailure(parser, \"group 1\",","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" assertParseFailure(parser, \"group 1 -cm\",","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" assertParseFailure(parser, \"gr@up 1 -cm Bob\",","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":46}},{"path":"src/test/java/seedu/address/logic/parser/AddSkillCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_CPP;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_CPP;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand.AddSkillDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.AddSkillDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":"public class AddSkillCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":" private static final String SKILL_EMPTY \u003d \" \" + PREFIX_SKILL;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"tzaph"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSkillCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":" private AddSkillCommandParser parser \u003d new AddSkillCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":" // no index specified","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, SKILL_DESC_CPP, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" // no field specified","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#1\", AddSkillCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" // no index and no field specified","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" // negative index","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#-5\" + SKILL_DESC_CPP, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" // zero index","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#0\" + SKILL_DESC_JAVA, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#1 -i string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"tzaph"},"content":" public void parse_singleSkill_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":" Index targetIndex \u003d INDEX_THIRD_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_DESC_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor descriptor \u003d new AddSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_CSHARP).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" AddSkillCommand expectedCommand \u003d new AddSkillCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":" public void parse_multipleSkills_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" Index targetIndex \u003d INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_DESC_CPP + SKILL_DESC_CSHARP + SKILL_DESC_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor descriptor \u003d new AddSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_CSHARP, VALID_SKILL_JAVA, VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"tzaph"},"content":" AddSkillCommand expectedCommand \u003d new AddSkillCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"tzaph"},"content":" public void parse_duplicateSkills_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"tzaph"},"content":" Index targetIndex \u003d INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"tzaph"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_DESC_CPP + SKILL_DESC_CPP + SKILL_DESC_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor descriptor \u003d new AddSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_JAVA, VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"tzaph"},"content":" AddSkillCommand expectedCommand \u003d new AddSkillCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"tzaph"},"content":" public void parse_emptySkill_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"tzaph"},"content":" Index targetIndex \u003d INDEX_THIRD_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"tzaph"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_EMPTY;","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"tzaph"},"content":" AddSkillDescriptor descriptor \u003d new AddSkillDescriptorBuilder().withSkills().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"tzaph"},"content":" AddSkillCommand expectedCommand \u003d new AddSkillCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"tzaph":106}},{"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":"Ryan-Reno"},"content":" String argsString \u003d \" some random string /s skill with leading and trailing spaces \";","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":1,"-":149}},{"path":"src/test/java/seedu/address/logic/parser/CreateGroupCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.CreateGroupCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" * Contains unit tests for CreateGroupCommand","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"public class CreateGroupCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" private CreateGroupCommandParser parser \u003d new CreateGroupCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" public void parse_validArgs_returnsCreateGroupCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" Name groupName \u003d new Name(\"group 1\");","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" Set\u003cQueryableCourseMate\u003e courseMates \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" new HashSet\u003c\u003e(List.of(new QueryableCourseMate(new Name(\"Bob\"))));","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" CreateGroupCommand targetCommand \u003d new CreateGroupCommand(groupName, courseMates);","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" assertParseSuccess(parser, \"group 1 -cm Bob\", targetCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" assertParseSuccess(parser, \"group 1\", new CreateGroupCommand(groupName, new HashSet\u003c\u003e()));","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":32}},{"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":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":" assertParseSuccess(parser, \"#1\", new DeleteCommand(","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" new QueryableCourseMate(INDEX_FIRST_COURSE_MATE)));","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, \"#-1\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09"}],"authorContributionMap":{"Ryan-Reno":5,"-":29}},{"path":"src/test/java/seedu/address/logic/parser/DeleteGroupCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.DeleteGroupCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":" * Contains unit tests for DeleteGroupCommandParser","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"public class DeleteGroupCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":" private DeleteGroupCommandParser parser \u003d new DeleteGroupCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" public void parse_validArgs_returnsDeleteGroupCommand() {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" Name groupName \u003d new Name(\"group 1\");","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" DeleteGroupCommand targetCommand \u003d new DeleteGroupCommand(groupName);","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" assertParseSuccess(parser, \"group 1\", targetCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":23}},{"path":"src/test/java/seedu/address/logic/parser/DeleteSkillCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_CPP;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_CPP;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand.DeleteSkillDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.DeleteSkillDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":"public class DeleteSkillCommandParserTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":" private static final String SKILL_EMPTY \u003d \" \" + PREFIX_SKILL;","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"tzaph"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSkillCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":" private DeleteSkillCommandParser parser \u003d new DeleteSkillCommandParser();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":" // no index specified","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, SKILL_DESC_CPP, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" // no field specified","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#1\", DeleteSkillCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" // no index and no field specified","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" // negative index","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#-5\" + SKILL_DESC_CPP, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" // zero index","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#0\" + SKILL_DESC_JAVA, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"tzaph"},"content":" assertParseFailure(parser, \"#1 -i string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"tzaph"},"content":" public void parse_singleSkill_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":" Index targetIndex \u003d INDEX_THIRD_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_DESC_CSHARP;","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor descriptor \u003d new DeleteSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_CSHARP).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand expectedCommand \u003d new DeleteSkillCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":" public void parse_multipleSkills_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" Index targetIndex \u003d INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_DESC_CPP + SKILL_DESC_CSHARP + SKILL_DESC_JAVA;","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor descriptor \u003d new DeleteSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_CSHARP, VALID_SKILL_JAVA, VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand expectedCommand \u003d new DeleteSkillCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"tzaph"},"content":" public void parse_duplicateSkills_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"tzaph"},"content":" Index targetIndex \u003d INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"tzaph"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_DESC_CPP + SKILL_DESC_CPP;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor descriptor \u003d new DeleteSkillDescriptorBuilder()","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand expectedCommand \u003d new DeleteSkillCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"tzaph"},"content":" public void parse_emptySkill_success() {","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"tzaph"},"content":" Index targetIndex \u003d INDEX_THIRD_COURSE_MATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"tzaph"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_EMPTY;","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"tzaph"},"content":" DeleteSkillDescriptor descriptor \u003d new DeleteSkillDescriptorBuilder().withSkills().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand expectedCommand \u003d new DeleteSkillCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"tzaph"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"Ryan-Reno":2,"tzaph":106}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_CPP;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SKILL_DESC_JAVA;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_CPP;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.logic.commands.EditCommand.EditCourseMateDescriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.EditCourseMateDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" private static final String SKILL_EMPTY \u003d \" \" + PREFIX_SKILL;","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":45,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04"},{"lineNumber":46,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" // no field specified using name","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, VALID_NAME_AMY, EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" // no field specified using index","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, \"#1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","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_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, \"#-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":67,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, \"#0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, \"#1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, \"#1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, \"#1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, \"#1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" assertParseFailure(parser, \"#1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_PHONE_AMY,","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" Index targetIndex \u003d INDEX_SECOND_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + PHONE_DESC_BOB + SKILL_DESC_JAVA","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"tzaph"},"content":" + EMAIL_DESC_AMY + NAME_DESC_AMY + SKILL_DESC_CPP;","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"yuhinarita"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-03-15"},{"lineNumber":94,"author":{"gitId":"tzaph"},"content":" .withSkills(VALID_SKILL_JAVA, VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand expectedCommand \u003d new EditCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","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_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":102,"author":{"gitId":"Ryan-Reno"},"content":" Index targetIndex \u003d INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"Ryan-Reno"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":107,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand expectedCommand \u003d new EditCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"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 parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"Ryan-Reno"},"content":" Index targetIndex \u003d INDEX_THIRD_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"Ryan-Reno"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand expectedCommand \u003d new EditCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"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":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"Ryan-Reno"},"content":" userInput \u003d \"#\" + targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"Ryan-Reno"},"content":" descriptor \u003d new EditCourseMateDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"Ryan-Reno"},"content":" expectedCommand \u003d new EditCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":128,"author":{"gitId":"Ryan-Reno"},"content":" userInput \u003d \"#\" + targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"Ryan-Reno"},"content":" descriptor \u003d new EditCourseMateDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"Ryan-Reno"},"content":" expectedCommand \u003d new EditCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"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":"Ryan-Reno"},"content":" // skills","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"tzaph"},"content":" userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_DESC_CPP;","lastModifiedDate":"2024-03-20"},{"lineNumber":135,"author":{"gitId":"tzaph"},"content":" descriptor \u003d new EditCourseMateDescriptorBuilder().withSkills(VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":136,"author":{"gitId":"Ryan-Reno"},"content":" expectedCommand \u003d new EditCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"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":"","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"Ryan-Reno"},"content":" // AddCommandParserTest#parse_repeatedNonSkillValue_failure()","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"Ryan-Reno"},"content":" Index targetIndex \u003d INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"Ryan-Reno"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"Ryan-Reno"},"content":" userInput \u003d \"#\" + targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"Ryan-Reno"},"content":" userInput \u003d \"#\" + targetIndex.getOneBased() + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-20"},{"lineNumber":158,"author":{"gitId":"tzaph"},"content":" + SKILL_DESC_CPP + PHONE_DESC_AMY + EMAIL_DESC_AMY + SKILL_DESC_CPP","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"yuhinarita"},"content":" + PHONE_DESC_BOB + EMAIL_DESC_BOB + SKILL_DESC_JAVA;","lastModifiedDate":"2024-03-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"yuhinarita"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL));","lastModifiedDate":"2024-03-15"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":165,"author":{"gitId":"Ryan-Reno"},"content":" userInput \u003d \"#\" + targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-03-20"},{"lineNumber":166,"author":{"gitId":"yuhinarita"},"content":" + INVALID_PHONE_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-03-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"yuhinarita"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL));","lastModifiedDate":"2024-03-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":173,"author":{"gitId":"Ryan-Reno"},"content":" public void parse_resetSkills_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"Ryan-Reno"},"content":" Index targetIndex \u003d INDEX_THIRD_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"Ryan-Reno"},"content":" String userInput \u003d \"#\" + targetIndex.getOneBased() + SKILL_EMPTY;","lastModifiedDate":"2024-03-20"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":177,"author":{"gitId":"Ryan-Reno"},"content":" EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder().withSkills().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand expectedCommand \u003d new EditCommand(new QueryableCourseMate(targetIndex), descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"yuhinarita":5,"Ryan-Reno":55,"tzaph":7,"-":115}},{"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 org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":10,"author":{"gitId":"benson1029"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27"},{"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":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06"},{"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":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12"},{"lineNumber":25,"author":{"gitId":"benson1029"},"content":" new FindCommand(new ContainsKeywordPredicate(\"Alice Bob\"));","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27"}],"authorContributionMap":{"benson1029":2,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/FindGroupCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yuhinarita"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"yuhinarita"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"yuhinarita"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.logic.commands.FindGroupCommand;","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.ContainsGroupKeywordPredicate;","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"yuhinarita"},"content":"public class FindGroupCommandParserTest {","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"yuhinarita"},"content":" private FindGroupCommandParser parser \u003d new FindGroupCommandParser();","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"yuhinarita"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"yuhinarita"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"yuhinarita"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"yuhinarita"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":" @Test","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"yuhinarita"},"content":" public void parse_validArgs_returnsFindGroupCommand() {","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" FindGroupCommand expectedFindGroupCommand \u003d","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"yuhinarita"},"content":" new FindGroupCommand(new ContainsGroupKeywordPredicate(\"CS2101 G01\"));","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"yuhinarita"},"content":" assertParseSuccess(parser, \"CS2101 G01\", expectedFindGroupCommand);","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"yuhinarita"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"yuhinarita"},"content":" assertParseSuccess(parser, \" \\n CS2101 \\n \\t G01 \\t\", expectedFindGroupCommand);","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"yuhinarita"},"content":" }","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"yuhinarita"},"content":"}","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"yuhinarita":33}},{"path":"src/test/java/seedu/address/logic/parser/MatchMateParserTest.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":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_COURSE_MATE;","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.CreateGroupCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","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":"benson1029"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.AddSkillDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":"import seedu.address.testutil.DeleteSkillDescriptorBuilder;","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.EditCourseMateDescriptorBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":"public class MatchMateParserTest {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" private final MatchMateParser parser \u003d new MatchMateParser();","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMate \u003d new CourseMateBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(CourseMateUtil.getAddCommand(courseMate));","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(new AddCommand(courseMate), command);","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" public void parseCommand_addSkill() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" CourseMate courseMate \u003d new CourseMateBuilder().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":" AddSkillCommand.AddSkillDescriptor descriptor \u003d new AddSkillDescriptorBuilder(courseMate).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" AddSkillCommand command \u003d (AddSkillCommand) parser.parseCommand(AddSkillCommand.COMMAND_WORD + \" #\"","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" + INDEX_FIRST_COURSE_MATE.getOneBased() + \" \"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"tzaph"},"content":" + CourseMateUtil.getAddSkillDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" assertEquals(new AddSkillCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), descriptor), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","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_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" DeleteCommand.COMMAND_WORD + \" #\" + INDEX_FIRST_COURSE_MATE.getOneBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(new DeleteCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE)), command);","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":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" public void parseCommand_deleteSkill() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":" CourseMate courseMate \u003d new CourseMateBuilder().build();","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand.DeleteSkillDescriptor descriptor \u003d new DeleteSkillDescriptorBuilder(courseMate).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":" DeleteSkillCommand command \u003d (DeleteSkillCommand) parser.parseCommand(DeleteSkillCommand.COMMAND_WORD + \" #\"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" + INDEX_FIRST_COURSE_MATE.getOneBased() + \" \"","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":" + CourseMateUtil.getDeleteSkillDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":" assertEquals(new DeleteSkillCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), descriptor), command);","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate courseMate \u003d new CourseMateBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand.EditCourseMateDescriptor descriptor \u003d new EditCourseMateDescriptorBuilder(courseMate).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" #\"","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" + INDEX_FIRST_COURSE_MATE.getOneBased() + \" \"","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" + CourseMateUtil.getEditCourseMateDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(new EditCommand(new QueryableCourseMate(INDEX_FIRST_COURSE_MATE), descriptor), command);","lastModifiedDate":"2024-03-20"},{"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_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","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_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"benson1029"},"content":" String keyword \u003d \"foo bar baz\";","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"benson1029"},"content":" FindCommand.COMMAND_WORD + \" \" + keyword);","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"benson1029"},"content":" assertEquals(new FindCommand(new ContainsKeywordPredicate(keyword)), command);","lastModifiedDate":"2024-03-17"},{"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_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":115,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":116,"author":{"gitId":"ivan24004"},"content":" public void parseCommand_createGroup() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"ivan24004"},"content":" assertTrue(parser.parseCommand(CreateGroupCommand.COMMAND_WORD + \" CS2103T Group\")","lastModifiedDate":"2024-03-18"},{"lineNumber":118,"author":{"gitId":"ivan24004"},"content":" instanceof CreateGroupCommand);","lastModifiedDate":"2024-03-18"},{"lineNumber":119,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":120,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":121,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"ivan24004"},"content":" public void parseCommand_addMember() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"ivan24004"},"content":" assertTrue(parser.parseCommand(AddMemberCommand.COMMAND_WORD + \" CS2103T Group -cm John Doe\")","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"ivan24004"},"content":" instanceof AddMemberCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"ivan24004"},"content":" public void parseCommand_deleteMember() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"ivan24004"},"content":" assertTrue(parser.parseCommand(DeleteMemberCommand.COMMAND_WORD + \" CS2103T Group -cm John Doe\")","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"ivan24004"},"content":" instanceof DeleteMemberCommand);","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":139,"author":{"gitId":"tzaph"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":140,"author":{"gitId":"tzaph"},"content":" public void parseCommand_noSpaceAfterPrefix_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"tzaph"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"tzaph"},"content":" -\u003e parser.parseCommand(\"add Amy Bee -p11111111 -e amy@example.com\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":143,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Ryan-Reno":17,"benson1029":4,"tzaph":30,"-":75,"ivan24004":23}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","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":"tzaph"},"content":" private static final String VALID_SKILL_1 \u003d \"C++\";","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" private static final String VALID_SKILL_2 \u003d \"Python\";","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":45,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29"},{"lineNumber":51,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22"},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":74,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14"},{"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 parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":103,"author":{"gitId":"Ryan-Reno"},"content":" public void parseSkill_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSkill(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"Ryan-Reno"},"content":" public void parseSkill_validValueWithoutWhitespace_returnsSkill() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"Ryan-Reno"},"content":" Skill expectedSkill \u003d new Skill(VALID_SKILL_1);","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedSkill, ParserUtil.parseSkill(VALID_SKILL_1));","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":114,"author":{"gitId":"Ryan-Reno"},"content":" public void parseSkill_validValueWithWhitespace_returnsTrimmedSkill() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"Ryan-Reno"},"content":" String skillWithWhitespace \u003d WHITESPACE + VALID_SKILL_1 + WHITESPACE;","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"Ryan-Reno"},"content":" Skill expectedSkill \u003d new Skill(VALID_SKILL_1);","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedSkill, ParserUtil.parseSkill(skillWithWhitespace));","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22"},{"lineNumber":121,"author":{"gitId":"Ryan-Reno"},"content":" public void parseSkills_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSkills(null));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void parseSkills_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(ParserUtil.parseSkills(Collections.emptyList()).isEmpty());","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void parseSkills_collectionWithValidSkills_returnsSkillSet() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"Ryan-Reno"},"content":" Set\u003cSkill\u003e actualSkillSet \u003d ParserUtil.parseSkills(Arrays.asList(VALID_SKILL_1, VALID_SKILL_2));","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"Ryan-Reno"},"content":" Set\u003cSkill\u003e expectedSkillSet \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"Ryan-Reno"},"content":" new HashSet\u003cSkill\u003e(Arrays.asList(new Skill(VALID_SKILL_1), new Skill(VALID_SKILL_2)));","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22"},{"lineNumber":136,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedSkillSet, actualSkillSet);","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":140,"author":{"gitId":"ivan24004"},"content":" public void parseQueryableCourseMate_emptyString_throwsError() {","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"ivan24004"},"content":" assertThrows(ParseException.class, () -\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":142,"author":{"gitId":"ivan24004"},"content":" ParserUtil.parseQueryableCourseMate(\"\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"ivan24004"},"content":" public void parseQueryableCourseMate_garbageIndex_throwsError() {","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"ivan24004"},"content":" assertThrows(ParseException.class, () -\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"ivan24004"},"content":" ParserUtil.parseQueryableCourseMate(\"#ABC\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"ivan24004"},"content":" public void parseQueryableCourseMate_normalIndex_returnsIndexQueryableCourseMate() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"ivan24004"},"content":" assertTrue(ParserUtil.parseQueryableCourseMate(\"#123\").isIndex());","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":156,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":157,"author":{"gitId":"ivan24004"},"content":" public void parseQueryableCourseMate_normalName_returnsNameQueryableCourseMate() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":158,"author":{"gitId":"ivan24004"},"content":" assertTrue(ParserUtil.parseQueryableCourseMate(\"John Doe\").isName());","lastModifiedDate":"2024-03-19"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22"}],"authorContributionMap":{"Ryan-Reno":23,"tzaph":1,"-":121,"ivan24004":15}},{"path":"src/test/java/seedu/address/model/ContactListTest.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":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.ALICE;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-12"},{"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":"yuhinarita"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.exceptions.DuplicateCourseMateException;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"yuhinarita"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":"public class ContactListTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" private final ContactList contactList \u003d new ContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(Collections.emptyList(), contactList.getCourseMateList());","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e contactList.resetData(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" public void resetData_withValidReadOnlyContactList_replacesData() {","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" ContactList newData \u003d getTypicalContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" contactList.resetData(newData);","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(newData, contactList);","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" public void resetData_withDuplicateCourseMates_throwsDuplicateCourseMateException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" // Two courseMates with the same identity fields","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate editedAlice \u003d new CourseMateBuilder(ALICE)","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"yuhinarita"},"content":" .withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e newCourseMates \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"yuhinarita"},"content":" List\u003cGroup\u003e newGroups \u003d Arrays.asList(new Group(new Name(\"Grp1\"), Set.of(ALICE)));","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"yuhinarita"},"content":" ContactListStub newData \u003d new ContactListStub(newCourseMates, newGroups);","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(DuplicateCourseMateException.class, () -\u003e contactList.resetData(newData));","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" public void hasCourseMate_nullCourseMate_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e contactList.hasCourseMate(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" public void hasCourseMate_courseMateNotInAContactList_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(contactList.hasCourseMate(ALICE));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void hasCourseMate_courseMateInContactList_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" contactList.addCourseMate(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(contactList.hasCourseMate(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":" public void hasCourseMate_courseMateWithSameIdentityFieldsInContactList_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" contactList.addCourseMate(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate editedAlice \u003d new CourseMateBuilder(ALICE)","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"yuhinarita"},"content":" .withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(contactList.hasCourseMate(editedAlice));","lastModifiedDate":"2024-03-12"},{"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":"2017-09-01"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" public void getCourseMateList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e contactList.getCourseMateList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"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":"Ryan-Reno"},"content":" String expected \u003d ContactList.class.getCanonicalName()","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" + \"{courseMates\u003d\" + contactList.getCourseMateList() + \"}\";","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expected, contactList.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":96,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24"},{"lineNumber":97,"author":{"gitId":"Ryan-Reno"},"content":" * A stub ReadOnlyContactList whose courseMates list can violate interface constraints.","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":" private static class ContactListStub implements ReadOnlyContactList {","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":" private final ObservableList\u003cCourseMate\u003e courseMates \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"yuhinarita"},"content":" private final ObservableList\u003cGroup\u003e groups \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"yuhinarita"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"yuhinarita"},"content":" ContactListStub(Collection\u003cCourseMate\u003e courseMates, Collection\u003cGroup\u003e groups) {","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":" this.courseMates.setAll(courseMates);","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"yuhinarita"},"content":" this.groups.setAll(groups);","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":" public ObservableList\u003cCourseMate\u003e getCourseMateList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Ryan-Reno"},"content":" return courseMates;","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24"}],"authorContributionMap":{"yuhinarita":11,"Ryan-Reno":41,"-":63}},{"path":"src/test/java/seedu/address/model/GroupListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.getTypicalGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":" * Unit tests for the {@code GroupList} class.","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"public class GroupListTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" private final GroupList groupList \u003d new GroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e groupList.resetData(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" public void resetData_withValidReadOnlyGroupList_replacesData() {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" GroupList newData \u003d getTypicalGroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" groupList.resetData(newData);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" assertEquals(newData, groupList);","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" public void hasGroup_groupInGroupList_returnsTrue() {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" groupList.addGroup(SAMPLE_GROUP_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" assertTrue(groupList.hasGroup(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" public void getGroupList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e groupList.getGroupList().remove(0));","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":39}},{"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":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-03-19"},{"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":"benson1029"},"content":"import static org.junit.jupiter.api.Assertions.assertNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_COURSE_MATES;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.ALICE;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.BENSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09"},{"lineNumber":15,"author":{"gitId":"-"},"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":"ivan24004"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"benson1029"},"content":"import seedu.address.model.coursemate.ContainsKeywordPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.ContactListBuilder;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" assertEquals(new ContactList(), new ContactList(modelManager.getContactList()));","lastModifiedDate":"2024-03-12"},{"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":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" userPrefs.setContactListFilePath(Paths.get(\"contact/list/file/path\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" userPrefs.setContactListFilePath(Paths.get(\"new/contact/list/file/path\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","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":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.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":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" public void setContactListFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setContactListFilePath(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" public void setContactListFilePath_validPath_setsContactListFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":" Path path \u003d Paths.get(\"contact/list/file/path\");","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":" modelManager.setContactListFilePath(path);","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(path, modelManager.getContactListFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":" public void hasCourseMate_nullCourseMate_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasCourseMate(null));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void hasCourseMate_courseMateNotInContactList_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(modelManager.hasCourseMate(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" public void hasCourseMate_courseMateInContactList_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":" modelManager.addCourseMate(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(modelManager.hasCourseMate(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"ivan24004"},"content":" public void findCourseMate_byNameCourseMateInContactList_doesNotThrow() {","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":" modelManager.addCourseMate(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e modelManager.findCourseMate(new QueryableCourseMate(ALICE.getName())));","lastModifiedDate":"2024-03-19"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":101,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":102,"author":{"gitId":"ivan24004"},"content":" public void findCourseMate_byNameCourseMateNotInContactList_throwsError() {","lastModifiedDate":"2024-03-19"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":" assertThrows(RuntimeException.class, () -\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"ivan24004"},"content":" modelManager.findCourseMate(new QueryableCourseMate(new Name(\"RANDOM_STRING_12KAJ@\"))));","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"ivan24004"},"content":" public void findCourseMate_byIndexCourseMateNotInContactList_throwsError() {","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"ivan24004"},"content":" assertThrows(RuntimeException.class, () -\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"ivan24004"},"content":" modelManager.findCourseMate(new QueryableCourseMate(Index.fromZeroBased(0))));","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":114,"author":{"gitId":"Ryan-Reno"},"content":" public void getFilteredCourseMateList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredCourseMateList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":118,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":119,"author":{"gitId":"benson1029"},"content":" public void getRecentlyProcessedCourseMate_newModelManager_returnsNull() {","lastModifiedDate":"2024-03-15"},{"lineNumber":120,"author":{"gitId":"benson1029"},"content":" assertNull(modelManager.getRecentlyProcessedCourseMate());","lastModifiedDate":"2024-03-15"},{"lineNumber":121,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":122,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":123,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":124,"author":{"gitId":"benson1029"},"content":" public void setRecentlyProcessedCourseMate_setToAlice_returnsAlice() {","lastModifiedDate":"2024-03-15"},{"lineNumber":125,"author":{"gitId":"benson1029"},"content":" modelManager.setRecentlyProcessedCourseMate(ALICE);","lastModifiedDate":"2024-03-15"},{"lineNumber":126,"author":{"gitId":"benson1029"},"content":" assertEquals(ALICE, modelManager.getRecentlyProcessedCourseMate());","lastModifiedDate":"2024-03-15"},{"lineNumber":127,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":128,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":129,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-15"},{"lineNumber":130,"author":{"gitId":"benson1029"},"content":" public void setRecentlyProcessedCourseMate_nullCourseMate_returnsNull() {","lastModifiedDate":"2024-03-15"},{"lineNumber":131,"author":{"gitId":"benson1029"},"content":" modelManager.setRecentlyProcessedCourseMate(null);","lastModifiedDate":"2024-03-15"},{"lineNumber":132,"author":{"gitId":"benson1029"},"content":" assertNull(modelManager.getRecentlyProcessedCourseMate());","lastModifiedDate":"2024-03-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":137,"author":{"gitId":"Ryan-Reno"},"content":" ContactList contactList \u003d new ContactListBuilder().withCourseMate(ALICE).withCourseMate(BENSON).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"Ryan-Reno"},"content":" ContactList differentContactList \u003d new ContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"ivan24004"},"content":" GroupList groupList \u003d new GroupList();","lastModifiedDate":"2024-03-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"ivan24004"},"content":" modelManager \u003d new ModelManager(contactList, userPrefs, groupList);","lastModifiedDate":"2024-03-18"},{"lineNumber":144,"author":{"gitId":"ivan24004"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(contactList, userPrefs, groupList);","lastModifiedDate":"2024-03-18"},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":153,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":156,"author":{"gitId":"Ryan-Reno"},"content":" // different contactList -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"ivan24004"},"content":" assertFalse(modelManager.equals(new ModelManager(differentContactList, userPrefs, groupList)));","lastModifiedDate":"2024-03-18"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":159,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":160,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":161,"author":{"gitId":"benson1029"},"content":" modelManager.updateFilteredCourseMateList(new ContainsKeywordPredicate(String.join(\" \", keywords)));","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"ivan24004"},"content":" assertFalse(modelManager.equals(new ModelManager(contactList, userPrefs, groupList)));","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":165,"author":{"gitId":"Ryan-Reno"},"content":" modelManager.updateFilteredCourseMateList(PREDICATE_SHOW_ALL_COURSE_MATES);","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":168,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":169,"author":{"gitId":"Ryan-Reno"},"content":" differentUserPrefs.setContactListFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"ivan24004"},"content":" assertFalse(modelManager.equals(new ModelManager(contactList, differentUserPrefs, groupList)));","lastModifiedDate":"2024-03-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"Ryan-Reno":27,"benson1029":18,"-":100,"ivan24004":27}},{"path":"src/test/java/seedu/address/model/UserPrefsTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class UserPrefsTest {","lastModifiedDate":"2018-11-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":9,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":11,"author":{"gitId":"-"},"content":" UserPrefs userPref \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e userPref.setGuiSettings(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":13,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" public void setContactListFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e userPrefs.setContactListFilePath(null));","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":2,"-":19}},{"path":"src/test/java/seedu/address/model/coursemate/ContainsKeywordPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"benson1029"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"benson1029"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"benson1029"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"benson1029"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"benson1029"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"benson1029"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"benson1029"},"content":"public class ContainsKeywordPredicateTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"benson1029"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"benson1029"},"content":" String firstPredicateKeyword \u003d \"first\";","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"benson1029"},"content":" String secondPredicateKeyword \u003d \"first second\";","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate firstPredicate \u003d new ContainsKeywordPredicate(firstPredicateKeyword);","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate secondPredicate \u003d new ContainsKeywordPredicate(secondPredicateKeyword);","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"benson1029"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"benson1029"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"benson1029"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate firstPredicateCopy \u003d new ContainsKeywordPredicate(firstPredicateKeyword);","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"benson1029"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"benson1029"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"benson1029"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"benson1029"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"benson1029"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"benson1029"},"content":" // different courseMate -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"benson1029"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":" public void test_containsKeywords_returnsTrue() {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"benson1029"},"content":" // One word","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(\"Alice\");","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"benson1029"},"content":" assertTrue(predicate.test(new CourseMateBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"benson1029"},"content":" // Multiple words","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"benson1029"},"content":" predicate \u003d new ContainsKeywordPredicate(\"Alice Bob\");","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"benson1029"},"content":" assertTrue(predicate.test(new CourseMateBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"benson1029"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"benson1029"},"content":" predicate \u003d new ContainsKeywordPredicate(\"aLIce bOB\");","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"benson1029"},"content":" assertTrue(predicate.test(new CourseMateBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"benson1029"},"content":" // Empty keyword","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"benson1029"},"content":" predicate \u003d new ContainsKeywordPredicate(\"\");","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"benson1029"},"content":" assertTrue(predicate.test(new CourseMateBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"benson1029"},"content":" // Keyword matches skills","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"benson1029"},"content":" predicate \u003d new ContainsKeywordPredicate(\"Java\");","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"benson1029"},"content":" assertTrue(predicate.test(new CourseMateBuilder().withSkills(\"Java\").build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"benson1029"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"benson1029"},"content":" // Only partial keywords","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(\"Bob Carol\");","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"benson1029"},"content":" assertFalse(predicate.test(new CourseMateBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"benson1029"},"content":" // Non-matching keyword","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"benson1029"},"content":" predicate \u003d new ContainsKeywordPredicate(\"Carol\");","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"benson1029"},"content":" assertFalse(predicate.test(new CourseMateBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"benson1029"},"content":" // A substring of a skill","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"benson1029"},"content":" predicate \u003d new ContainsKeywordPredicate(\"Jav\");","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"benson1029"},"content":" assertFalse(predicate.test(new CourseMateBuilder().withSkills(\"Java\").build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"benson1029"},"content":" // Keywords match phone and email, but does not match name","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"benson1029"},"content":" predicate \u003d new ContainsKeywordPredicate(\"12345 alice@email.com\");","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"benson1029"},"content":" assertFalse(predicate.test(new CourseMateBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"benson1029"},"content":" .withEmail(\"alice@email.com\").build()));","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"benson1029"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"benson1029"},"content":" String keyword \u003d \"keyword1 keyword2\";","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"benson1029"},"content":" ContainsKeywordPredicate predicate \u003d new ContainsKeywordPredicate(keyword);","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"benson1029"},"content":" String expected \u003d ContainsKeywordPredicate.class.getCanonicalName() + \"{keyword\u003d\" + keyword + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"benson1029"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"benson1029":89}},{"path":"src/test/java/seedu/address/model/coursemate/CourseMateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_CPP;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.ALICE;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.BOB;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"public class CourseMateTest {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" CourseMate courseMate \u003d new CourseMateBuilder().build();","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e courseMate.getSkills().remove(0));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void isSameCourseMate() {","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(ALICE.isSameCourseMate(ALICE));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" assertFalse(ALICE.isSameCourseMate(null));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" CourseMate editedAlice \u003d new CourseMateBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"yuhinarita"},"content":" .withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(ALICE.isSameCourseMate(editedAlice));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" editedAlice \u003d new CourseMateBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(ALICE.isSameCourseMate(editedAlice));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" CourseMate editedBob \u003d new CourseMateBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(BOB.isSameCourseMate(editedBob));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" editedBob \u003d new CourseMateBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(BOB.isSameCourseMate(editedBob));","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" CourseMate aliceCopy \u003d new CourseMateBuilder(ALICE).build();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" // different courseMate -\u003e returns false","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" CourseMate editedAlice \u003d new CourseMateBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" editedAlice \u003d new CourseMateBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" editedAlice \u003d new CourseMateBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" // different skills -\u003e returns false","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"tzaph"},"content":" editedAlice \u003d new CourseMateBuilder(ALICE).withSkills(VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-19"},{"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":"Ryan-Reno"},"content":" String expected \u003d CourseMate.class.getCanonicalName()","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"yuhinarita"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", skills\u003d\" + ALICE.getSkills() + \"}\";","lastModifiedDate":"2024-03-15"},{"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":{"yuhinarita":2,"Ryan-Reno":27,"tzaph":2,"-":65}},{"path":"src/test/java/seedu/address/model/coursemate/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20"},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09"},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09"},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"Ryan-Reno":1,"-":87}},{"path":"src/test/java/seedu/address/model/coursemate/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"Ryan-Reno":1,"-":59}},{"path":"src/test/java/seedu/address/model/coursemate/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class PhoneTest {","lastModifiedDate":"2017-01-16"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04"},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30"},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2017-05-30"},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2019-03-14"},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidPhone() {","lastModifiedDate":"2017-01-16"},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null phone number","lastModifiedDate":"2017-12-04"},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2019-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2017-01-16"},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2017-01-16"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2017-01-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2017-01-16"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // valid phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2017-05-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2017-01-16"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2017-01-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2019-02-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2019-02-23"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2019-02-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2019-02-23"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16"}],"authorContributionMap":{"Ryan-Reno":1,"-":59}},{"path":"src/test/java/seedu/address/model/coursemate/QueryableCourseMateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"public class QueryableCourseMateTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" public void constructor_indexNull_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e new QueryableCourseMate((Index) null));","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" public void constructor_nameNull_throwsNullPointerException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e new QueryableCourseMate((Name) null));","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" public void isName_nameObject_returnsTrue() {","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" Name name \u003d new Name(\"John Doe\");","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate queryableCourseMate \u003d new QueryableCourseMate(name);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" assertTrue(queryableCourseMate.isName());","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" assertEquals(queryableCourseMate.getName(), name);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" public void isIndex_nameObject_returnsFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate queryableCourseMate \u003d new QueryableCourseMate(new Name(\"John Doe\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" assertFalse(queryableCourseMate.isIndex());","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" public void isName_indexObject_returnsFalse() {","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate queryableCourseMate \u003d new QueryableCourseMate(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" assertFalse(queryableCourseMate.isName());","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" public void isIndex_indexObject_returnsTrue() {","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate queryableCourseMate \u003d new QueryableCourseMate(index);","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" assertTrue(queryableCourseMate.isIndex());","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" assertEquals(queryableCourseMate.getIndex(), index);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" public void equals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate indexZero1 \u003d new QueryableCourseMate(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate indexZero2 \u003d new QueryableCourseMate(Index.fromZeroBased(0));","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate indexOne \u003d new QueryableCourseMate(Index.fromZeroBased(1));","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate hello1 \u003d new QueryableCourseMate(new Name(\"Hello\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate hello2 \u003d new QueryableCourseMate(new Name(\"Hello\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" QueryableCourseMate hi \u003d new QueryableCourseMate(new Name(\"Hi\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" assertEquals(indexZero1, indexZero2);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" assertEquals(indexZero2, indexZero1);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" assertNotEquals(indexZero1, indexOne);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" assertNotEquals(indexZero1, hello1);","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" assertEquals(hello1, hello2);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" assertEquals(hello2, hello1);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" assertNotEquals(hi, hello1);","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" assertNotEquals(hello1, indexOne);","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"ivan24004":73}},{"path":"src/test/java/seedu/address/model/coursemate/UniqueCourseMateListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.coursemate;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.ALICE;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.BOB;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.Collections;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.List;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.exceptions.CourseMateNotFoundException;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.exceptions.DuplicateCourseMateException;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.CourseMateBuilder;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"public class UniqueCourseMateListTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" private final UniqueCourseMateList uniqueCourseMateList \u003d new UniqueCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" public void contains_nullCourseMate_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCourseMateList.contains(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" public void contains_courseMateNotInList_returnsFalse() {","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(uniqueCourseMateList.contains(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" public void contains_courseMateInList_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(uniqueCourseMateList.contains(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" public void contains_courseMateWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate editedAlice \u003d new CourseMateBuilder(ALICE)","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"yuhinarita"},"content":" .withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" assertTrue(uniqueCourseMateList.contains(editedAlice));","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" public void add_nullCourseMate_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCourseMateList.add(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" public void add_duplicateCourseMate_throwsDuplicateCourseMateException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(DuplicateCourseMateException.class, () -\u003e uniqueCourseMateList.add(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" public void findCourseMate_courseMateDoesNotExist_throwsCourseMateNotFoundException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" assertThrows(CourseMateNotFoundException.class, () -\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" uniqueCourseMateList.findCourseMate(new Name(\"RANDOMSTRINGAJ124AJK\")));","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" public void findCourseMate_courseMateExists_courseMateFound() {","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e uniqueCourseMateList.findCourseMate(ALICE.getName()));","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate_nullTargetCourseMate_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCourseMateList.setCourseMate(null, ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate_nullEditedCourseMate_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCourseMateList.setCourseMate(ALICE, null));","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate_targetCourseMateNotInList_throwsCourseMateNotFoundException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(CourseMateNotFoundException.class, () -\u003e uniqueCourseMateList.setCourseMate(ALICE, ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate_editedCourseMateIsSameCourseMate_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.setCourseMate(ALICE, ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" UniqueCourseMateList expectedUniqueCourseMateList \u003d new UniqueCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":" expectedUniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedUniqueCourseMateList, uniqueCourseMateList);","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate_editedCourseMateHasSameIdentity_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":" CourseMate editedAlice \u003d new CourseMateBuilder(ALICE)","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"yuhinarita"},"content":" .withSkills(VALID_SKILL_JAVA).build();","lastModifiedDate":"2024-03-15"},{"lineNumber":102,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.setCourseMate(ALICE, editedAlice);","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"Ryan-Reno"},"content":" UniqueCourseMateList expectedUniqueCourseMateList \u003d new UniqueCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":" expectedUniqueCourseMateList.add(editedAlice);","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedUniqueCourseMateList, uniqueCourseMateList);","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate_editedCourseMateHasDifferentIdentity_success() {","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":111,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.setCourseMate(ALICE, BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":112,"author":{"gitId":"Ryan-Reno"},"content":" UniqueCourseMateList expectedUniqueCourseMateList \u003d new UniqueCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":113,"author":{"gitId":"Ryan-Reno"},"content":" expectedUniqueCourseMateList.add(BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":114,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedUniqueCourseMateList, uniqueCourseMateList);","lastModifiedDate":"2024-03-12"},{"lineNumber":115,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":116,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":117,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":118,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMate_editedCourseMateHasNonUniqueIdentity_throwsDuplicateCourseMateException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":119,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":120,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":121,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(DuplicateCourseMateException.class, () -\u003e uniqueCourseMateList.setCourseMate(ALICE, BOB));","lastModifiedDate":"2024-03-12"},{"lineNumber":122,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":123,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":124,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":125,"author":{"gitId":"Ryan-Reno"},"content":" public void remove_nullCourseMate_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":126,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCourseMateList.remove(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":127,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":128,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":129,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":130,"author":{"gitId":"Ryan-Reno"},"content":" public void remove_courseMateDoesNotExist_throwsCourseMateNotFoundException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":131,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(CourseMateNotFoundException.class, () -\u003e uniqueCourseMateList.remove(ALICE));","lastModifiedDate":"2024-03-12"},{"lineNumber":132,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":133,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":134,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":135,"author":{"gitId":"Ryan-Reno"},"content":" public void remove_existingCourseMate_removesCourseMate() {","lastModifiedDate":"2024-03-12"},{"lineNumber":136,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":137,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.remove(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":138,"author":{"gitId":"Ryan-Reno"},"content":" UniqueCourseMateList expectedUniqueCourseMateList \u003d new UniqueCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":139,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedUniqueCourseMateList, uniqueCourseMateList);","lastModifiedDate":"2024-03-12"},{"lineNumber":140,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":141,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":142,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":143,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMates_nullUniqueCourseMateList_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":144,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":145,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.setCourseMates((UniqueCourseMateList) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":146,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":147,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":148,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":149,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMates_uniqueCourseMateList_replacesOwnListWithProvidedUniqueCourseMateList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":150,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":151,"author":{"gitId":"Ryan-Reno"},"content":" UniqueCourseMateList expectedUniqueCourseMateList \u003d new UniqueCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":152,"author":{"gitId":"Ryan-Reno"},"content":" expectedUniqueCourseMateList.add(BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":153,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.setCourseMates(expectedUniqueCourseMateList);","lastModifiedDate":"2024-03-12"},{"lineNumber":154,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedUniqueCourseMateList, uniqueCourseMateList);","lastModifiedDate":"2024-03-12"},{"lineNumber":155,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":156,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":157,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":158,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMates_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":159,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueCourseMateList.setCourseMates((List\u003cCourseMate\u003e) null));","lastModifiedDate":"2024-03-12"},{"lineNumber":160,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":161,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":162,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":163,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMates_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":164,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.add(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":165,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e courseMateList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":166,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.setCourseMates(courseMateList);","lastModifiedDate":"2024-03-12"},{"lineNumber":167,"author":{"gitId":"Ryan-Reno"},"content":" UniqueCourseMateList expectedUniqueCourseMateList \u003d new UniqueCourseMateList();","lastModifiedDate":"2024-03-12"},{"lineNumber":168,"author":{"gitId":"Ryan-Reno"},"content":" expectedUniqueCourseMateList.add(BOB);","lastModifiedDate":"2024-03-12"},{"lineNumber":169,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(expectedUniqueCourseMateList, uniqueCourseMateList);","lastModifiedDate":"2024-03-12"},{"lineNumber":170,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":171,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":172,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":173,"author":{"gitId":"Ryan-Reno"},"content":" public void setCourseMates_listWithDuplicateCourseMates_throwsDuplicateCourseMateException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":174,"author":{"gitId":"Ryan-Reno"},"content":" List\u003cCourseMate\u003e listWithDuplicateCourseMates \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":175,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(DuplicateCourseMateException.class, () -\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":176,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.setCourseMates(listWithDuplicateCourseMates));","lastModifiedDate":"2024-03-12"},{"lineNumber":177,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":178,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":179,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":180,"author":{"gitId":"Ryan-Reno"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":181,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":182,"author":{"gitId":"Ryan-Reno"},"content":" uniqueCourseMateList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-03-12"},{"lineNumber":183,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":184,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":185,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":186,"author":{"gitId":"Ryan-Reno"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-12"},{"lineNumber":187,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(uniqueCourseMateList.asUnmodifiableObservableList().toString(), uniqueCourseMateList.toString());","lastModifiedDate":"2024-03-12"},{"lineNumber":188,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":189,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"yuhinarita":2,"Ryan-Reno":174,"ivan24004":13}},{"path":"src/test/java/seedu/address/model/group/GroupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_NAME_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_MEMBER_SET_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_MEMBER_SET_2;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" * Unit tests for the {@code Group} class.","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"public class GroupTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" public void constructor_nullParameter_throwsErrors() {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" assertThrows(RuntimeException.class, () -\u003e new Group(null, null));","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" assertThrows(RuntimeException.class, () -\u003e new Group(null, SAMPLE_MEMBER_SET_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" assertThrows(RuntimeException.class, () -\u003e new Group(SAMPLE_GROUP_NAME_1, null));","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" assertThrows(RuntimeException.class, () -\u003e new Group(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" public void equals_differentGroupsWithSameName_isSameGroupButNotEquals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" Group group1 \u003d new Group(SAMPLE_GROUP_NAME_1, SAMPLE_MEMBER_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" Group group2 \u003d new Group(SAMPLE_GROUP_NAME_1, SAMPLE_MEMBER_SET_2);","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" assertTrue(group1.isSameGroup(group2));","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" assertNotEquals(group1, group2);","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" public void equals_sameGroupsWithDifferentObjects_isSameGroupAndEquals() {","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" Group group1 \u003d new Group(SAMPLE_GROUP_NAME_1, SAMPLE_MEMBER_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" Group group2 \u003d new Group(SAMPLE_GROUP_NAME_1, SAMPLE_MEMBER_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" assertTrue(group1.isSameGroup(group2));","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" assertEquals(group1, group2);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" public void toString_validGroup_doesNotThrow() {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" Group group \u003d new Group(SAMPLE_GROUP_NAME_1, SAMPLE_MEMBER_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(group::toString);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":49}},{"path":"src/test/java/seedu/address/model/group/UniqueGroupListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_2;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.exceptions.DuplicateGroupException;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.exceptions.GroupNotFoundException;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" * Unit tests for the {@code UniqueGroupList} class.","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"public class UniqueGroupListTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" private final UniqueGroupList uniqueGroupList \u003d new UniqueGroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" public void contains_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.contains(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" public void contains_groupNotInList_returnsFalse() {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" assertFalse(uniqueGroupList.contains(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" public void add_sameGroupTwice_doesNotThrowThenThrows() {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e uniqueGroupList.add(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" assertThrows(DuplicateGroupException.class, () -\u003e uniqueGroupList.add(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" public void setGroup_groupNotInList_throwsGroupNotFoundException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" assertThrows(GroupNotFoundException.class, () -\u003e uniqueGroupList.setGroup(SAMPLE_GROUP_1, SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":" public void setGroup_newValueInList_throwsDuplicateGroupException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" uniqueGroupList.add(SAMPLE_GROUP_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" uniqueGroupList.add(SAMPLE_GROUP_2);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" assertThrows(DuplicateGroupException.class, () -\u003e uniqueGroupList.setGroup(SAMPLE_GROUP_1, SAMPLE_GROUP_2));","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" public void setGroup_newValueNotInList_noExceptions() {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" uniqueGroupList.add(SAMPLE_GROUP_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e uniqueGroupList.setGroup(SAMPLE_GROUP_1, SAMPLE_GROUP_2));","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" public void remove_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.remove(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" public void remove_groupNotInList_throwsGroupNotFoundException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" assertThrows(GroupNotFoundException.class, () -\u003e uniqueGroupList.remove(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" public void remove_groupInList_doesNotThrow() {","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" uniqueGroupList.add(SAMPLE_GROUP_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e uniqueGroupList.remove(SAMPLE_GROUP_1));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" public void setGroups_emptyGroupList_doesNotThrow() {","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e uniqueGroupList.setGroups(new UniqueGroupList()));","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":" assertDoesNotThrow(() -\u003e uniqueGroupList.setGroups(new ArrayList\u003c\u003e()));","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" public void setGroups_groupListWithDuplicates_throwsDuplicateGroupException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":" assertThrows(DuplicateGroupException.class, () -\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" uniqueGroupList.setGroups(new ArrayList\u003c\u003e(Arrays.asList(SAMPLE_GROUP_1, SAMPLE_GROUP_1))));","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":" assertEquals(uniqueGroupList.asUnmodifiableObservableList().toString(), uniqueGroupList.toString());","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":90}},{"path":"src/test/java/seedu/address/model/skill/SkillTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.model.skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"public class SkillTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e new Skill(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Ryan-Reno":13}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedCourseMateTest.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":"Ryan-Reno"},"content":"import static seedu.address.storage.JsonAdaptedCourseMate.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.BENSON;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","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":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"public class JsonAdaptedCourseMateTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","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":"Ryan-Reno"},"content":" private static final List\u003cJsonAdaptedSkill\u003e VALID_SKILLS \u003d BENSON.getSkills().stream()","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" .map(JsonAdaptedSkill::new)","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" public void toModelType_validCourseMateDetails_returnsCourseMate() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" JsonAdaptedCourseMate courseMate \u003d new JsonAdaptedCourseMate(BENSON);","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(BENSON, courseMate.toModelType());","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" JsonAdaptedCourseMate courseMate \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"yuhinarita"},"content":" new JsonAdaptedCourseMate(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_SKILLS);","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(IllegalValueException.class, expectedMessage, courseMate::toModelType);","lastModifiedDate":"2024-03-12"},{"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 toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" JsonAdaptedCourseMate courseMate \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"yuhinarita"},"content":" new JsonAdaptedCourseMate(null, VALID_PHONE, VALID_EMAIL, VALID_SKILLS);","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(IllegalValueException.class, expectedMessage, courseMate::toModelType);","lastModifiedDate":"2024-03-12"},{"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_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" JsonAdaptedCourseMate courseMate \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"yuhinarita"},"content":" new JsonAdaptedCourseMate(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_SKILLS);","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(IllegalValueException.class, expectedMessage, courseMate::toModelType);","lastModifiedDate":"2024-03-12"},{"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_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" JsonAdaptedCourseMate courseMate \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"yuhinarita"},"content":" new JsonAdaptedCourseMate(VALID_NAME, null, VALID_EMAIL, VALID_SKILLS);","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(IllegalValueException.class, expectedMessage, courseMate::toModelType);","lastModifiedDate":"2024-03-12"},{"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_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"Ryan-Reno"},"content":" JsonAdaptedCourseMate courseMate \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"yuhinarita"},"content":" new JsonAdaptedCourseMate(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_SKILLS);","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(IllegalValueException.class, expectedMessage, courseMate::toModelType);","lastModifiedDate":"2024-03-12"},{"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_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" JsonAdaptedCourseMate courseMate \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"yuhinarita"},"content":" new JsonAdaptedCourseMate(VALID_NAME, VALID_PHONE, null, VALID_SKILLS);","lastModifiedDate":"2024-03-15"},{"lineNumber":80,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(IllegalValueException.class, expectedMessage, courseMate::toModelType);","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"yuhinarita":6,"Ryan-Reno":23,"-":55}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedGroupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.storage.JsonAdaptedGroup.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"public class JsonAdaptedGroupTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" private static final String VALID_NAME \u003d SAMPLE_GROUP_1.getName().toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" private static final String INVALID_NAME \u003d \"gr@up 1\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" private static final List\u003cJsonAdaptedCourseMate\u003e VALID_MEMBERS \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":" SAMPLE_GROUP_1.asUnmodifiableObservableList().stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" .map(JsonAdaptedCourseMate::new)","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" public void toModelType_validGroupDetails_returnsGroup() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" JsonAdaptedGroup group \u003d new JsonAdaptedGroup(SAMPLE_GROUP_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" assertEquals(SAMPLE_GROUP_1, group.toModelType());","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" JsonAdaptedGroup group \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" new JsonAdaptedGroup(INVALID_NAME, VALID_MEMBERS);","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":" assertThrows(IllegalValueException.class, expectedMessage, group::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" JsonAdaptedGroup group \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":" new JsonAdaptedGroup(null, VALID_MEMBERS);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" assertThrows(IllegalValueException.class, expectedMessage, group::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":45}},{"path":"src/test/java/seedu/address/storage/JsonContactListStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.ALICE;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.HOON;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.IDA;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"public class JsonContactListStorageTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonContactListStorageTest\");","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" @TempDir","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" public Path testFolder;","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" public void readContactList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e readContactList(null));","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" private java.util.Optional\u003cReadOnlyContactList\u003e readContactList(String filePath) throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" return new JsonContactListStorage(Paths.get(filePath)).readContactList(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" : null;","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" assertFalse(readContactList(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(DataLoadingException.class, () -\u003e readContactList(\"notJsonFormatContactList.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" public void readContactList_invalidCourseMateContactList_throwDataLoadingException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(DataLoadingException.class, () -\u003e readContactList(\"invalidCourseMateContactList.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" public void readContactList_invalidAndValidCourseMateContactList_throwDataLoadingException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(DataLoadingException.class, () -\u003e readContactList(\"invalidAndValidCourseMateContactList.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" public void readAndSaveContactList_allInOrder_success() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" Path filePath \u003d testFolder.resolve(\"TempContactList.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" ContactList original \u003d getTypicalContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Ryan-Reno"},"content":" JsonContactListStorage jsonContactListStorage \u003d new JsonContactListStorage(filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" // Save in new file and read back","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Ryan-Reno"},"content":" jsonContactListStorage.saveContactList(original, filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Ryan-Reno"},"content":" ReadOnlyContactList readBack \u003d jsonContactListStorage.readContactList(filePath).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(original, new ContactList(readBack));","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":" original.addCourseMate(HOON);","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":" original.removeCourseMate(ALICE);","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":" jsonContactListStorage.saveContactList(original, filePath);","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":" readBack \u003d jsonContactListStorage.readContactList(filePath).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(original, new ContactList(readBack));","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" // Save and read without specifying file path","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" original.addCourseMate(IDA);","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" jsonContactListStorage.saveContactList(original); // file path not specified","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" readBack \u003d jsonContactListStorage.readContactList().get(); // file path not specified","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(original, new ContactList(readBack));","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" public void saveContactList_nullContactList_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e saveContactList(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" * Saves {@code ContactList} at the specified {@code filePath}.","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":97,"author":{"gitId":"Ryan-Reno"},"content":" private void saveContactList(ReadOnlyContactList contactList, String filePath) {","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Ryan-Reno"},"content":" try {","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":" new JsonContactListStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-12"},{"lineNumber":100,"author":{"gitId":"Ryan-Reno"},"content":" .saveContactList(contactList, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-12"},{"lineNumber":101,"author":{"gitId":"Ryan-Reno"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-03-12"},{"lineNumber":102,"author":{"gitId":"Ryan-Reno"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2024-03-12"},{"lineNumber":103,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":104,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":105,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":106,"author":{"gitId":"Ryan-Reno"},"content":" @Test","lastModifiedDate":"2024-03-12"},{"lineNumber":107,"author":{"gitId":"Ryan-Reno"},"content":" public void saveContactList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-12"},{"lineNumber":108,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(NullPointerException.class, () -\u003e saveContactList(new ContactList(), null));","lastModifiedDate":"2024-03-12"},{"lineNumber":109,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":110,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Ryan-Reno":110}},{"path":"src/test/java/seedu/address/storage/JsonGroupListStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_GROUP_1;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.SAMPLE_UNINCLUDED_GROUP;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.getTypicalGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ReadOnlyGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"public class JsonGroupListStorageTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonGroupListStorageTest\");","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" @TempDir","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" public Path testFolder;","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" public void readGroupList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e readGroupList(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" private java.util.Optional\u003cReadOnlyGroupList\u003e readGroupList(String filePath) throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" return new JsonGroupListStorage(Paths.get(filePath)).readGroupList(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":" : null;","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" assertFalse(readGroupList(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" assertThrows(DataLoadingException.class, () -\u003e readGroupList(\"notJsonFormatGroupList.json\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":" public void readGroupList_invalidGroupGroupList_throwDataLoadingException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" assertThrows(DataLoadingException.class, () -\u003e readGroupList(\"invalidGroupGroupList.json\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" public void readGroupList_invalidAndValidGroupGroupList_throwDataLoadingException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":" assertThrows(DataLoadingException.class, () -\u003e readGroupList(\"invalidAndValidGroupGroupList.json\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" public void readAndSaveGroupList_allInOrder_success() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" Path filePath \u003d testFolder.resolve(\"TempGroupList.json\");","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" GroupList original \u003d getTypicalGroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" JsonGroupListStorage jsonGroupListStorage \u003d new JsonGroupListStorage(filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" // Save in new file and read back","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" jsonGroupListStorage.saveGroupList(original, filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":" ReadOnlyGroupList readBack \u003d jsonGroupListStorage.readGroupList(filePath).get();","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" assertEquals(original, new GroupList(readBack));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ivan24004"},"content":" original.addGroup(SAMPLE_UNINCLUDED_GROUP);","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" original.removeGroup(SAMPLE_GROUP_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" jsonGroupListStorage.saveGroupList(original, filePath);","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":" readBack \u003d jsonGroupListStorage.readGroupList(filePath).get();","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" assertEquals(original, new GroupList(readBack));","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" // Save and read without specifying file path","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" original.addGroup(SAMPLE_GROUP_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":" jsonGroupListStorage.saveGroupList(original); // file path not specified","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" readBack \u003d jsonGroupListStorage.readGroupList().get(); // file path not specified","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":" assertEquals(original, new GroupList(readBack));","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"ivan24004"},"content":" public void saveGroupList_nullGroupList_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e saveGroupList(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"ivan24004"},"content":" * Saves {@code GroupList} at the specified {@code filePath}.","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ivan24004"},"content":" private void saveGroupList(ReadOnlyGroupList groupList, String filePath) {","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"ivan24004"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":98,"author":{"gitId":"ivan24004"},"content":" new JsonGroupListStorage(Paths.get(filePath))","lastModifiedDate":"2024-03-20"},{"lineNumber":99,"author":{"gitId":"ivan24004"},"content":" .saveGroupList(groupList, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-20"},{"lineNumber":100,"author":{"gitId":"ivan24004"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"ivan24004"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"ivan24004"},"content":" public void saveGroupList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"ivan24004"},"content":" assertThrows(NullPointerException.class, () -\u003e saveGroupList(new GroupList(), null));","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":109,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":109}},{"path":"src/test/java/seedu/address/storage/JsonSerializableContactListTest.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":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.testutil.TypicalCourseMates;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"public class JsonSerializableContactListTest {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" private static final Path TEST_DATA_FOLDER \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":" Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableContactListTest\");","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" private static final Path TYPICAL_COURSE_MATES_FILE \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":" TEST_DATA_FOLDER.resolve(\"typicalCourseMatesContactList.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" private static final Path INVALID_COURSE_MATES_FILE \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" TEST_DATA_FOLDER.resolve(\"invalidCourseMateContactList.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" private static final Path DUPLICATE_COURSE_MATES_FILE \u003d","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" TEST_DATA_FOLDER.resolve(\"duplicateCourseMateContactList.json\");","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" public void toModelType_typicalCourseMatesFile_success() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" JsonSerializableContactList dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_COURSE_MATES_FILE,","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" JsonSerializableContactList.class).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" ContactList contactListFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" ContactList typicalCourseMatesContactList \u003d TypicalCourseMates.getTypicalContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(contactListFromFile, typicalCourseMatesContactList);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" public void toModelType_invalidCourseMateFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" JsonSerializableContactList dataFromFile \u003d JsonUtil.readJsonFile(INVALID_COURSE_MATES_FILE,","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" JsonSerializableContactList.class).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"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":"Ryan-Reno"},"content":" public void toModelType_duplicateCourseMates_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" JsonSerializableContactList dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_COURSE_MATES_FILE,","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" JsonSerializableContactList.class).get();","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" assertThrows(IllegalValueException.class, JsonSerializableContactList.MESSAGE_DUPLICATE_COURSE_MATE,","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"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"}],"authorContributionMap":{"Ryan-Reno":24,"-":27}},{"path":"src/test/java/seedu/address/storage/JsonSerializableGroupListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"public class JsonSerializableGroupListTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":" private static final Path TEST_DATA_FOLDER \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":" Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableGroupListTest\");","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":" private static final Path INVALID_GROUPS_FILE \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":" TEST_DATA_FOLDER.resolve(\"invalidGroupGroupList.json\");","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":" private static final Path DUPLICATE_GROUPS_FILE \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":" TEST_DATA_FOLDER.resolve(\"duplicateGroupGroupList.json\");","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":" public void toModelType_invalidGroupFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":" JsonSerializableGroupList dataFromFile \u003d JsonUtil.readJsonFile(INVALID_GROUPS_FILE,","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":" JsonSerializableGroupList.class).get();","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" public void toModelType_duplicateGroups_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" JsonSerializableGroupList dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_GROUPS_FILE,","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" JsonSerializableGroupList.class).get();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" assertThrows(IllegalValueException.class, JsonSerializableGroupList.MESSAGE_DUPLICATE_GROUP,","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":35}},{"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":"Ryan-Reno"},"content":" userPrefs.setContactListFilePath(Paths.get(\"contactlist.json\"));","lastModifiedDate":"2024-03-12"},{"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":{"Ryan-Reno":1,"-":122}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.testutil.TypicalCourseMates.getTypicalContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalGroups.getTypicalGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"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":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ReadOnlyContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.ReadOnlyGroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28"},{"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-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" JsonContactListStorage contactListStorage \u003d new JsonContactListStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":" JsonGroupListStorage groupListStorage \u003d new JsonGroupListStorage(getTempFilePath(\"groups\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" storageManager \u003d new StorageManager(contactListStorage, userPrefsStorage, groupListStorage);","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"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":"Ryan-Reno"},"content":" public void contactListReadSave() throws Exception {","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * {@link JsonContactListStorage} class.","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonContactListStorageTest} class.","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" ContactList original \u003d getTypicalContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" storageManager.saveContactList(original);","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" ReadOnlyContactList retrieved \u003d storageManager.readContactList().get();","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" assertEquals(original, new ContactList(retrieved));","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" public void getContactListFilePath() {","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" assertNotNull(storageManager.getContactListFilePath());","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":" public void groupListReadSave() throws Exception {","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ivan24004"},"content":" /*","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" * {@link JsonGroupListStorage} class.","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonGroupListStorageTest} class.","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":" GroupList original \u003d getTypicalGroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" storageManager.saveGroupList(original);","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" ReadOnlyGroupList retrieved \u003d storageManager.readGroupList().get();","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":" assertEquals(original, new GroupList(retrieved));","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"ivan24004"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ivan24004"},"content":" public void getGroupListFilePath() {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ivan24004"},"content":" assertNotNull(storageManager.getGroupListFilePath());","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Ryan-Reno":13,"-":54,"ivan24004":22}},{"path":"src/test/java/seedu/address/testutil/AddSkillDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand.AddSkillDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":" * A utility class to help with building AddSkillDescriptor objects.","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"public class AddSkillDescriptorBuilder {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":" private AddSkillCommand.AddSkillDescriptor descriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":" public AddSkillDescriptorBuilder() {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":" descriptor \u003d new AddSkillDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":" public AddSkillDescriptorBuilder(AddSkillCommand.AddSkillDescriptor descriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":" this.descriptor \u003d new AddSkillCommand.AddSkillDescriptor(descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"tzaph"},"content":" * Returns an {@code AddSkillDescriptor} with fields containing {@code courseMate}\u0027s details","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":" public AddSkillDescriptorBuilder(CourseMate courseMate) {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":" descriptor \u003d new AddSkillCommand.AddSkillDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":" descriptor.setSkills(courseMate.getSkills());","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" * Parses the {@code skills} into a {@code Set\u003cSkill\u003e} and set it to the {@code AddSkillDescriptor}","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":" * that we are building.","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":" public AddSkillDescriptorBuilder withSkills(String... skills) {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e skillSet \u003d Stream.of(skills).map(Skill::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" descriptor.setSkills(skillSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" public AddSkillCommand.AddSkillDescriptor build() {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" return descriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"tzaph":48}},{"path":"src/test/java/seedu/address/testutil/ContactListBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":" * A utility class to help with building ContactList objects.","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":" * {@code ContactList ab \u003d new ContactListBuilder().withCourseMate(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"public class ContactListBuilder {","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":" private ContactList contactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":" public ContactListBuilder() {","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" contactList \u003d new ContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":" public ContactListBuilder(ContactList contactList) {","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" this.contactList \u003d contactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" * Adds a new {@code CourseMate} to the {@code ContactList} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" public ContactListBuilder withCourseMate(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" contactList.addCourseMate(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" public ContactList build() {","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" return contactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Ryan-Reno":34}},{"path":"src/test/java/seedu/address/testutil/CourseMateBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":" * A utility class to help with building CourseMate objects.","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"public class CourseMateBuilder {","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" private Name name;","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" private Phone phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" private Email email;","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" private Set\u003cSkill\u003e skills;","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" * Creates a {@code CourseMateBuilder} with the default details.","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMateBuilder() {","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" skills \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" * Initializes the CourseMateBuilder with the data of {@code courseMateToCopy}.","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMateBuilder(CourseMate courseMateToCopy) {","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" name \u003d courseMateToCopy.getName();","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" phone \u003d courseMateToCopy.getPhone();","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" email \u003d courseMateToCopy.getEmail();","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" skills \u003d new HashSet\u003c\u003e(courseMateToCopy.getSkills());","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":" * Sets the {@code Name} of the {@code CourseMate} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMateBuilder withName(String name) {","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":" * Parses the {@code skills} into a {@code Set\u003cSkill\u003e} and set it to the {@code CourseMate} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMateBuilder withSkills(String ... skills) {","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" this.skills \u003d SampleDataUtil.getSkillSet(skills);","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":" * Parses the {@code skills} into a {@code Set\u003cSkill\u003e} and","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" * remove it from the {@code CourseMate} that we are building.","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" public CourseMateBuilder removeSkills(String ... skills) {","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e removeSet \u003d SampleDataUtil.getSkillSet(skills);","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e newSet \u003d new HashSet\u003cSkill\u003e();","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" for (Skill skill : this.skills) {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":" if (!removeSet.contains(skill)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":" newSet.add(skill);","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":" this.skills \u003d newSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":80,"author":{"gitId":"Ryan-Reno"},"content":" * Sets the {@code Phone} of the {@code CourseMate} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":81,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":82,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMateBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-12"},{"lineNumber":83,"author":{"gitId":"Ryan-Reno"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-03-12"},{"lineNumber":84,"author":{"gitId":"Ryan-Reno"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":85,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":86,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":87,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":88,"author":{"gitId":"Ryan-Reno"},"content":" * Sets the {@code Email} of the {@code CourseMate} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":89,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":90,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMateBuilder withEmail(String email) {","lastModifiedDate":"2024-03-12"},{"lineNumber":91,"author":{"gitId":"Ryan-Reno"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-03-12"},{"lineNumber":92,"author":{"gitId":"Ryan-Reno"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":93,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":94,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":95,"author":{"gitId":"Ryan-Reno"},"content":" public CourseMate build() {","lastModifiedDate":"2024-03-12"},{"lineNumber":96,"author":{"gitId":"yuhinarita"},"content":" return new CourseMate(name, phone, email, skills);","lastModifiedDate":"2024-03-15"},{"lineNumber":97,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":98,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":99,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"yuhinarita":1,"Ryan-Reno":82,"tzaph":16}},{"path":"src/test/java/seedu/address/testutil/CourseMateUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SKILL;","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.AddSkillCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":" * A utility class for CourseMate.","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":"public class CourseMateUtil {","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" * Returns an add command string for adding the {@code courseMate}.","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":" public static String getAddCommand(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" return AddCommand.COMMAND_WORD + \" \" + getCourseMateDetails(courseMate);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Returns the part of command string for the given {@code courseMate}\u0027s details.","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" public static String getCourseMateDetails(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":" sb.append(courseMate.getName().fullName + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":" sb.append(PREFIX_PHONE + \" \" + courseMate.getPhone().value + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" sb.append(PREFIX_EMAIL + \" \" + courseMate.getEmail().value + \" \");","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" courseMate.getSkills().stream().forEach(","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" s -\u003e sb.append(PREFIX_SKILL + \" \" + s.skillName + \" \")","lastModifiedDate":"2024-03-18"},{"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":"Ryan-Reno"},"content":" * Returns the part of command string for the given {@code EditCourseMateDescriptor}\u0027s details.","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" public static String getEditCourseMateDescriptorDetails(EditCommand.EditCourseMateDescriptor descriptor) {","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(\" \").append(name.fullName).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"tzaph"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(\" \").append(phone.value).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"tzaph"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(\" \").append(email.value).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" if (descriptor.getSkills().isPresent()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" Set\u003cSkill\u003e skills \u003d descriptor.getSkills().get();","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" if (skills.isEmpty()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" sb.append(PREFIX_SKILL);","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"tzaph"},"content":" skills.forEach(s -\u003e sb.append(PREFIX_SKILL).append(\" \").append(s.skillName).append(\" \"));","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":61,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"tzaph"},"content":" * Returns the part of command string for the given {@code AddSkillDescriptor}\u0027s details.","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"tzaph"},"content":" public static String getAddSkillDescriptorDetails(AddSkillCommand.AddSkillDescriptor descriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"tzaph"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"tzaph"},"content":" if (descriptor.getSkills().isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e skills \u003d descriptor.getSkills().get();","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"tzaph"},"content":" if (skills.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"tzaph"},"content":" sb.append(PREFIX_SKILL);","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"tzaph"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"tzaph"},"content":" skills.forEach(s -\u003e sb.append(PREFIX_SKILL).append(\" \").append(s.skillName).append(\" \"));","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"tzaph"},"content":" return sb.toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"tzaph"},"content":" * Returns the part of command string for the given {@code DeleteSkillDescriptor}\u0027s details.","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"tzaph"},"content":" public static String getDeleteSkillDescriptorDetails(DeleteSkillCommand.DeleteSkillDescriptor descriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"tzaph"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"tzaph"},"content":" if (descriptor.getSkills().isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e skills \u003d descriptor.getSkills().get();","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"tzaph"},"content":" if (skills.isEmpty()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"tzaph"},"content":" sb.append(PREFIX_SKILL);","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"tzaph"},"content":" } else {","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"tzaph"},"content":" skills.forEach(s -\u003e sb.append(PREFIX_SKILL).append(\" \").append(s.skillName).append(\" \"));","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"tzaph"},"content":" return sb.toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"Ryan-Reno":18,"tzaph":42,"-":33}},{"path":"src/test/java/seedu/address/testutil/DeleteSkillDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"tzaph"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"tzaph"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"tzaph"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"tzaph"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"tzaph"},"content":"import seedu.address.logic.commands.DeleteSkillCommand.DeleteSkillDescriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"tzaph"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"tzaph"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"tzaph"},"content":" * A utility class to help with building DeleteSkillDescriptor objects.","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"tzaph"},"content":"public class DeleteSkillDescriptorBuilder {","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"tzaph"},"content":" private DeleteSkillCommand.DeleteSkillDescriptor descriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"tzaph"},"content":" public DeleteSkillDescriptorBuilder() {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"tzaph"},"content":" descriptor \u003d new DeleteSkillDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"tzaph"},"content":" public DeleteSkillDescriptorBuilder(DeleteSkillCommand.DeleteSkillDescriptor descriptor) {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"tzaph"},"content":" this.descriptor \u003d new DeleteSkillCommand.DeleteSkillDescriptor(descriptor);","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"tzaph"},"content":" * Returns an {@code DeleteSkillDescriptor} with fields containing {@code courseMate}\u0027s details","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"tzaph"},"content":" public DeleteSkillDescriptorBuilder(CourseMate courseMate) {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"tzaph"},"content":" descriptor \u003d new DeleteSkillCommand.DeleteSkillDescriptor();","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"tzaph"},"content":" descriptor.setSkills(courseMate.getSkills());","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"tzaph"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"tzaph"},"content":" * Parses the {@code skills} into a {@code Set\u003cSkill\u003e} and set it to the {@code DeleteSkillDescriptor}","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"tzaph"},"content":" * that we are building.","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"tzaph"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"tzaph"},"content":" public DeleteSkillDescriptorBuilder withSkills(String... skills) {","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"tzaph"},"content":" Set\u003cSkill\u003e skillSet \u003d Stream.of(skills).map(Skill::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"tzaph"},"content":" descriptor.setSkills(skillSet);","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"tzaph"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"tzaph"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"tzaph"},"content":" public DeleteSkillCommand.DeleteSkillDescriptor build() {","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"tzaph"},"content":" return descriptor;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"tzaph"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"tzaph"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"tzaph":48}},{"path":"src/test/java/seedu/address/testutil/EditCourseMateDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Ryan-Reno"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-12"},{"lineNumber":2,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":3,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-12"},{"lineNumber":4,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-12"},{"lineNumber":5,"author":{"gitId":"Ryan-Reno"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-12"},{"lineNumber":6,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":7,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-12"},{"lineNumber":8,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.logic.commands.EditCommand.EditCourseMateDescriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Email;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.Phone;","lastModifiedDate":"2024-03-12"},{"lineNumber":13,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.skill.Skill;","lastModifiedDate":"2024-03-12"},{"lineNumber":14,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":15,"author":{"gitId":"Ryan-Reno"},"content":"/**","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":" * A utility class to help with building EditCourseMateDescriptor objects.","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"Ryan-Reno"},"content":"public class EditCourseMateDescriptorBuilder {","lastModifiedDate":"2024-03-12"},{"lineNumber":19,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" private EditCommand.EditCourseMateDescriptor descriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":" public EditCourseMateDescriptorBuilder() {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"Ryan-Reno"},"content":" descriptor \u003d new EditCourseMateDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":26,"author":{"gitId":"Ryan-Reno"},"content":" public EditCourseMateDescriptorBuilder(EditCommand.EditCourseMateDescriptor descriptor) {","lastModifiedDate":"2024-03-12"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" this.descriptor \u003d new EditCommand.EditCourseMateDescriptor(descriptor);","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" * Returns an {@code EditCourseMateDescriptor} with fields containing {@code courseMate}\u0027s details","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" public EditCourseMateDescriptorBuilder(CourseMate courseMate) {","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"Ryan-Reno"},"content":" descriptor \u003d new EditCommand.EditCourseMateDescriptor();","lastModifiedDate":"2024-03-12"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" descriptor.setName(courseMate.getName());","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"Ryan-Reno"},"content":" descriptor.setPhone(courseMate.getPhone());","lastModifiedDate":"2024-03-12"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" descriptor.setEmail(courseMate.getEmail());","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"Ryan-Reno"},"content":" descriptor.setSkills(courseMate.getSkills());","lastModifiedDate":"2024-03-12"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":41,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":42,"author":{"gitId":"Ryan-Reno"},"content":" * Sets the {@code Name} of the {@code EditCourseMateDescriptor} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"Ryan-Reno"},"content":" public EditCourseMateDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-03-12"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"Ryan-Reno"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":47,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":48,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":49,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" * Sets the {@code Phone} of the {@code EditCourseMateDescriptor} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" public EditCourseMateDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"Ryan-Reno"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":55,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":56,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":57,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":58,"author":{"gitId":"Ryan-Reno"},"content":" * Sets the {@code Email} of the {@code EditCourseMateDescriptor} that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":60,"author":{"gitId":"Ryan-Reno"},"content":" public EditCourseMateDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2024-03-12"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"Ryan-Reno"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" /**","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" * Parses the {@code skills} into a {@code Set\u003cSkill\u003e} and set it to the {@code EditCourseMateDescriptor}","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"Ryan-Reno"},"content":" * that we are building.","lastModifiedDate":"2024-03-12"},{"lineNumber":68,"author":{"gitId":"Ryan-Reno"},"content":" */","lastModifiedDate":"2024-03-12"},{"lineNumber":69,"author":{"gitId":"Ryan-Reno"},"content":" public EditCourseMateDescriptorBuilder withSkills(String... skills) {","lastModifiedDate":"2024-03-12"},{"lineNumber":70,"author":{"gitId":"Ryan-Reno"},"content":" Set\u003cSkill\u003e skillSet \u003d Stream.of(skills).map(Skill::new).collect(Collectors.toSet());","lastModifiedDate":"2024-03-12"},{"lineNumber":71,"author":{"gitId":"Ryan-Reno"},"content":" descriptor.setSkills(skillSet);","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"Ryan-Reno"},"content":" return this;","lastModifiedDate":"2024-03-12"},{"lineNumber":73,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":74,"author":{"gitId":"Ryan-Reno"},"content":"","lastModifiedDate":"2024-03-12"},{"lineNumber":75,"author":{"gitId":"Ryan-Reno"},"content":" public EditCommand.EditCourseMateDescriptor build() {","lastModifiedDate":"2024-03-12"},{"lineNumber":76,"author":{"gitId":"Ryan-Reno"},"content":" return descriptor;","lastModifiedDate":"2024-03-12"},{"lineNumber":77,"author":{"gitId":"Ryan-Reno"},"content":" }","lastModifiedDate":"2024-03-12"},{"lineNumber":78,"author":{"gitId":"Ryan-Reno"},"content":"}","lastModifiedDate":"2024-03-12"}],"authorContributionMap":{"Ryan-Reno":78}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Returns the middle index of the courseMate in the {@code model}\u0027s courseMate list.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" return Index.fromOneBased(model.getFilteredCourseMateList().size() / 2);","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Returns the last index of the courseMate in the {@code model}\u0027s courseMate list.","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" return Index.fromOneBased(model.getFilteredCourseMateList().size());","lastModifiedDate":"2024-03-12"},{"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":"Ryan-Reno"},"content":" * Returns the courseMate in the {@code model}\u0027s courseMate list at {@code index}.","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" public static CourseMate getCourseMate(Model model, Index index) {","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"Ryan-Reno"},"content":" return model.getFilteredCourseMateList().get(index.getZeroBased());","lastModifiedDate":"2024-03-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30"},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Ryan-Reno":8,"-":47}},{"path":"src/test/java/seedu/address/testutil/TypicalCourseMates.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":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"tzaph"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_CPP;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SKILL_JAVA;","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.ContactList;","lastModifiedDate":"2024-03-12"},{"lineNumber":17,"author":{"gitId":"Ryan-Reno"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-12"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":20,"author":{"gitId":"Ryan-Reno"},"content":" * A utility class containing a list of {@code CourseMate} objects to be used in tests.","lastModifiedDate":"2024-03-12"},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":22,"author":{"gitId":"Ryan-Reno"},"content":"public class TypicalCourseMates {","lastModifiedDate":"2024-03-12"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate ALICE \u003d new CourseMateBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-03-12"},{"lineNumber":25,"author":{"gitId":"yuhinarita"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"Ryan-Reno"},"content":" .withSkills(\"Java\").build();","lastModifiedDate":"2024-03-12"},{"lineNumber":28,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate BENSON \u003d new CourseMateBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-03-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":30,"author":{"gitId":"Ryan-Reno"},"content":" .withSkills(\"React\").build();","lastModifiedDate":"2024-03-12"},{"lineNumber":31,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate CARL \u003d new CourseMateBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-03-12"},{"lineNumber":32,"author":{"gitId":"yuhinarita"},"content":" .withEmail(\"heinz@example.com\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate DANIEL \u003d new CourseMateBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-03-12"},{"lineNumber":34,"author":{"gitId":"yuhinarita"},"content":" .withEmail(\"cornelia@example.com\").withSkills(\"C\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate ELLE \u003d new CourseMateBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-03-12"},{"lineNumber":36,"author":{"gitId":"yuhinarita"},"content":" .withEmail(\"werner@example.com\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate FIONA \u003d new CourseMateBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-03-12"},{"lineNumber":38,"author":{"gitId":"yuhinarita"},"content":" .withEmail(\"lydia@example.com\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate GEORGE \u003d new CourseMateBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-03-12"},{"lineNumber":40,"author":{"gitId":"yuhinarita"},"content":" .withEmail(\"anna@example.com\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":43,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate HOON \u003d new CourseMateBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-03-12"},{"lineNumber":44,"author":{"gitId":"yuhinarita"},"content":" .withEmail(\"stefan@example.com\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate IDA \u003d new CourseMateBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-03-12"},{"lineNumber":46,"author":{"gitId":"yuhinarita"},"content":" .withEmail(\"hans@example.com\").build();","lastModifiedDate":"2024-03-15"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" // Manually added - CourseMate\u0027s details found in {@code CommandTestUtil}.","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" // Enforce that they are not in the typicalCourseMates","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate AMY \u003d new CourseMateBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-03-12"},{"lineNumber":51,"author":{"gitId":"tzaph"},"content":" .withEmail(VALID_EMAIL_AMY).withSkills(VALID_SKILL_CPP).build();","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"Ryan-Reno"},"content":" public static final CourseMate BOB \u003d new CourseMateBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-03-12"},{"lineNumber":53,"author":{"gitId":"tzaph"},"content":" .withEmail(VALID_EMAIL_BOB).withSkills(VALID_SKILL_JAVA, VALID_SKILL_CPP)","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"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":"Ryan-Reno"},"content":" private TypicalCourseMates() {} // prevents instantiation","lastModifiedDate":"2024-03-12"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":61,"author":{"gitId":"Ryan-Reno"},"content":" * Returns an {@code ContactList} with all the typical course mates.","lastModifiedDate":"2024-03-12"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"Ryan-Reno"},"content":" public static ContactList getTypicalContactList() {","lastModifiedDate":"2024-03-12"},{"lineNumber":64,"author":{"gitId":"Ryan-Reno"},"content":" ContactList ab \u003d new ContactList();","lastModifiedDate":"2024-03-12"},{"lineNumber":65,"author":{"gitId":"Ryan-Reno"},"content":" for (CourseMate courseMate : getTypicalCourseMates()) {","lastModifiedDate":"2024-03-12"},{"lineNumber":66,"author":{"gitId":"Ryan-Reno"},"content":" ab.addCourseMate(courseMate);","lastModifiedDate":"2024-03-12"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":71,"author":{"gitId":"Ryan-Reno"},"content":" public static List\u003cCourseMate\u003e getTypicalCourseMates() {","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"yuhinarita":8,"Ryan-Reno":25,"tzaph":3,"-":36,"ivan24004":2}},{"path":"src/test/java/seedu/address/testutil/TypicalGroups.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ivan24004"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.ALICE;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.BENSON;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.CARL;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.DANIEL;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.ELLE;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ivan24004"},"content":"import static seedu.address.testutil.TypicalCourseMates.FIONA;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ivan24004"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ivan24004"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ivan24004"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ivan24004"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ivan24004"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.GroupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.CourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.coursemate.QueryableCourseMate;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ivan24004"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ivan24004"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ivan24004"},"content":" * A utility class containing a list of {@code Group} objects to be used in tests.","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ivan24004"},"content":"public class TypicalGroups {","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ivan24004"},"content":" public static final Set\u003cCourseMate\u003e SAMPLE_MEMBER_SET_1 \u003d new HashSet\u003c\u003e(Arrays.asList(ALICE, BENSON));","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ivan24004"},"content":" public static final Set\u003cCourseMate\u003e SAMPLE_MEMBER_SET_2 \u003d new HashSet\u003c\u003e(Arrays.asList(CARL, DANIEL));","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ivan24004"},"content":" public static final Set\u003cCourseMate\u003e SAMPLE_MEMBER_SET_3 \u003d new HashSet\u003c\u003e(Arrays.asList(ELLE, FIONA));","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ivan24004"},"content":" public static final Set\u003cCourseMate\u003e SAMPLE_UNINCLUDED_MEMBER_SET \u003d new HashSet\u003c\u003e(Arrays.asList(ALICE, FIONA));","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ivan24004"},"content":" // These contacts are not in the typicalContactList","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ivan24004"},"content":" public static final Set\u003cCourseMate\u003e SAMPLE_INVALID_MEMBER_SET_1 \u003d new HashSet\u003c\u003e(Arrays.asList(AMY, BOB));","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ivan24004"},"content":" public static final Set\u003cQueryableCourseMate\u003e SAMPLE_QUERYABLE_SET_1 \u003d getQueries(SAMPLE_MEMBER_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ivan24004"},"content":" public static final Set\u003cQueryableCourseMate\u003e SAMPLE_QUERYABLE_SET_2 \u003d getQueries(SAMPLE_MEMBER_SET_2);","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ivan24004"},"content":" public static final Set\u003cQueryableCourseMate\u003e SAMPLE_QUERYABLE_SET_3 \u003d getQueries(SAMPLE_MEMBER_SET_3);","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ivan24004"},"content":" public static final Set\u003cQueryableCourseMate\u003e SAMPLE_UNQUERYABLE_SET_1 \u003d getQueries(SAMPLE_INVALID_MEMBER_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ivan24004"},"content":" public static final Name SAMPLE_GROUP_NAME_1 \u003d new Name(\"Group 1\");","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ivan24004"},"content":" public static final Name SAMPLE_GROUP_NAME_2 \u003d new Name(\"Group 2\");","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ivan24004"},"content":" public static final Name SAMPLE_GROUP_NAME_3 \u003d new Name(\"Group 3\");","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ivan24004"},"content":" public static final Name SAMPLE_UNINCLUDED_NAME \u003d new Name(\"Unincluded group\");","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ivan24004"},"content":" public static final Group SAMPLE_GROUP_1 \u003d new Group(SAMPLE_GROUP_NAME_1, SAMPLE_MEMBER_SET_1);","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ivan24004"},"content":" public static final Group SAMPLE_GROUP_2 \u003d new Group(SAMPLE_GROUP_NAME_2, SAMPLE_MEMBER_SET_2);","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ivan24004"},"content":" public static final Group SAMPLE_GROUP_3 \u003d new Group(SAMPLE_GROUP_NAME_3, SAMPLE_MEMBER_SET_3);","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ivan24004"},"content":" public static final Group SAMPLE_UNINCLUDED_GROUP \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ivan24004"},"content":" new Group(SAMPLE_UNINCLUDED_NAME, SAMPLE_UNINCLUDED_MEMBER_SET);","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ivan24004"},"content":" * Prevent instantiation.","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ivan24004"},"content":" private TypicalGroups() {","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ivan24004"},"content":" * Returns an {@code GroupList} with all the typical course mates.","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"ivan24004"},"content":" public static GroupList getTypicalGroupList() {","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"ivan24004"},"content":" GroupList groupList \u003d new GroupList();","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ivan24004"},"content":" for (Group group : getTypicalGroups()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ivan24004"},"content":" groupList.addGroup(group);","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ivan24004"},"content":" return groupList;","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ivan24004"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ivan24004"},"content":" * Returns an {@code ArrayList\u003cGroup\u003e} with all the typical course mates.","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ivan24004"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ivan24004"},"content":" public static ArrayList\u003cGroup\u003e getTypicalGroups() {","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ivan24004"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(SAMPLE_GROUP_1, SAMPLE_GROUP_2, SAMPLE_GROUP_3));","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ivan24004"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ivan24004"},"content":" private static Set\u003cQueryableCourseMate\u003e getQueries(Set\u003cCourseMate\u003e memberSet) {","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"ivan24004"},"content":" return memberSet","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ivan24004"},"content":" .stream()","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ivan24004"},"content":" .map(courseMate -\u003e new QueryableCourseMate(courseMate.getName()))","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"ivan24004"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"ivan24004"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"ivan24004"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ivan24004":84}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"Ryan-Reno"},"content":" public static final Index INDEX_FIRST_COURSE_MATE \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-12"},{"lineNumber":10,"author":{"gitId":"Ryan-Reno"},"content":" public static final Index INDEX_SECOND_COURSE_MATE \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-12"},{"lineNumber":11,"author":{"gitId":"Ryan-Reno"},"content":" public static final Index INDEX_THIRD_COURSE_MATE \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-03-12"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"Ryan-Reno":3,"-":9}},{"path":"src/test/java/seedu/address/ui/CommandHistoryTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"benson1029"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"benson1029"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"benson1029"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"benson1029"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"benson1029"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"benson1029"},"content":"public class CommandHistoryTest {","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"benson1029"},"content":" private CommandHistory initializeCommandHistory(int currentPointer) {","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"benson1029"},"content":" CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"benson1029"},"content":" commandHistory.addCommand(\"command1\");","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"benson1029"},"content":" commandHistory.addCommand(\"command2\");","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"benson1029"},"content":" commandHistory.addCommand(\"command3\");","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"benson1029"},"content":" commandHistory.saveDraftCommand(\"draftCommand1\");","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"benson1029"},"content":" for (int i \u003d 3; i \u003e currentPointer; i--) {","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"benson1029"},"content":" commandHistory.getPreviousCommand();","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"benson1029"},"content":" return commandHistory;","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"benson1029"},"content":" public void addCommand_oneCommand_success() {","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"benson1029"},"content":" CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"benson1029"},"content":" commandHistory.addCommand(\"command1\");","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"benson1029"},"content":" assertEquals(\"command1\", commandHistory.getPreviousCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"benson1029"},"content":" public void addCommand_multipleCommands_success() {","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"benson1029"},"content":" CommandHistory commandHistory \u003d initializeCommandHistory(3);","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"benson1029"},"content":" assertEquals(\"command3\", commandHistory.getPreviousCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"benson1029"},"content":" assertEquals(\"command2\", commandHistory.getPreviousCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"benson1029"},"content":" assertEquals(\"command1\", commandHistory.getPreviousCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"benson1029"},"content":" public void addCommand_exceedsMaxSize_success() {","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"benson1029"},"content":" CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"benson1029"},"content":" for (int i \u003d 0; i \u003c 101; i++) {","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"benson1029"},"content":" commandHistory.addCommand(\"command\" + i);","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"benson1029"},"content":" assertEquals(\"command100\", commandHistory.getPreviousCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"benson1029"},"content":" public void saveDraftCommand_oneCommand_success() {","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"benson1029"},"content":" CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"benson1029"},"content":" commandHistory.saveDraftCommand(\"draftCommand1\");","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"benson1029"},"content":" assertEquals(\"draftCommand1\", commandHistory.getPreviousCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"benson1029"},"content":" public void saveDraftCommand_multipleCommands_savesOnlyLatest() {","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"benson1029"},"content":" CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"benson1029"},"content":" commandHistory.saveDraftCommand(\"draftCommand1\");","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"benson1029"},"content":" commandHistory.saveDraftCommand(\"draftCommand2\");","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"benson1029"},"content":" commandHistory.saveDraftCommand(\"draftCommand3\");","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"benson1029"},"content":" assertEquals(\"draftCommand3\", commandHistory.getPreviousCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"benson1029"},"content":" assertEquals(\"draftCommand3\", commandHistory.getPreviousCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"benson1029"},"content":" public void getPreviousCommand_noCommands_returnsEmptyString() {","lastModifiedDate":"2024-03-24"},{"lineNumber":66,"author":{"gitId":"benson1029"},"content":" CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-24"},{"lineNumber":67,"author":{"gitId":"benson1029"},"content":" assertEquals(\"\", commandHistory.getPreviousCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":68,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":69,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":70,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":71,"author":{"gitId":"benson1029"},"content":" public void getNextCommand_noCommands_returnsEmptyString() {","lastModifiedDate":"2024-03-24"},{"lineNumber":72,"author":{"gitId":"benson1029"},"content":" CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-24"},{"lineNumber":73,"author":{"gitId":"benson1029"},"content":" assertEquals(\"\", commandHistory.getNextCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":74,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":75,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":76,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":77,"author":{"gitId":"benson1029"},"content":" public void getPreviousCommand_multipleCommands_success() {","lastModifiedDate":"2024-03-24"},{"lineNumber":78,"author":{"gitId":"benson1029"},"content":" CommandHistory commandHistory \u003d initializeCommandHistory(3);","lastModifiedDate":"2024-03-24"},{"lineNumber":79,"author":{"gitId":"benson1029"},"content":" assertEquals(\"command3\", commandHistory.getPreviousCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":80,"author":{"gitId":"benson1029"},"content":" assertEquals(\"command2\", commandHistory.getPreviousCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":81,"author":{"gitId":"benson1029"},"content":" assertEquals(\"command1\", commandHistory.getPreviousCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":82,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":83,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":84,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":85,"author":{"gitId":"benson1029"},"content":" public void getPreviousCommand_calledManyTimes_wrapsAround() {","lastModifiedDate":"2024-03-24"},{"lineNumber":86,"author":{"gitId":"benson1029"},"content":" CommandHistory commandHistory \u003d initializeCommandHistory(0);","lastModifiedDate":"2024-03-24"},{"lineNumber":87,"author":{"gitId":"benson1029"},"content":" assertEquals(\"draftCommand1\", commandHistory.getPreviousCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":88,"author":{"gitId":"benson1029"},"content":" assertEquals(\"command3\", commandHistory.getPreviousCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":89,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":90,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":91,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":92,"author":{"gitId":"benson1029"},"content":" public void getNextCommand_multipleCommands_success() {","lastModifiedDate":"2024-03-24"},{"lineNumber":93,"author":{"gitId":"benson1029"},"content":" CommandHistory commandHistory \u003d initializeCommandHistory(0);","lastModifiedDate":"2024-03-24"},{"lineNumber":94,"author":{"gitId":"benson1029"},"content":" assertEquals(\"command2\", commandHistory.getNextCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":95,"author":{"gitId":"benson1029"},"content":" assertEquals(\"command3\", commandHistory.getNextCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":96,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":97,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":98,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":99,"author":{"gitId":"benson1029"},"content":" public void getNextCommand_calledManyTimes_doesNotWrapAround() {","lastModifiedDate":"2024-03-24"},{"lineNumber":100,"author":{"gitId":"benson1029"},"content":" CommandHistory commandHistory \u003d initializeCommandHistory(0);","lastModifiedDate":"2024-03-24"},{"lineNumber":101,"author":{"gitId":"benson1029"},"content":" commandHistory.getNextCommand();","lastModifiedDate":"2024-03-24"},{"lineNumber":102,"author":{"gitId":"benson1029"},"content":" commandHistory.getNextCommand();","lastModifiedDate":"2024-03-24"},{"lineNumber":103,"author":{"gitId":"benson1029"},"content":" commandHistory.getNextCommand();","lastModifiedDate":"2024-03-24"},{"lineNumber":104,"author":{"gitId":"benson1029"},"content":" assertEquals(\"draftCommand1\", commandHistory.getNextCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":105,"author":{"gitId":"benson1029"},"content":" assertEquals(\"draftCommand1\", commandHistory.getNextCommand());","lastModifiedDate":"2024-03-24"},{"lineNumber":106,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":107,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":108,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":109,"author":{"gitId":"benson1029"},"content":" public void isCommandEdited_sameDraftCommand_returnsFalse() {","lastModifiedDate":"2024-03-24"},{"lineNumber":110,"author":{"gitId":"benson1029"},"content":" CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-24"},{"lineNumber":111,"author":{"gitId":"benson1029"},"content":" commandHistory.saveDraftCommand(\"command1\");","lastModifiedDate":"2024-03-24"},{"lineNumber":112,"author":{"gitId":"benson1029"},"content":" assertFalse(commandHistory.isCommandEdited(\"command1\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":113,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":114,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":115,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":116,"author":{"gitId":"benson1029"},"content":" public void isCommandEdited_differentDraftCommand_returnsTrue() {","lastModifiedDate":"2024-03-24"},{"lineNumber":117,"author":{"gitId":"benson1029"},"content":" CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-24"},{"lineNumber":118,"author":{"gitId":"benson1029"},"content":" commandHistory.saveDraftCommand(\"command1\");","lastModifiedDate":"2024-03-24"},{"lineNumber":119,"author":{"gitId":"benson1029"},"content":" assertTrue(commandHistory.isCommandEdited(\"command2\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":120,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":121,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":122,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":123,"author":{"gitId":"benson1029"},"content":" public void isCommandEdited_newlyDraftedCommand_returnsTrue() {","lastModifiedDate":"2024-03-24"},{"lineNumber":124,"author":{"gitId":"benson1029"},"content":" CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-24"},{"lineNumber":125,"author":{"gitId":"benson1029"},"content":" assertTrue(commandHistory.isCommandEdited(\"command1\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":126,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":127,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":128,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":129,"author":{"gitId":"benson1029"},"content":" public void isCommandEdited_cleanState_returnsFalse() {","lastModifiedDate":"2024-03-24"},{"lineNumber":130,"author":{"gitId":"benson1029"},"content":" CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-24"},{"lineNumber":131,"author":{"gitId":"benson1029"},"content":" assertFalse(commandHistory.isCommandEdited(\"\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":132,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":133,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":134,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":135,"author":{"gitId":"benson1029"},"content":" public void isCommandEdited_sameOldCommand_returnsFalse() {","lastModifiedDate":"2024-03-24"},{"lineNumber":136,"author":{"gitId":"benson1029"},"content":" CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-24"},{"lineNumber":137,"author":{"gitId":"benson1029"},"content":" commandHistory.addCommand(\"command1\");","lastModifiedDate":"2024-03-24"},{"lineNumber":138,"author":{"gitId":"benson1029"},"content":" commandHistory.getPreviousCommand();","lastModifiedDate":"2024-03-24"},{"lineNumber":139,"author":{"gitId":"benson1029"},"content":" assertFalse(commandHistory.isCommandEdited(\"command1\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":140,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":141,"author":{"gitId":"benson1029"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":142,"author":{"gitId":"benson1029"},"content":" @Test","lastModifiedDate":"2024-03-24"},{"lineNumber":143,"author":{"gitId":"benson1029"},"content":" public void isCommandEdited_differentOldCommand_returnsTrue() {","lastModifiedDate":"2024-03-24"},{"lineNumber":144,"author":{"gitId":"benson1029"},"content":" CommandHistory commandHistory \u003d new CommandHistory();","lastModifiedDate":"2024-03-24"},{"lineNumber":145,"author":{"gitId":"benson1029"},"content":" commandHistory.addCommand(\"command1\");","lastModifiedDate":"2024-03-24"},{"lineNumber":146,"author":{"gitId":"benson1029"},"content":" commandHistory.getPreviousCommand();","lastModifiedDate":"2024-03-24"},{"lineNumber":147,"author":{"gitId":"benson1029"},"content":" assertTrue(commandHistory.isCommandEdited(\"command2\"));","lastModifiedDate":"2024-03-24"},{"lineNumber":148,"author":{"gitId":"benson1029"},"content":" }","lastModifiedDate":"2024-03-24"},{"lineNumber":149,"author":{"gitId":"benson1029"},"content":"}","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"benson1029":149}}] diff --git a/AY2324S2-CS2103T-F13-3_tp_master/commits.json b/AY2324S2-CS2103T-F13-3_tp_master/commits.json index 9c049f33..132c6dc4 100644 --- a/AY2324S2-CS2103T-F13-3_tp_master/commits.json +++ b/AY2324S2-CS2103T-F13-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yuhinarita":[{"date":"2024-03-01","commitResults":[{"hash":"060a43be84472174da20135a266c6ed1955cc21a","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md for NFRs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"5ed8e2622e70307d2075e92240f1754ef67dc6e8","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md for Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":1}}},{"hash":"2610e6db3f91f2ed6fcd80b95d269a8859a9795b","isMergeCommit":true,"messageTitle":"Merge pull request #12 from yuhinarita/master","messageBody":"Update Developer Guide on new NFRs and Glossary","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"cb70d4e36a52c8b7c92fba4763c69f52cda719f7","isMergeCommit":false,"messageTitle":"Remove class Address and all related code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":154},"test-code":{"insertions":29,"deletions":189}}},{"hash":"d4d02cea0b52bf366f92e77b402422c22c5637d5","isMergeCommit":false,"messageTitle":"Fix tests to remove trace of old Address class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":58}}},{"hash":"bbed5a456c4f69a1d17ac1bfb273057aabf0cdc8","isMergeCommit":false,"messageTitle":"Fix trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"1bbb8a2816faea97765d18f5ecae45ff477a3168","isMergeCommit":true,"messageTitle":"Merge pull request #48 from yuhinarita/remove-address","messageBody":"Remove class Address and all related code","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"e4fddeaaac582af18aff7758da412e6ca426e83f","isMergeCommit":false,"messageTitle":"Add group list panel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":0}}},{"hash":"c98269233f12270092f85de7f5f4fff73cdf06cc","isMergeCommit":false,"messageTitle":"add group card","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":97,"deletions":12}}},{"hash":"88f4ad9837908c054dc050d574653257f213489d","isMergeCommit":false,"messageTitle":"add group list and related models, show group list in main window","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":273,"deletions":1},"other":{"insertions":2,"deletions":3}}},{"hash":"4c76276d470c31746670cd46142024cec2e26e99","isMergeCommit":false,"messageTitle":"fix no newline at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"2858d05ecb7bfc53760e800dc5e760b42fa861a3","isMergeCommit":false,"messageTitle":"fix minor style issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"a26eee740aaa5d2f3a07a0414c55e97cc5213cbd","isMergeCommit":false,"messageTitle":"fix checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":14}}},{"hash":"0bb70ca2c8ac5ab187fe57cab8a82f63b31eab78","isMergeCommit":false,"messageTitle":"fix tests for contact list and model","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":2}}}]},{"date":"2024-03-17","commitResults":[{"hash":"6c8135c9dfac3196ba7516cc5f6a34ff9d6c6c77","isMergeCommit":false,"messageTitle":"Update Todo notation","messageBody":"Co-authored-by: benson1029 \u003c65775063+benson1029@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"5040cdea60376a51b6ab83927080633125b71ebb","isMergeCommit":false,"messageTitle":"Update TODO notation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":10}}},{"hash":"479c998d19b049bc3da8db7410146f414771b106","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c833d134de4621c3bf47128326ba6c8835d138a3","isMergeCommit":true,"messageTitle":"Merge pull request #58 from yuhinarita/group-panel","messageBody":"Add group panel \u0026 group list model","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"d0d7888898556fc1bda78142c211a1eaa41ecceb","isMergeCommit":false,"messageTitle":"Update UML diagram for group list panel","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"afe5bfd08699d838ca20f6ec87482141e3ad2204","isMergeCommit":true,"messageTitle":"Merge pull request #74 from yuhinarita/group-panel-uml","messageBody":"Update UML diagram for group list panel","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"03690bbce6f6dbd5279d1e480f190ed351ac8b86","isMergeCommit":false,"messageTitle":"fix uml diagram: GroupListPanel incorrectly pointing to Model","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"65d29500de5d50c97be041dda2ed9bfcb1f4efc0","isMergeCommit":true,"messageTitle":"Merge pull request #80 from yuhinarita/group-panel-uml","messageBody":"Fix UML diagram for UI","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"a2e45234916f10b79ea15319b42b04a2b9b1e586","isMergeCommit":false,"messageTitle":"fix add member not updated to group","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":3}}},{"hash":"e8065cb91de4dfe666178bc66cded3713d778e46","isMergeCommit":true,"messageTitle":"Merge pull request #98 from yuhinarita/branch-v1.2b-update-UI-add-member","messageBody":"fix add member not updated to group UI","fileTypesAndContributionMap":{}},{"hash":"ef96562c691dd66b0ca0aebd27e76e819ce5d7de","isMergeCommit":true,"messageTitle":"Merge pull request #108 from yuhinarita/v1.2-release-note","messageBody":"Add UI image","fileTypesAndContributionMap":{}},{"hash":"dadd72253d2f3cae5f80a3190581f81921dc5d36","isMergeCommit":false,"messageTitle":"change find command to find-mate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1bceb87d6a7ccc9cea5802b943f20ab8190fc814","isMergeCommit":false,"messageTitle":"add find-group that can search a group name by its substring","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":136,"deletions":0}}}]},{"date":"2024-03-22","commitResults":[{"hash":"a63e9c6a511986a1bd7776d25b530459118939a3","isMergeCommit":false,"messageTitle":"Add tests for find-group command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6},"other":{"insertions":4,"deletions":5},"test-code":{"insertions":92,"deletions":0}}},{"hash":"b280bb45213f8cca4a4d16b67fa577af153acd19","isMergeCommit":false,"messageTitle":"Add tests for find-group parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":32,"deletions":0}}},{"hash":"10d51c06c175de20a6a1c3ed62f36fb75348ab0a","isMergeCommit":false,"messageTitle":"Add test for getFilteredGroupList() in LogicManager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"a88e17f5d2c4ce4c809c6d393b26c27fa18c0dd8","isMergeCommit":false,"messageTitle":"Fix command success message to accomadate both singular and plural","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"a506d858c6ba4450685c977b49604137dc6bf1fa","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"638fc33a72092ae5ebd3b469982f9104600d04ac","isMergeCommit":false,"messageTitle":"fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":4}}}]},{"date":"2024-03-24","commitResults":[{"hash":"3b3f6358459f4af06adf03e9187f0530149a8a50","isMergeCommit":false,"messageTitle":"Remove TODO comment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"1b0d20b2f6c6314b618c989f3346ecd48d65ed2e","isMergeCommit":true,"messageTitle":"Merge pull request #116 from yuhinarita/branch-v1.3-find-group","messageBody":"find-group command, \u0026 change from find to find-mate","fileTypesAndContributionMap":{}}]}],"Ryan-Reno":[{"date":"2024-03-01","commitResults":[{"hash":"1a2a37387f96931a73fb4d2c838e67ed2fc6cb26","isMergeCommit":false,"messageTitle":"Update User Guide with new features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":244,"deletions":69}}},{"hash":"1fb70614f4713aabea71e2700c6ade2ee3d1e9bb","isMergeCommit":false,"messageTitle":"Remove possible outputs for each command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":65}}},{"hash":"182a6b706b552ca36d048b92d97247d4aac272dc","isMergeCommit":true,"messageTitle":"Merge pull request #11 from Ryan-Reno/master","messageBody":"Update User Guide with new features","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"e8fc5240f43604e051f585a0e389edae75fb4b4e","isMergeCommit":false,"messageTitle":"Delete helpMessage.png from user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}}]},{"date":"2024-03-12","commitResults":[{"hash":"8abe4e3aad4760d54c4187d6c475213014c065ae","isMergeCommit":false,"messageTitle":"Refactor Tag to Skill","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":207,"deletions":207},"other":{"insertions":3,"deletions":3},"test-code":{"insertions":175,"deletions":175}}},{"hash":"324b1170d8d44c951e0894556782ae48e1ee628d","isMergeCommit":false,"messageTitle":"Refactor Person to CourseMate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":432,"deletions":441},"other":{"insertions":190,"deletions":193},"docs":{"insertions":49,"deletions":49},"test-code":{"insertions":721,"deletions":724}}},{"hash":"bfad4d4f6062e0a3c59342d52a50b0be19063424","isMergeCommit":false,"messageTitle":"Refactor AddressBook to ContactList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":178,"deletions":185},"other":{"insertions":102,"deletions":102},"test-code":{"insertions":245,"deletions":246}}},{"hash":"4d2e543d1934d287490b9cb7a565acb874977525","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":19}}},{"hash":"7adf1574977fc21ba745d18be33eba4251d4a513","isMergeCommit":false,"messageTitle":"Fix additional style issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":11},"test-code":{"insertions":1,"deletions":1}}},{"hash":"e0ab14775bbe12297b6e5c6380bb8164c1802bc5","isMergeCommit":false,"messageTitle":"Change import order to adhere with checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"0f302600d35ac25483333a3c887a50019a2ad126","isMergeCommit":false,"messageTitle":"Change ContactListStorage import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"45b87a8a08540334f975929492dc5cde0cc76405","isMergeCommit":false,"messageTitle":"Fix style for test folder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":85,"deletions":57}}},{"hash":"d55b56d0ce90eb47e35f8317f1fb93bc34c1591f","isMergeCommit":false,"messageTitle":"Fix test cases to adhere with new namings","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":5}}},{"hash":"560123f9bb09d3efa7528f69fe053ca31df3d861","isMergeCommit":true,"messageTitle":"Merge pull request #45 from Ryan-Reno/rename-classes-skills","messageBody":"Rename classes skills","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"3f74637e9960bc96525c0ae7a2c5bdb8178cd5fc","isMergeCommit":false,"messageTitle":"Add hashtag notation for delete and edit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":9},"test-code":{"insertions":27,"deletions":32}}},{"hash":"f5bfcb190549f0d8f4bedf97d0af67ec4a4e49cf","isMergeCommit":false,"messageTitle":"Change delete and edit to use parseQueryableParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":39},"test-code":{"insertions":49,"deletions":66}}},{"hash":"169d2e7af79cf3c6c23df54b43b1ac4aadc79e84","isMergeCommit":false,"messageTitle":"Add tests for delete and edit command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":0}}},{"hash":"8f602fc534313553f222a2d11ed5a8710418f13a","isMergeCommit":false,"messageTitle":"Fix build issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"04ae90367549165c7a7e66221d27c2ffadd0f711","isMergeCommit":false,"messageTitle":"Delete tests that caused build issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":0}}},{"hash":"0039ea2341b9eb65dc1bb1287365111fd7bf10c4","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"885fbc93b183c11b7d99592642c5dbf801459745","isMergeCommit":true,"messageTitle":"Merge pull request #79 from Ryan-Reno/add-hashtag-notation","messageBody":"Add hashtag notation for delete and edit","fileTypesAndContributionMap":{}},{"hash":"79d10928a447109a3ce692a37d8ef01678a48a6a","isMergeCommit":false,"messageTitle":"Fix UML naming conventions","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":90,"deletions":94}}},{"hash":"57e3a066a37293428d5007a231f3f3df279aab79","isMergeCommit":true,"messageTitle":"Merge pull request #81 from Ryan-Reno/update-uml-diagram","messageBody":"Fix UML naming conventions","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"e9aafc7c66e33173fb79b7bd425f3096a8359331","isMergeCommit":false,"messageTitle":"Fix invalid hashtag notation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"ae3280874abccc0b501389c247b7abe67cd5b1ca","isMergeCommit":false,"messageTitle":"Allow reference a contact using substring","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":20},"test-code":{"insertions":6,"deletions":4}}},{"hash":"69ad45a36a6eaca6c584fab762b83236d9f5468e","isMergeCommit":false,"messageTitle":"Add test cases for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":92,"deletions":0}}},{"hash":"3995ff947a1520f34d7898dadab63614609608e6","isMergeCommit":true,"messageTitle":"Merge pull request #99 from Ryan-Reno/invalid-hashtag-notation","messageBody":"Fix invalid hashtag notation and allow substring reference","fileTypesAndContributionMap":{}},{"hash":"4ebc20821a2cd60b030ec43bdcdaf3f4119effe7","isMergeCommit":false,"messageTitle":"Fix user guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"docs":{"insertions":8,"deletions":6}}},{"hash":"bc848a6dae57f79a5d4e860f53099a72ae15ddc9","isMergeCommit":false,"messageTitle":"Fix NAME to COURSEMATE","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"878fbc57dc67ad3690b8423153fe209e84a49f95","isMergeCommit":true,"messageTitle":"Merge pull request #103 from Ryan-Reno/invalid-hashtag-notation","messageBody":"Fix user guide","fileTypesAndContributionMap":{}}]}],"benson1029":[{"date":"2024-03-01","commitResults":[{"hash":"61c66cf25b870e97e496883d819c239e49661fbe","isMergeCommit":false,"messageTitle":"Update developer guide to include user profile and user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":16}}},{"hash":"cb835e8eb9170ed963d1c099ae48413bdd78bd92","isMergeCommit":true,"messageTitle":"Merge pull request #13 from benson1029/DG-user-stories","messageBody":"Update developer guide to include user profile and user stories","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"25a629cf73ccdcd898054e5a4eefc4431f94703e","isMergeCommit":true,"messageTitle":"Merge pull request #38 from Ryan-Reno/add-Ryan-info","messageBody":"Delete helpMessage.png from user guide","fileTypesAndContributionMap":{}},{"hash":"095b23126d5388f1ce443995b62e17c4e3884caf","isMergeCommit":true,"messageTitle":"Merge pull request #40 from ivan24004/branch-milestone-v1.1-clean","messageBody":"Modify the README.md and AboutUs.md, previous pull request failed tests","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"6a7de339453807cc72e3e67c85e9df8491f87282","isMergeCommit":true,"messageTitle":"Merge pull request #46 from ivan24004/branch-replace-typo","messageBody":"Replace typo","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"f30c31fd62d6ec4043f02078439f74c3a17e9f87","isMergeCommit":false,"messageTitle":"Add detailed card of a course mate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":269,"deletions":19},"test-code":{"insertions":29,"deletions":1}}},{"hash":"a38f1cfa82518e92477d90fd185a0e7029edac42","isMergeCommit":false,"messageTitle":"Add tests for logic manager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":0}}},{"hash":"debd25aeacac76778f9d2cef15963f43ef066d0d","isMergeCommit":false,"messageTitle":"Refactor course mate detail panel logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":18},"test-code":{"insertions":45,"deletions":15}}},{"hash":"51876a1698fba5b247a6e78307a992e021a45f88","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F13-3:master\u0027 into person-card-hashtag-display","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d3cb83b4942bd6e70c112557b0151133f78748d9","isMergeCommit":false,"messageTitle":"Remove address field from detail panel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":7}}},{"hash":"721b44f716dcd41a9b3852d08a34557cc39678a8","isMergeCommit":true,"messageTitle":"Merge pull request #49 from benson1029/person-card-hashtag-display","messageBody":"Add a detailed view panel of coursemate, with hashtag notations displayed","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"abf228ee88bf061a6b9db8b289cec397cc3302eb","isMergeCommit":false,"messageTitle":"Omit coursemate info from command result messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":26},"test-code":{"insertions":8,"deletions":18}}}]},{"date":"2024-03-17","commitResults":[{"hash":"0d016ae9dcd687b251a74265d5dfee47e50636b9","isMergeCommit":false,"messageTitle":"Change semantics of find command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":73,"deletions":57},"test-code":{"insertions":114,"deletions":119}}},{"hash":"9c412693f5f08151f7748aea8cc9d3e39118c0c5","isMergeCommit":true,"messageTitle":"Merge pull request #59 from benson1029/simplify-result-messages","messageBody":"Omit coursemate info from command result messages","fileTypesAndContributionMap":{}},{"hash":"fc25994b573336bf517e3ce3a2ee32ef160fcaf0","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"d0d16b0b5c2b56b7951263b2f8ce7ff8d0854ed1","isMergeCommit":true,"messageTitle":"Merge pull request #60 from benson1029/find-command","messageBody":"Change semantics of find command","fileTypesAndContributionMap":{}},{"hash":"8e6d50960d2f0b6f02e5b056735c5448eff045ba","isMergeCommit":false,"messageTitle":"Update UML diagram for UI coursemate detail card","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":8}}}]},{"date":"2024-03-18","commitResults":[{"hash":"3693b717d0dc303a9cd28dcc3b8bc18ee32d64f5","isMergeCommit":true,"messageTitle":"Merge pull request #63 from benson1029/ui-detail-card-uml","messageBody":"Update UML diagram for UI coursemate detail card","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"443e2155acb9252d95272eeaf178cd1ff0b04e1d","isMergeCommit":false,"messageTitle":"Fix display of tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":4}}},{"hash":"886dd2f812dcfc5887df08b8217811a83fdc60bc","isMergeCommit":true,"messageTitle":"Merge pull request #95 from benson1029/fix-tag-display","messageBody":"Fix display of tags","fileTypesAndContributionMap":{}},{"hash":"d62f6f6b1e1288e5fc2439b5645affe703157d4e","isMergeCommit":false,"messageTitle":"Fix notational issues in user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":55,"deletions":48}}},{"hash":"210940d73b081b7f723e59baf6fa07d109e3dc53","isMergeCommit":false,"messageTitle":"Fix naming of group in examples","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"72dd599071299b21e71ef7736405febe5afcb872","isMergeCommit":false,"messageTitle":"Fix incorrect command format for delete group member","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"74b4b3a061e867753418cead9759a47801f1b938","isMergeCommit":true,"messageTitle":"Merge pull request #104 from benson1029/ug-fix-20240321","messageBody":"Fix notational issues in user guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"8e823280c15f5f222e6b8b64f388d527ed56e3ad","isMergeCommit":false,"messageTitle":"Enable assertions in gradle build file","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0}}},{"hash":"3c5ce5f9602fe633a81c5485cdc91e085ed3669b","isMergeCommit":true,"messageTitle":"Merge pull request #119 from benson1029/enable-assertions","messageBody":"Enable assertions in gradle build file","fileTypesAndContributionMap":{}}]}],"tzaph":[{"date":"2024-03-04","commitResults":[{"hash":"9da17f1790d16a9caed83f63edb3b409ceedd4d0","isMergeCommit":false,"messageTitle":"Add use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":168,"deletions":12}}},{"hash":"5f4ac74142f5369eb6591ea7ae5f03bd4d00dd3e","isMergeCommit":false,"messageTitle":"Apply changes in DG based on review","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":38,"deletions":4}}},{"hash":"18fe6fdcfaf40b92ce9cae982afd3c91aa2d7e1d","isMergeCommit":true,"messageTitle":"Merge pull request #36 from tzaph/DG-use-cases","messageBody":"Add use cases to the developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"14a7c5a4a3b75d299b1b469b6e9852140a1b428f","isMergeCommit":false,"messageTitle":"Change the prefix format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"21a0522b33065ddd956ccaaf1f2f140cc469f6aa","isMergeCommit":false,"messageTitle":"Change the prefix format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":5}}}]},{"date":"2024-03-17","commitResults":[{"hash":"8fae015ae745c98bd375d9f3adef7814195ff513","isMergeCommit":true,"messageTitle":"Merge pull request #51 from tzaph/change-prefix-format","messageBody":"Change the prefix format for arguments","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"3b7bb7c2591f0987fd18ba1ca103ebf1181ec5f2","isMergeCommit":false,"messageTitle":"Change command format for \"add\"","messageBody":"The parser now rejects commands with no space\nbetween prefix and argument. The add command now does not use the\n-n prefix.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":27},"test-code":{"insertions":50,"deletions":63}}},{"hash":"87c1437d48babb46cbc81fd74dc292f9f4c2db32","isMergeCommit":false,"messageTitle":"Add tests to cover new code","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"7f602029900ac5207418d34d9d984428e0b56b3f","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":12}}},{"hash":"4113377a5b58a1d8a384da3d934665cb25fd8f69","isMergeCommit":true,"messageTitle":"Merge pull request #68 from tzaph/revamp-add-command","messageBody":"Change command format for \"add\"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"4e83938d6b37d9b5a775e068b6f126f2dd4dfd4d","isMergeCommit":false,"messageTitle":"Add initial code for add-skill command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":320,"deletions":2}}},{"hash":"d9f2b2249cae04b4f9862f2976c3ff4b24b15096","isMergeCommit":true,"messageTitle":"Merge pull request #69 from ivan24004/branch-queryname-stub","messageBody":"Add stub for a QueryableCourseMate","fileTypesAndContributionMap":{}},{"hash":"7689dd663a9b65524d8df5a6a2ba6e572c9ab936","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F13-3:master\u0027 into add-skill-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"30adf3ecb1e7109fdd21ea6c5870c361792342ce","isMergeCommit":false,"messageTitle":"Revamp skill related commands","messageBody":"Skill arguments now have no constraints.\nAdded add-skill and delete-skill command.\nThe current commands only support index and the hashtag notation\nis yet to be implemented.\nThe current add-skill commands do not support detection of\nnew skill arguments, which might be implemented in the future.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":336,"deletions":131},"test-code":{"insertions":39,"deletions":89}}}]},{"date":"2024-03-20","commitResults":[{"hash":"7d4554f7cde33fadf3cc9924d95113dcdc032e45","isMergeCommit":false,"messageTitle":"Add tests for add-skill and delete-skill parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":364,"deletions":0}}},{"hash":"f756e4fabb92a664542c7aa765e15fb27572e47e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-skill-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d88befad6607abe552aa32b81474f201392a3bcf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-skill-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e28805735672dded230cf7a3f1e402f556923700","isMergeCommit":false,"messageTitle":"Use hashtag notation for add-skill and delete-skill.","messageBody":"Also, add tests for add-skill and delete-skill command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":27},"test-code":{"insertions":385,"deletions":31}}},{"hash":"b4ad56f61c38e2b4801302a2d19b34314b1bcb3e","isMergeCommit":false,"messageTitle":"Improve code quality from review","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":5}}},{"hash":"462ed8445f3f6be7ef065063a2f42c4dd61a923a","isMergeCommit":false,"messageTitle":"Fix checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"7b64857c34c7b4d9ddceb25c38313c787908f7ab","isMergeCommit":true,"messageTitle":"Merge pull request #77 from tzaph/add-skill-command","messageBody":"add-skill and delete-skill command added","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"d9553a7e8a6802de099213a16493fada13db6532","isMergeCommit":false,"messageTitle":"Fix error and help messages to follow UG","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":18}}},{"hash":"54966fe40d620ef806f07b470f3cca4a209a180a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F13-3:master\u0027 into improve-error-messages-v1.2b","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1f01a9eb3a01557617ee02db881f24e177491bc3","isMergeCommit":true,"messageTitle":"Merge pull request #96 from tzaph/improve-error-messages-v1.2b","messageBody":"Improve error and help messages to fix bugs for v1.2b","fileTypesAndContributionMap":{}},{"hash":"bbbb3c8ac73e86adc9299bc4fdf37a824a839fab","isMergeCommit":false,"messageTitle":"Improve UML Diagram.","messageBody":"Fix capitalization for UniqueCourseMateList and UniqueGroupList.\n","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"6a4e6c01f83fe2e5253ca902917f75df4ccd3dec","isMergeCommit":true,"messageTitle":"Merge pull request #109 from tzaph/uml-command-change","messageBody":"Fix capitalization for UniqueCourseMateList and UniqueGroupList in UML","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"ivan24004":[{"date":"2024-03-04","commitResults":[{"hash":"29468c70388d5a0ae1fcdffda23c80b566dc1ab4","isMergeCommit":true,"messageTitle":"Merge pull request #37 from tzaph/add-self-photo","messageBody":"Add photo for AboutUs page (tzaph)","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"7b93d974f75adca16176f7b3b7aca93eb7f346e0","isMergeCommit":false,"messageTitle":"Modify AboutUs.md to use the teams details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":28}}},{"hash":"82b29d7a2a0ad762a3538cbde1c9acbbdd8251a6","isMergeCommit":false,"messageTitle":"Modify README.md to use the teams details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":10}}},{"hash":"a81523793d73a5d3b4a4ebd3fdb387cae56c94b4","isMergeCommit":false,"messageTitle":"Added newline at EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}}]},{"date":"2024-03-13","commitResults":[{"hash":"26ea79ae0355f27f5210e71f2f2af3a4bc915cdd","isMergeCommit":false,"messageTitle":"Refactor ContactListParser to MatchMateParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"other":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-17","commitResults":[{"hash":"a78bd561f5257f18f7c41f37ec71c1590da26cb7","isMergeCommit":false,"messageTitle":"Modify Group to be a subclass of UniqueCourseMateList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":21}}},{"hash":"8dfdf8c4a8f8eb36fcffef622f4f9fa24b95e3f7","isMergeCommit":false,"messageTitle":"Add a basic create-group command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":0}}},{"hash":"de5a62a0d3c97b3ed7144572492093cbb0d02de2","isMergeCommit":false,"messageTitle":"Add a help message to create-group","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":1}}},{"hash":"548f015c6f148281a08e5e8210f2f9c31fc7a8be","isMergeCommit":false,"messageTitle":"Add parseCourseMates to ParserUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":0}}}]},{"date":"2024-03-18","commitResults":[{"hash":"196f8d49ed898ed56cef56313c528e87f67a87a5","isMergeCommit":false,"messageTitle":"Create basic parser for GroupCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":0}}},{"hash":"6d3f66cace4b98f18400241bae59af191e375169","isMergeCommit":false,"messageTitle":"Parse the details for create-group command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":6}}},{"hash":"41d34c6ce27040ac08c3abb4ed6a7c3453a3807f","isMergeCommit":false,"messageTitle":"Define equality for groups","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":5}}},{"hash":"dc9896babe8e213200a7899c685742d0cdcec689","isMergeCommit":false,"messageTitle":"Add create-group command with basic functionality, add a group with a name that is unique","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":128,"deletions":7},"test-code":{"insertions":20,"deletions":0}}},{"hash":"923102766e57d2d03dd60e4d7df2f838631fb875","isMergeCommit":false,"messageTitle":"Set toAdd as final","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"8d5a987702d1b49f11324f9b80e07f53e69d7b9a","isMergeCommit":false,"messageTitle":"Move the duplicate group message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4}}},{"hash":"b15752e4d5552c624c1e5caa3dda4fac48268f36","isMergeCommit":false,"messageTitle":"Fix typos in documentation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"52d7758e787bd87038aae56ae05ec10f43dca108","isMergeCommit":false,"messageTitle":"Create empty unit test classes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}},{"hash":"8fcbcc1260732325d3dacb2d742de6eb21859103","isMergeCommit":false,"messageTitle":"Remove empty import","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"092a9c6f059f7dbd39ecbb88f4c8e829617ab12d","isMergeCommit":false,"messageTitle":"Create delete-group Command and use the GroupList instead of a large ContactList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":284,"deletions":105},"test-code":{"insertions":43,"deletions":28}}},{"hash":"63f858fde5db4ebca35d5873814c8653b888e531","isMergeCommit":false,"messageTitle":"Create QueryableCourseMate class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":80,"deletions":0},"test-code":{"insertions":46,"deletions":0}}}]},{"date":"2024-03-19","commitResults":[{"hash":"4f1867dba76edb45192b7d0a460097b5c553b689","isMergeCommit":false,"messageTitle":"Add querying by QueryableCourseMate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":43,"deletions":0},"test-code":{"insertions":35,"deletions":0}}},{"hash":"c490cb00a34b19df60c9e456e061138c875eb08a","isMergeCommit":false,"messageTitle":"Create parserUtil method for parsing QueryableCourseMate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":0},"test-code":{"insertions":35,"deletions":8}}},{"hash":"1a104617a9f808f3400cb9d8f0e6274f46d17614","isMergeCommit":false,"messageTitle":"Add extra test cases for code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":3}}},{"hash":"0c612a74944452ac4ad11bb9ee5bd619945f1345","isMergeCommit":true,"messageTitle":"Merge upstream changes","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a003a3dee7939c604b8d5cc0bee4e20dd3aa5db2","isMergeCommit":true,"messageTitle":"Fixed merge conflicts, allow Group to use QueryableCourseMate","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d238c1e76f223b122d475b74be000bb403f5d19a","isMergeCommit":false,"messageTitle":"Support more verbose error message when an invalid CourseMate is added to a team","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":17}}}]},{"date":"2024-03-20","commitResults":[{"hash":"f2003deb87a925863d31f94cbc61af682c77c579","isMergeCommit":false,"messageTitle":"Add different unit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":31},"test-code":{"insertions":389,"deletions":17}}},{"hash":"f36a2f520b1dea726073ad410498d754b5bc2b0c","isMergeCommit":false,"messageTitle":"Provide more descriptive error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":12}}},{"hash":"ac85ccaa51c84afc26ebd6e1163e6193856e725f","isMergeCommit":false,"messageTitle":"Add extra test case to increase coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}},{"hash":"fe46172c6325a2549a89a86d3ff54bb5f81ebe0b","isMergeCommit":false,"messageTitle":"Add extra test cases on GroupList to increase coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":2},"test-code":{"insertions":39,"deletions":0}}},{"hash":"5ce17e3cd238d14fb8622a11d6a1276e06567a6f","isMergeCommit":true,"messageTitle":"Merge pull request #76 from ivan24004/branch-v1.2-coursegroup","messageBody":"Added create-group and delete-group commands, also add functionality to Group methods.","fileTypesAndContributionMap":{}},{"hash":"3d0dea8cd8147b4b48495b494e914dde57fc182a","isMergeCommit":false,"messageTitle":"Fixed comments in previous","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":11}}},{"hash":"b44733c16ea1ea16be69b2819d6f151aaa134081","isMergeCommit":true,"messageTitle":"Merge pull request #78 from ivan24004/branch-minor-fix","messageBody":"Fixed comments in previous pull request (PR #76)","fileTypesAndContributionMap":{}},{"hash":"5405ce3eeabd9c1636edd9181e1aff1d6ec76cbf","isMergeCommit":false,"messageTitle":"Implement storage for the Group and GroupList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":378,"deletions":17},"test-code":{"insertions":48,"deletions":4}}},{"hash":"c1ef9813c5e0d56c31d03d3e5007e3a66457de98","isMergeCommit":false,"messageTitle":"Add test cases for storage of Group and GroupList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"test-code":{"insertions":211,"deletions":1}}},{"hash":"b1587b04bf7f39677933b13606a34ad87c8e7202","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":0}}},{"hash":"eccfd029ced50cd32f430a0dbcffc27c65475d5d","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1677a75d2c954101991cf035d9522ad8feb253de","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/address/storage/GroupListStorage.java","messageBody":"Co-authored-by: benson1029 \u003c65775063+benson1029@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"dfbed0397877db16aba8cf4c06e257e4198c19d9","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/branch-v1.2-groupstorage\u0027 into branch-v1.2-groupstorage","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2343e37014b620b4bfd5405997fbbca2a8d07dc8","isMergeCommit":false,"messageTitle":"Break long line in two","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"511caa9b9857276799c3a0253962773e7ceaeb1b","isMergeCommit":true,"messageTitle":"Merge pull request #82 from ivan24004/branch-v1.2-groupstorage","messageBody":"Implement storage for Group and GroupList","fileTypesAndContributionMap":{}},{"hash":"96fc361d570ddf27f062a9397877940edc9c9c0f","isMergeCommit":false,"messageTitle":"Add add-member and delete-member commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":2}}},{"hash":"e051ca50f00e9e5fb9d0febf952680d922eeb745","isMergeCommit":false,"messageTitle":"Add add-member and delete-member commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":279,"deletions":0}}},{"hash":"f60fecd854afd1c29e07261c21c5dd9a7a60810c","isMergeCommit":false,"messageTitle":"Add test cases for add-member and delete-member","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":254,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"668c66b482c075b0f7947654708b819a15dcff14","isMergeCommit":true,"messageTitle":"Merge pull request #83 from ivan24004/branch-v1.2-modifygroupmembers","messageBody":"Add add-member and delete-member commands","fileTypesAndContributionMap":{}},{"hash":"febbd4c9a1fea3c0e352a3ef6b2570fd4d871287","isMergeCommit":false,"messageTitle":"Modify StorageClassDiagram.puml to include group storage classes","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":3}}},{"hash":"76ec6371472879b8591f0de2604dd04da71faace","isMergeCommit":false,"messageTitle":"Modify to include Group classes in the Model","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":0}}},{"hash":"4e0fcf7e6283819b38ce95337540ba73ce5292e8","isMergeCommit":true,"messageTitle":"Merge pull request #97 from ivan24004/branch-uml","messageBody":"Update UML for storage classes","fileTypesAndContributionMap":{}},{"hash":"a3e22fedaf021d75feddd9feb79140e4d93da343","isMergeCommit":false,"messageTitle":"Modify error message to be clearer","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1597d9311742e6562cc3cadc5ccbf8473d763619","isMergeCommit":true,"messageTitle":"Merge pull request #100 from ivan24004/branch-uml","messageBody":"Modify create-group error message to be clearer when invalid name is given","fileTypesAndContributionMap":{}},{"hash":"6afa325f1b05279779905d8d5f259e01fb4ade48","isMergeCommit":false,"messageTitle":"Modify Storage class diagram to be cleaner","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"749f2895effe3eb05c6016c71c796a72bfb9857f","isMergeCommit":true,"messageTitle":"Merge pull request #101 from ivan24004/branch-uml","messageBody":"Modify Storage class diagram to be cleaner","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yuhinarita":{"docs":20,"functional-code":492,"test-code":183},"Ryan-Reno":{"docs":253,"functional-code":957,"test-code":1173,"other":3},"benson1029":{"docs":98,"functional-code":353,"test-code":202,"other":4},"tzaph":{"docs":201,"functional-code":648,"test-code":808},"ivan24004":{"docs":55,"functional-code":1344,"test-code":1131}},"authorContributionVariance":{"yuhinarita":16007.123,"Ryan-Reno":746731.75,"benson1029":10933.949,"tzaph":49883.223,"ivan24004":126977.61},"authorDisplayNameMap":{"yuhinarita":"CS2103T-F13-3 NARI..YUHI","Ryan-Reno":"CS2103T-F13-3 RYAN.. LIM","benson1029":"CS2103T-F13-3 YEUN..SUNG","tzaph":"CS2103T-F13-3 MAXI..QUOK","ivan24004":"CS2103T-F13-3 TAN ..IONG"}} +{"authorDailyContributionsMap":{"yuhinarita":[{"date":"2024-03-01","commitResults":[{"hash":"060a43be84472174da20135a266c6ed1955cc21a","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md for NFRs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":5}}},{"hash":"5ed8e2622e70307d2075e92240f1754ef67dc6e8","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md for Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":1}}},{"hash":"2610e6db3f91f2ed6fcd80b95d269a8859a9795b","isMergeCommit":true,"messageTitle":"Merge pull request #12 from yuhinarita/master","messageBody":"Update Developer Guide on new NFRs and Glossary","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"cb70d4e36a52c8b7c92fba4763c69f52cda719f7","isMergeCommit":false,"messageTitle":"Remove class Address and all related code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":154},"test-code":{"insertions":29,"deletions":189}}},{"hash":"d4d02cea0b52bf366f92e77b402422c22c5637d5","isMergeCommit":false,"messageTitle":"Fix tests to remove trace of old Address class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":58}}},{"hash":"bbed5a456c4f69a1d17ac1bfb273057aabf0cdc8","isMergeCommit":false,"messageTitle":"Fix trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"1bbb8a2816faea97765d18f5ecae45ff477a3168","isMergeCommit":true,"messageTitle":"Merge pull request #48 from yuhinarita/remove-address","messageBody":"Remove class Address and all related code","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"e4fddeaaac582af18aff7758da412e6ca426e83f","isMergeCommit":false,"messageTitle":"Add group list panel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":0}}},{"hash":"c98269233f12270092f85de7f5f4fff73cdf06cc","isMergeCommit":false,"messageTitle":"add group card","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":97,"deletions":12}}},{"hash":"88f4ad9837908c054dc050d574653257f213489d","isMergeCommit":false,"messageTitle":"add group list and related models, show group list in main window","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":273,"deletions":1},"other":{"insertions":2,"deletions":3}}},{"hash":"4c76276d470c31746670cd46142024cec2e26e99","isMergeCommit":false,"messageTitle":"fix no newline at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"2858d05ecb7bfc53760e800dc5e760b42fa861a3","isMergeCommit":false,"messageTitle":"fix minor style issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}},{"hash":"a26eee740aaa5d2f3a07a0414c55e97cc5213cbd","isMergeCommit":false,"messageTitle":"fix checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":14}}},{"hash":"0bb70ca2c8ac5ab187fe57cab8a82f63b31eab78","isMergeCommit":false,"messageTitle":"fix tests for contact list and model","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":26,"deletions":2}}}]},{"date":"2024-03-17","commitResults":[{"hash":"6c8135c9dfac3196ba7516cc5f6a34ff9d6c6c77","isMergeCommit":false,"messageTitle":"Update Todo notation","messageBody":"Co-authored-by: benson1029 \u003c65775063+benson1029@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"5040cdea60376a51b6ab83927080633125b71ebb","isMergeCommit":false,"messageTitle":"Update TODO notation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":10}}},{"hash":"479c998d19b049bc3da8db7410146f414771b106","isMergeCommit":true,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c833d134de4621c3bf47128326ba6c8835d138a3","isMergeCommit":true,"messageTitle":"Merge pull request #58 from yuhinarita/group-panel","messageBody":"Add group panel \u0026 group list model","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"d0d7888898556fc1bda78142c211a1eaa41ecceb","isMergeCommit":false,"messageTitle":"Update UML diagram for group list panel","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"afe5bfd08699d838ca20f6ec87482141e3ad2204","isMergeCommit":true,"messageTitle":"Merge pull request #74 from yuhinarita/group-panel-uml","messageBody":"Update UML diagram for group list panel","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"03690bbce6f6dbd5279d1e480f190ed351ac8b86","isMergeCommit":false,"messageTitle":"fix uml diagram: GroupListPanel incorrectly pointing to Model","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"65d29500de5d50c97be041dda2ed9bfcb1f4efc0","isMergeCommit":true,"messageTitle":"Merge pull request #80 from yuhinarita/group-panel-uml","messageBody":"Fix UML diagram for UI","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"a2e45234916f10b79ea15319b42b04a2b9b1e586","isMergeCommit":false,"messageTitle":"fix add member not updated to group","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":3}}},{"hash":"e8065cb91de4dfe666178bc66cded3713d778e46","isMergeCommit":true,"messageTitle":"Merge pull request #98 from yuhinarita/branch-v1.2b-update-UI-add-member","messageBody":"fix add member not updated to group UI","fileTypesAndContributionMap":{}},{"hash":"ef96562c691dd66b0ca0aebd27e76e819ce5d7de","isMergeCommit":true,"messageTitle":"Merge pull request #108 from yuhinarita/v1.2-release-note","messageBody":"Add UI image","fileTypesAndContributionMap":{}},{"hash":"dadd72253d2f3cae5f80a3190581f81921dc5d36","isMergeCommit":false,"messageTitle":"change find command to find-mate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1bceb87d6a7ccc9cea5802b943f20ab8190fc814","isMergeCommit":false,"messageTitle":"add find-group that can search a group name by its substring","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":136,"deletions":0}}}]},{"date":"2024-03-22","commitResults":[{"hash":"a63e9c6a511986a1bd7776d25b530459118939a3","isMergeCommit":false,"messageTitle":"Add tests for find-group command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6},"other":{"insertions":4,"deletions":5},"test-code":{"insertions":92,"deletions":0}}},{"hash":"b280bb45213f8cca4a4d16b67fa577af153acd19","isMergeCommit":false,"messageTitle":"Add tests for find-group parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":32,"deletions":0}}},{"hash":"10d51c06c175de20a6a1c3ed62f36fb75348ab0a","isMergeCommit":false,"messageTitle":"Add test for getFilteredGroupList() in LogicManager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"a88e17f5d2c4ce4c809c6d393b26c27fa18c0dd8","isMergeCommit":false,"messageTitle":"Fix command success message to accomadate both singular and plural","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"a506d858c6ba4450685c977b49604137dc6bf1fa","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"638fc33a72092ae5ebd3b469982f9104600d04ac","isMergeCommit":false,"messageTitle":"fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":4}}}]},{"date":"2024-03-24","commitResults":[{"hash":"3b3f6358459f4af06adf03e9187f0530149a8a50","isMergeCommit":false,"messageTitle":"Remove TODO comment","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"1b0d20b2f6c6314b618c989f3346ecd48d65ed2e","isMergeCommit":true,"messageTitle":"Merge pull request #116 from yuhinarita/branch-v1.3-find-group","messageBody":"find-group command, \u0026 change from find to find-mate","fileTypesAndContributionMap":{}}]}],"Ryan-Reno":[{"date":"2024-03-01","commitResults":[{"hash":"1a2a37387f96931a73fb4d2c838e67ed2fc6cb26","isMergeCommit":false,"messageTitle":"Update User Guide with new features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":244,"deletions":69}}},{"hash":"1fb70614f4713aabea71e2700c6ade2ee3d1e9bb","isMergeCommit":false,"messageTitle":"Remove possible outputs for each command","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":65}}},{"hash":"182a6b706b552ca36d048b92d97247d4aac272dc","isMergeCommit":true,"messageTitle":"Merge pull request #11 from Ryan-Reno/master","messageBody":"Update User Guide with new features","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"e8fc5240f43604e051f585a0e389edae75fb4b4e","isMergeCommit":false,"messageTitle":"Delete helpMessage.png from user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}}]},{"date":"2024-03-12","commitResults":[{"hash":"8abe4e3aad4760d54c4187d6c475213014c065ae","isMergeCommit":false,"messageTitle":"Refactor Tag to Skill","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":207,"deletions":207},"other":{"insertions":3,"deletions":3},"test-code":{"insertions":175,"deletions":175}}},{"hash":"324b1170d8d44c951e0894556782ae48e1ee628d","isMergeCommit":false,"messageTitle":"Refactor Person to CourseMate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":432,"deletions":441},"other":{"insertions":190,"deletions":193},"docs":{"insertions":49,"deletions":49},"test-code":{"insertions":721,"deletions":724}}},{"hash":"bfad4d4f6062e0a3c59342d52a50b0be19063424","isMergeCommit":false,"messageTitle":"Refactor AddressBook to ContactList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":178,"deletions":185},"other":{"insertions":102,"deletions":102},"test-code":{"insertions":245,"deletions":246}}},{"hash":"4d2e543d1934d287490b9cb7a565acb874977525","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":19}}},{"hash":"7adf1574977fc21ba745d18be33eba4251d4a513","isMergeCommit":false,"messageTitle":"Fix additional style issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":11},"test-code":{"insertions":1,"deletions":1}}},{"hash":"e0ab14775bbe12297b6e5c6380bb8164c1802bc5","isMergeCommit":false,"messageTitle":"Change import order to adhere with checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"0f302600d35ac25483333a3c887a50019a2ad126","isMergeCommit":false,"messageTitle":"Change ContactListStorage import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"45b87a8a08540334f975929492dc5cde0cc76405","isMergeCommit":false,"messageTitle":"Fix style for test folder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":85,"deletions":57}}},{"hash":"d55b56d0ce90eb47e35f8317f1fb93bc34c1591f","isMergeCommit":false,"messageTitle":"Fix test cases to adhere with new namings","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":5}}},{"hash":"560123f9bb09d3efa7528f69fe053ca31df3d861","isMergeCommit":true,"messageTitle":"Merge pull request #45 from Ryan-Reno/rename-classes-skills","messageBody":"Rename classes skills","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"3f74637e9960bc96525c0ae7a2c5bdb8178cd5fc","isMergeCommit":false,"messageTitle":"Add hashtag notation for delete and edit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":9},"test-code":{"insertions":27,"deletions":32}}},{"hash":"f5bfcb190549f0d8f4bedf97d0af67ec4a4e49cf","isMergeCommit":false,"messageTitle":"Change delete and edit to use parseQueryableParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":46,"deletions":39},"test-code":{"insertions":49,"deletions":66}}},{"hash":"169d2e7af79cf3c6c23df54b43b1ac4aadc79e84","isMergeCommit":false,"messageTitle":"Add tests for delete and edit command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":37,"deletions":0}}},{"hash":"8f602fc534313553f222a2d11ed5a8710418f13a","isMergeCommit":false,"messageTitle":"Fix build issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"04ae90367549165c7a7e66221d27c2ffadd0f711","isMergeCommit":false,"messageTitle":"Delete tests that caused build issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":0}}},{"hash":"0039ea2341b9eb65dc1bb1287365111fd7bf10c4","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"885fbc93b183c11b7d99592642c5dbf801459745","isMergeCommit":true,"messageTitle":"Merge pull request #79 from Ryan-Reno/add-hashtag-notation","messageBody":"Add hashtag notation for delete and edit","fileTypesAndContributionMap":{}},{"hash":"79d10928a447109a3ce692a37d8ef01678a48a6a","isMergeCommit":false,"messageTitle":"Fix UML naming conventions","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":90,"deletions":94}}},{"hash":"57e3a066a37293428d5007a231f3f3df279aab79","isMergeCommit":true,"messageTitle":"Merge pull request #81 from Ryan-Reno/update-uml-diagram","messageBody":"Fix UML naming conventions","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"e9aafc7c66e33173fb79b7bd425f3096a8359331","isMergeCommit":false,"messageTitle":"Fix invalid hashtag notation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"ae3280874abccc0b501389c247b7abe67cd5b1ca","isMergeCommit":false,"messageTitle":"Allow reference a contact using substring","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":20},"test-code":{"insertions":6,"deletions":4}}},{"hash":"69ad45a36a6eaca6c584fab762b83236d9f5468e","isMergeCommit":false,"messageTitle":"Add test cases for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":92,"deletions":0}}},{"hash":"3995ff947a1520f34d7898dadab63614609608e6","isMergeCommit":true,"messageTitle":"Merge pull request #99 from Ryan-Reno/invalid-hashtag-notation","messageBody":"Fix invalid hashtag notation and allow substring reference","fileTypesAndContributionMap":{}},{"hash":"4ebc20821a2cd60b030ec43bdcdaf3f4119effe7","isMergeCommit":false,"messageTitle":"Fix user guide","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"docs":{"insertions":8,"deletions":6}}},{"hash":"bc848a6dae57f79a5d4e860f53099a72ae15ddc9","isMergeCommit":false,"messageTitle":"Fix NAME to COURSEMATE","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"878fbc57dc67ad3690b8423153fe209e84a49f95","isMergeCommit":true,"messageTitle":"Merge pull request #103 from Ryan-Reno/invalid-hashtag-notation","messageBody":"Fix user guide","fileTypesAndContributionMap":{}}]}],"benson1029":[{"date":"2024-03-01","commitResults":[{"hash":"61c66cf25b870e97e496883d819c239e49661fbe","isMergeCommit":false,"messageTitle":"Update developer guide to include user profile and user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":16}}},{"hash":"cb835e8eb9170ed963d1c099ae48413bdd78bd92","isMergeCommit":true,"messageTitle":"Merge pull request #13 from benson1029/DG-user-stories","messageBody":"Update developer guide to include user profile and user stories","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"25a629cf73ccdcd898054e5a4eefc4431f94703e","isMergeCommit":true,"messageTitle":"Merge pull request #38 from Ryan-Reno/add-Ryan-info","messageBody":"Delete helpMessage.png from user guide","fileTypesAndContributionMap":{}},{"hash":"095b23126d5388f1ce443995b62e17c4e3884caf","isMergeCommit":true,"messageTitle":"Merge pull request #40 from ivan24004/branch-milestone-v1.1-clean","messageBody":"Modify the README.md and AboutUs.md, previous pull request failed tests","fileTypesAndContributionMap":{}}]},{"date":"2024-03-13","commitResults":[{"hash":"6a7de339453807cc72e3e67c85e9df8491f87282","isMergeCommit":true,"messageTitle":"Merge pull request #46 from ivan24004/branch-replace-typo","messageBody":"Replace typo","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"f30c31fd62d6ec4043f02078439f74c3a17e9f87","isMergeCommit":false,"messageTitle":"Add detailed card of a course mate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":269,"deletions":19},"test-code":{"insertions":29,"deletions":1}}},{"hash":"a38f1cfa82518e92477d90fd185a0e7029edac42","isMergeCommit":false,"messageTitle":"Add tests for logic manager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":0}}},{"hash":"debd25aeacac76778f9d2cef15963f43ef066d0d","isMergeCommit":false,"messageTitle":"Refactor course mate detail panel logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":18},"test-code":{"insertions":45,"deletions":15}}},{"hash":"51876a1698fba5b247a6e78307a992e021a45f88","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F13-3:master\u0027 into person-card-hashtag-display","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d3cb83b4942bd6e70c112557b0151133f78748d9","isMergeCommit":false,"messageTitle":"Remove address field from detail panel","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":7}}},{"hash":"721b44f716dcd41a9b3852d08a34557cc39678a8","isMergeCommit":true,"messageTitle":"Merge pull request #49 from benson1029/person-card-hashtag-display","messageBody":"Add a detailed view panel of coursemate, with hashtag notations displayed","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"abf228ee88bf061a6b9db8b289cec397cc3302eb","isMergeCommit":false,"messageTitle":"Omit coursemate info from command result messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":26},"test-code":{"insertions":8,"deletions":18}}}]},{"date":"2024-03-17","commitResults":[{"hash":"0d016ae9dcd687b251a74265d5dfee47e50636b9","isMergeCommit":false,"messageTitle":"Change semantics of find command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":73,"deletions":57},"test-code":{"insertions":114,"deletions":119}}},{"hash":"9c412693f5f08151f7748aea8cc9d3e39118c0c5","isMergeCommit":true,"messageTitle":"Merge pull request #59 from benson1029/simplify-result-messages","messageBody":"Omit coursemate info from command result messages","fileTypesAndContributionMap":{}},{"hash":"fc25994b573336bf517e3ce3a2ee32ef160fcaf0","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"d0d16b0b5c2b56b7951263b2f8ce7ff8d0854ed1","isMergeCommit":true,"messageTitle":"Merge pull request #60 from benson1029/find-command","messageBody":"Change semantics of find command","fileTypesAndContributionMap":{}},{"hash":"8e6d50960d2f0b6f02e5b056735c5448eff045ba","isMergeCommit":false,"messageTitle":"Update UML diagram for UI coursemate detail card","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":8}}}]},{"date":"2024-03-18","commitResults":[{"hash":"3693b717d0dc303a9cd28dcc3b8bc18ee32d64f5","isMergeCommit":true,"messageTitle":"Merge pull request #63 from benson1029/ui-detail-card-uml","messageBody":"Update UML diagram for UI coursemate detail card","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"443e2155acb9252d95272eeaf178cd1ff0b04e1d","isMergeCommit":false,"messageTitle":"Fix display of tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":4}}},{"hash":"886dd2f812dcfc5887df08b8217811a83fdc60bc","isMergeCommit":true,"messageTitle":"Merge pull request #95 from benson1029/fix-tag-display","messageBody":"Fix display of tags","fileTypesAndContributionMap":{}},{"hash":"d62f6f6b1e1288e5fc2439b5645affe703157d4e","isMergeCommit":false,"messageTitle":"Fix notational issues in user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":55,"deletions":48}}},{"hash":"210940d73b081b7f723e59baf6fa07d109e3dc53","isMergeCommit":false,"messageTitle":"Fix naming of group in examples","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"72dd599071299b21e71ef7736405febe5afcb872","isMergeCommit":false,"messageTitle":"Fix incorrect command format for delete group member","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"74b4b3a061e867753418cead9759a47801f1b938","isMergeCommit":true,"messageTitle":"Merge pull request #104 from benson1029/ug-fix-20240321","messageBody":"Fix notational issues in user guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"8e823280c15f5f222e6b8b64f388d527ed56e3ad","isMergeCommit":false,"messageTitle":"Enable assertions in gradle build file","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":4,"deletions":0}}},{"hash":"3c5ce5f9602fe633a81c5485cdc91e085ed3669b","isMergeCommit":true,"messageTitle":"Merge pull request #119 from benson1029/enable-assertions","messageBody":"Enable assertions in gradle build file","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"a55a793517e58e79e42bf618bc712b5e9c2226d6","isMergeCommit":false,"messageTitle":"Support saving command history in UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":108,"deletions":0},"test-code":{"insertions":149,"deletions":0}}}]},{"date":"2024-03-25","commitResults":[{"hash":"a7ef67e0f45d5306ba845789dbbb08f1be52b890","isMergeCommit":true,"messageTitle":"Merge pull request #121 from benson1029/ui-save-command-history","messageBody":"Support saving command history in UI","fileTypesAndContributionMap":{}}]}],"tzaph":[{"date":"2024-03-04","commitResults":[{"hash":"9da17f1790d16a9caed83f63edb3b409ceedd4d0","isMergeCommit":false,"messageTitle":"Add use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":168,"deletions":12}}},{"hash":"5f4ac74142f5369eb6591ea7ae5f03bd4d00dd3e","isMergeCommit":false,"messageTitle":"Apply changes in DG based on review","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":38,"deletions":4}}},{"hash":"18fe6fdcfaf40b92ce9cae982afd3c91aa2d7e1d","isMergeCommit":true,"messageTitle":"Merge pull request #36 from tzaph/DG-use-cases","messageBody":"Add use cases to the developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"14a7c5a4a3b75d299b1b469b6e9852140a1b428f","isMergeCommit":false,"messageTitle":"Change the prefix format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"21a0522b33065ddd956ccaaf1f2f140cc469f6aa","isMergeCommit":false,"messageTitle":"Change the prefix format","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":5}}}]},{"date":"2024-03-17","commitResults":[{"hash":"8fae015ae745c98bd375d9f3adef7814195ff513","isMergeCommit":true,"messageTitle":"Merge pull request #51 from tzaph/change-prefix-format","messageBody":"Change the prefix format for arguments","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"3b7bb7c2591f0987fd18ba1ca103ebf1181ec5f2","isMergeCommit":false,"messageTitle":"Change command format for \"add\"","messageBody":"The parser now rejects commands with no space\nbetween prefix and argument. The add command now does not use the\n-n prefix.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":27},"test-code":{"insertions":50,"deletions":63}}},{"hash":"87c1437d48babb46cbc81fd74dc292f9f4c2db32","isMergeCommit":false,"messageTitle":"Add tests to cover new code","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"7f602029900ac5207418d34d9d984428e0b56b3f","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":12}}},{"hash":"4113377a5b58a1d8a384da3d934665cb25fd8f69","isMergeCommit":true,"messageTitle":"Merge pull request #68 from tzaph/revamp-add-command","messageBody":"Change command format for \"add\"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"4e83938d6b37d9b5a775e068b6f126f2dd4dfd4d","isMergeCommit":false,"messageTitle":"Add initial code for add-skill command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":320,"deletions":2}}},{"hash":"d9f2b2249cae04b4f9862f2976c3ff4b24b15096","isMergeCommit":true,"messageTitle":"Merge pull request #69 from ivan24004/branch-queryname-stub","messageBody":"Add stub for a QueryableCourseMate","fileTypesAndContributionMap":{}},{"hash":"7689dd663a9b65524d8df5a6a2ba6e572c9ab936","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F13-3:master\u0027 into add-skill-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"30adf3ecb1e7109fdd21ea6c5870c361792342ce","isMergeCommit":false,"messageTitle":"Revamp skill related commands","messageBody":"Skill arguments now have no constraints.\nAdded add-skill and delete-skill command.\nThe current commands only support index and the hashtag notation\nis yet to be implemented.\nThe current add-skill commands do not support detection of\nnew skill arguments, which might be implemented in the future.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":336,"deletions":131},"test-code":{"insertions":39,"deletions":89}}}]},{"date":"2024-03-20","commitResults":[{"hash":"7d4554f7cde33fadf3cc9924d95113dcdc032e45","isMergeCommit":false,"messageTitle":"Add tests for add-skill and delete-skill parser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":364,"deletions":0}}},{"hash":"f756e4fabb92a664542c7aa765e15fb27572e47e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-skill-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d88befad6607abe552aa32b81474f201392a3bcf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-skill-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e28805735672dded230cf7a3f1e402f556923700","isMergeCommit":false,"messageTitle":"Use hashtag notation for add-skill and delete-skill.","messageBody":"Also, add tests for add-skill and delete-skill command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":27},"test-code":{"insertions":385,"deletions":31}}},{"hash":"b4ad56f61c38e2b4801302a2d19b34314b1bcb3e","isMergeCommit":false,"messageTitle":"Improve code quality from review","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":5}}},{"hash":"462ed8445f3f6be7ef065063a2f42c4dd61a923a","isMergeCommit":false,"messageTitle":"Fix checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"7b64857c34c7b4d9ddceb25c38313c787908f7ab","isMergeCommit":true,"messageTitle":"Merge pull request #77 from tzaph/add-skill-command","messageBody":"add-skill and delete-skill command added","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"d9553a7e8a6802de099213a16493fada13db6532","isMergeCommit":false,"messageTitle":"Fix error and help messages to follow UG","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":18}}},{"hash":"54966fe40d620ef806f07b470f3cca4a209a180a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F13-3:master\u0027 into improve-error-messages-v1.2b","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1f01a9eb3a01557617ee02db881f24e177491bc3","isMergeCommit":true,"messageTitle":"Merge pull request #96 from tzaph/improve-error-messages-v1.2b","messageBody":"Improve error and help messages to fix bugs for v1.2b","fileTypesAndContributionMap":{}},{"hash":"bbbb3c8ac73e86adc9299bc4fdf37a824a839fab","isMergeCommit":false,"messageTitle":"Improve UML Diagram.","messageBody":"Fix capitalization for UniqueCourseMateList and UniqueGroupList.\n","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"6a4e6c01f83fe2e5253ca902917f75df4ccd3dec","isMergeCommit":true,"messageTitle":"Merge pull request #109 from tzaph/uml-command-change","messageBody":"Fix capitalization for UniqueCourseMateList and UniqueGroupList in UML","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"ivan24004":[{"date":"2024-03-04","commitResults":[{"hash":"29468c70388d5a0ae1fcdffda23c80b566dc1ab4","isMergeCommit":true,"messageTitle":"Merge pull request #37 from tzaph/add-self-photo","messageBody":"Add photo for AboutUs page (tzaph)","fileTypesAndContributionMap":{}}]},{"date":"2024-03-05","commitResults":[{"hash":"7b93d974f75adca16176f7b3b7aca93eb7f346e0","isMergeCommit":false,"messageTitle":"Modify AboutUs.md to use the teams details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":28}}},{"hash":"82b29d7a2a0ad762a3538cbde1c9acbbdd8251a6","isMergeCommit":false,"messageTitle":"Modify README.md to use the teams details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":10}}},{"hash":"a81523793d73a5d3b4a4ebd3fdb387cae56c94b4","isMergeCommit":false,"messageTitle":"Added newline at EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}}]},{"date":"2024-03-13","commitResults":[{"hash":"26ea79ae0355f27f5210e71f2f2af3a4bc915cdd","isMergeCommit":false,"messageTitle":"Refactor ContactListParser to MatchMateParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"other":{"insertions":4,"deletions":4}}}]},{"date":"2024-03-17","commitResults":[{"hash":"a78bd561f5257f18f7c41f37ec71c1590da26cb7","isMergeCommit":false,"messageTitle":"Modify Group to be a subclass of UniqueCourseMateList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":21}}},{"hash":"8dfdf8c4a8f8eb36fcffef622f4f9fa24b95e3f7","isMergeCommit":false,"messageTitle":"Add a basic create-group command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":0}}},{"hash":"de5a62a0d3c97b3ed7144572492093cbb0d02de2","isMergeCommit":false,"messageTitle":"Add a help message to create-group","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":1}}},{"hash":"548f015c6f148281a08e5e8210f2f9c31fc7a8be","isMergeCommit":false,"messageTitle":"Add parseCourseMates to ParserUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":0}}}]},{"date":"2024-03-18","commitResults":[{"hash":"196f8d49ed898ed56cef56313c528e87f67a87a5","isMergeCommit":false,"messageTitle":"Create basic parser for GroupCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":0}}},{"hash":"6d3f66cace4b98f18400241bae59af191e375169","isMergeCommit":false,"messageTitle":"Parse the details for create-group command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":6}}},{"hash":"41d34c6ce27040ac08c3abb4ed6a7c3453a3807f","isMergeCommit":false,"messageTitle":"Define equality for groups","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":5}}},{"hash":"dc9896babe8e213200a7899c685742d0cdcec689","isMergeCommit":false,"messageTitle":"Add create-group command with basic functionality, add a group with a name that is unique","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":128,"deletions":7},"test-code":{"insertions":20,"deletions":0}}},{"hash":"923102766e57d2d03dd60e4d7df2f838631fb875","isMergeCommit":false,"messageTitle":"Set toAdd as final","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"8d5a987702d1b49f11324f9b80e07f53e69d7b9a","isMergeCommit":false,"messageTitle":"Move the duplicate group message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":4}}},{"hash":"b15752e4d5552c624c1e5caa3dda4fac48268f36","isMergeCommit":false,"messageTitle":"Fix typos in documentation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"52d7758e787bd87038aae56ae05ec10f43dca108","isMergeCommit":false,"messageTitle":"Create empty unit test classes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}},{"hash":"8fcbcc1260732325d3dacb2d742de6eb21859103","isMergeCommit":false,"messageTitle":"Remove empty import","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"092a9c6f059f7dbd39ecbb88f4c8e829617ab12d","isMergeCommit":false,"messageTitle":"Create delete-group Command and use the GroupList instead of a large ContactList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":284,"deletions":105},"test-code":{"insertions":43,"deletions":28}}},{"hash":"63f858fde5db4ebca35d5873814c8653b888e531","isMergeCommit":false,"messageTitle":"Create QueryableCourseMate class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":80,"deletions":0},"test-code":{"insertions":46,"deletions":0}}}]},{"date":"2024-03-19","commitResults":[{"hash":"4f1867dba76edb45192b7d0a460097b5c553b689","isMergeCommit":false,"messageTitle":"Add querying by QueryableCourseMate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":43,"deletions":0},"test-code":{"insertions":35,"deletions":0}}},{"hash":"c490cb00a34b19df60c9e456e061138c875eb08a","isMergeCommit":false,"messageTitle":"Create parserUtil method for parsing QueryableCourseMate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":0},"test-code":{"insertions":35,"deletions":8}}},{"hash":"1a104617a9f808f3400cb9d8f0e6274f46d17614","isMergeCommit":false,"messageTitle":"Add extra test cases for code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":3}}},{"hash":"0c612a74944452ac4ad11bb9ee5bd619945f1345","isMergeCommit":true,"messageTitle":"Merge upstream changes","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a003a3dee7939c604b8d5cc0bee4e20dd3aa5db2","isMergeCommit":true,"messageTitle":"Fixed merge conflicts, allow Group to use QueryableCourseMate","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d238c1e76f223b122d475b74be000bb403f5d19a","isMergeCommit":false,"messageTitle":"Support more verbose error message when an invalid CourseMate is added to a team","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":17}}}]},{"date":"2024-03-20","commitResults":[{"hash":"f2003deb87a925863d31f94cbc61af682c77c579","isMergeCommit":false,"messageTitle":"Add different unit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":31},"test-code":{"insertions":389,"deletions":17}}},{"hash":"f36a2f520b1dea726073ad410498d754b5bc2b0c","isMergeCommit":false,"messageTitle":"Provide more descriptive error messages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":12}}},{"hash":"ac85ccaa51c84afc26ebd6e1163e6193856e725f","isMergeCommit":false,"messageTitle":"Add extra test case to increase coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}},{"hash":"fe46172c6325a2549a89a86d3ff54bb5f81ebe0b","isMergeCommit":false,"messageTitle":"Add extra test cases on GroupList to increase coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":2},"test-code":{"insertions":39,"deletions":0}}},{"hash":"5ce17e3cd238d14fb8622a11d6a1276e06567a6f","isMergeCommit":true,"messageTitle":"Merge pull request #76 from ivan24004/branch-v1.2-coursegroup","messageBody":"Added create-group and delete-group commands, also add functionality to Group methods.","fileTypesAndContributionMap":{}},{"hash":"3d0dea8cd8147b4b48495b494e914dde57fc182a","isMergeCommit":false,"messageTitle":"Fixed comments in previous","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":11}}},{"hash":"b44733c16ea1ea16be69b2819d6f151aaa134081","isMergeCommit":true,"messageTitle":"Merge pull request #78 from ivan24004/branch-minor-fix","messageBody":"Fixed comments in previous pull request (PR #76)","fileTypesAndContributionMap":{}},{"hash":"5405ce3eeabd9c1636edd9181e1aff1d6ec76cbf","isMergeCommit":false,"messageTitle":"Implement storage for the Group and GroupList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":378,"deletions":17},"test-code":{"insertions":48,"deletions":4}}},{"hash":"c1ef9813c5e0d56c31d03d3e5007e3a66457de98","isMergeCommit":false,"messageTitle":"Add test cases for storage of Group and GroupList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5},"test-code":{"insertions":211,"deletions":1}}},{"hash":"b1587b04bf7f39677933b13606a34ad87c8e7202","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":0}}},{"hash":"eccfd029ced50cd32f430a0dbcffc27c65475d5d","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1677a75d2c954101991cf035d9522ad8feb253de","isMergeCommit":false,"messageTitle":"Update src/main/java/seedu/address/storage/GroupListStorage.java","messageBody":"Co-authored-by: benson1029 \u003c65775063+benson1029@users.noreply.github.com\u003e","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"dfbed0397877db16aba8cf4c06e257e4198c19d9","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/branch-v1.2-groupstorage\u0027 into branch-v1.2-groupstorage","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2343e37014b620b4bfd5405997fbbca2a8d07dc8","isMergeCommit":false,"messageTitle":"Break long line in two","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"511caa9b9857276799c3a0253962773e7ceaeb1b","isMergeCommit":true,"messageTitle":"Merge pull request #82 from ivan24004/branch-v1.2-groupstorage","messageBody":"Implement storage for Group and GroupList","fileTypesAndContributionMap":{}},{"hash":"96fc361d570ddf27f062a9397877940edc9c9c0f","isMergeCommit":false,"messageTitle":"Add add-member and delete-member commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":2}}},{"hash":"e051ca50f00e9e5fb9d0febf952680d922eeb745","isMergeCommit":false,"messageTitle":"Add add-member and delete-member commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":279,"deletions":0}}},{"hash":"f60fecd854afd1c29e07261c21c5dd9a7a60810c","isMergeCommit":false,"messageTitle":"Add test cases for add-member and delete-member","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":254,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"668c66b482c075b0f7947654708b819a15dcff14","isMergeCommit":true,"messageTitle":"Merge pull request #83 from ivan24004/branch-v1.2-modifygroupmembers","messageBody":"Add add-member and delete-member commands","fileTypesAndContributionMap":{}},{"hash":"febbd4c9a1fea3c0e352a3ef6b2570fd4d871287","isMergeCommit":false,"messageTitle":"Modify StorageClassDiagram.puml to include group storage classes","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":3}}},{"hash":"76ec6371472879b8591f0de2604dd04da71faace","isMergeCommit":false,"messageTitle":"Modify to include Group classes in the Model","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":13,"deletions":0}}},{"hash":"4e0fcf7e6283819b38ce95337540ba73ce5292e8","isMergeCommit":true,"messageTitle":"Merge pull request #97 from ivan24004/branch-uml","messageBody":"Update UML for storage classes","fileTypesAndContributionMap":{}},{"hash":"a3e22fedaf021d75feddd9feb79140e4d93da343","isMergeCommit":false,"messageTitle":"Modify error message to be clearer","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1597d9311742e6562cc3cadc5ccbf8473d763619","isMergeCommit":true,"messageTitle":"Merge pull request #100 from ivan24004/branch-uml","messageBody":"Modify create-group error message to be clearer when invalid name is given","fileTypesAndContributionMap":{}},{"hash":"6afa325f1b05279779905d8d5f259e01fb4ade48","isMergeCommit":false,"messageTitle":"Modify Storage class diagram to be cleaner","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"749f2895effe3eb05c6016c71c796a72bfb9857f","isMergeCommit":true,"messageTitle":"Merge pull request #101 from ivan24004/branch-uml","messageBody":"Modify Storage class diagram to be cleaner","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yuhinarita":{"docs":20,"functional-code":492,"test-code":183},"Ryan-Reno":{"docs":253,"functional-code":957,"test-code":1173,"other":3},"benson1029":{"docs":98,"functional-code":461,"test-code":351,"other":4},"tzaph":{"docs":201,"functional-code":648,"test-code":808},"ivan24004":{"docs":55,"functional-code":1344,"test-code":1131}},"authorContributionVariance":{"yuhinarita":15566.37,"Ryan-Reno":724548.5,"benson1029":12080.362,"tzaph":48496.855,"ivan24004":123330.73},"authorDisplayNameMap":{"yuhinarita":"CS2103T-F13-3 NARI..YUHI","Ryan-Reno":"CS2103T-F13-3 RYAN.. LIM","benson1029":"CS2103T-F13-3 YEUN..SUNG","tzaph":"CS2103T-F13-3 MAXI..QUOK","ivan24004":"CS2103T-F13-3 TAN ..IONG"}} diff --git a/AY2324S2-CS2103T-F14-2_tp_master/authorship.json b/AY2324S2-CS2103T-F14-2_tp_master/authorship.json index 56c06991..fe2df350 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":"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 java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC;","lastModifiedDate":"2024-03-24"},{"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":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.Model;","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":"import seedu.address.model.person.Person;","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":" * Changes the note of an existing person in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"public class AddNoteCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" public static final String COMMAND_WORD \u003d \"addnote\";","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"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":26,"author":{"gitId":"Jayne1010"},"content":" + \"the specified IC (must be a valid identity card number). \\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"Jayne1010"},"content":" + \"Existing remark will be appended by default. \\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_IC + \"IC \"","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_NOTE + \"NOTE \\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_IC + \"S0123456Q \"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_NOTE + \"Diabetes \\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"Jayne1010"},"content":" + \"To replace the original note, add -replace at the end of your command. \\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"Jayne1010"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_IC + \"S0123456Q \"","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_NOTE + \"Diabetes -replace\";","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"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":40,"author":{"gitId":"tengcharmaine"},"content":" private final IdentityCardNumberMatchesPredicate icPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":" private final Note note;","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":" private final boolean isReplace;","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":"tengcharmaine"},"content":" * @param icPredicate of the person in the filtered person list to edit the note","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"tengcharmaine"},"content":" * @param note of the person to be updated to","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"tengcharmaine"},"content":" public AddNoteCommand(IdentityCardNumberMatchesPredicate icPredicate, Note note, boolean isReplace) {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"tengcharmaine"},"content":" requireAllNonNull(icPredicate, note);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" this.icPredicate \u003d icPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"tengcharmaine"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"tengcharmaine"},"content":" this.isReplace \u003d isReplace;","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":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"tengcharmaine"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":" List\u003cPerson\u003e allPatients \u003d model.getAddressBook().getPersonList();","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":" Person personToEdit \u003d allPatients.stream()","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":" .filter(icPredicate::test)","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"tengcharmaine"},"content":" .findFirst()","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":" .orElseThrow(() -\u003e new CommandException(Messages.MESSAGE_NO_MATCHING_IC));","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"tengcharmaine"},"content":" Person editedPerson;","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"tengcharmaine"},"content":" if (isReplace || personToEdit.getNote().equals(Note.DEFAULT)) {","lastModifiedDate":"2024-03-18"},{"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(), note, personToEdit.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"tengcharmaine"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"tengcharmaine"},"content":" Note updatedNote \u003d personToEdit.getNote().append(\"\\n\" + note.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"tengcharmaine"},"content":" editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getIdentityCardNumber(), personToEdit.getAge(), personToEdit.getSex(),","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getAddress(), updatedNote, personToEdit.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"tengcharmaine"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"tengcharmaine"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"tengcharmaine"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"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":86,"author":{"gitId":"tengcharmaine"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"tengcharmaine"},"content":" public String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"tengcharmaine"},"content":" return String.format(MESSAGE_MODIFY_NOTE_SUCCESS, personToEdit.getName(),","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getIdentityCardNumber());","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"tengcharmaine"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"tengcharmaine"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"tengcharmaine"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"tengcharmaine"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"tengcharmaine"},"content":" if (!(other instanceof AddNoteCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"tengcharmaine"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand e \u003d (AddNoteCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"tengcharmaine"},"content":" return icPredicate.equals(e.icPredicate)","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"tengcharmaine"},"content":" \u0026\u0026 note.equals(e.note)","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"tengcharmaine"},"content":" \u0026\u0026 isReplace \u003d\u003d e.isReplace;","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Jayne1010":12,"tengcharmaine":97}},{"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":"jiahui0309"},"content":" alert.getDialogPane().getStylesheets().add(\"view/LightTheme.css\");","lastModifiedDate":"2024-03-23"},{"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,"-":86,"jiahui0309":1}},{"path":"src/main/resources/view/HelpWindow.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#copyButton, #helpMessage {","lastModifiedDate":"2021-08-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2022-01-02"},{"lineNumber":3,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"#copyButton {","lastModifiedDate":"2022-01-02"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-background-color: dimgray;","lastModifiedDate":"2022-01-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":10,"author":{"gitId":"-"},"content":"#copyButton:hover {","lastModifiedDate":"2022-01-02"},{"lineNumber":11,"author":{"gitId":"-"},"content":" -fx-background-color: gray;","lastModifiedDate":"2022-01-02"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":"#copyButton:armed {","lastModifiedDate":"2022-01-02"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-background-color: darkgray;","lastModifiedDate":"2022-01-02"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":"#helpMessageContainer {","lastModifiedDate":"2022-01-02"},{"lineNumber":19,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2022-01-02"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-08-28"}],"authorContributionMap":{"-":19,"jiahui0309":1}},{"path":"src/main/resources/view/LightTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jiahui0309"},"content":".background {","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"jiahui0309"},"content":" background-color: white; /* Used in the default.html file */","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"jiahui0309"},"content":".label {","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"jiahui0309"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"jiahui0309"},"content":".label-bright {","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"jiahui0309"},"content":".label-header {","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 34pt;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"jiahui0309"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":".text-field {","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":".tab-pane {","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":" -fx-min-height: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":" -fx-max-height: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":".table-view {","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"jiahui0309"},"content":" -fx-base: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"jiahui0309"},"content":" -fx-control-inner-background: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"jiahui0309"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 5;","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"jiahui0309"},"content":".table-view .column-header-background {","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"jiahui0309"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"jiahui0309"},"content":" -fx-size: 35;","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"jiahui0309"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"jiahui0309"},"content":" -fx-border-color:","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"jiahui0309"},"content":" transparent","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"jiahui0309"},"content":" transparent","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"jiahui0309"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"jiahui0309"},"content":" transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"jiahui0309"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"jiahui0309"},"content":".table-view .column-header .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 22pt;","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"jiahui0309"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"jiahui0309"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"jiahui0309"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"jiahui0309"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"jiahui0309"},"content":" -fx-border-color: transparent transparent transparent black;","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"jiahui0309"},"content":".split-pane {","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"jiahui0309"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"jiahui0309"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"jiahui0309"},"content":".list-view {","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"jiahui0309"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"jiahui0309"},"content":".list-cell {","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"jiahui0309"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"jiahui0309"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"jiahui0309"},"content":" -fx-background-radius: 10px;","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":102,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"jiahui0309"},"content":".list-cell:filled:even {","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #f2f2f2;","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"jiahui0309"},"content":".list-cell:filled:odd {","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #dedede;","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"jiahui0309"},"content":".list-cell:filled:selected {","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #bdbdbd;","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"jiahui0309"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"jiahui0309"},"content":" -fx-border-color: #050505;","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"jiahui0309"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"jiahui0309"},"content":" -fx-background-radius: 10px;","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"jiahui0309"},"content":".list-cell .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"jiahui0309"},"content":".cell_big_label {","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"jiahui0309"},"content":".cell_small_label {","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 15px;","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":136,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":137,"author":{"gitId":"jiahui0309"},"content":".stack-pane {","lastModifiedDate":"2024-03-23"},{"lineNumber":138,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":139,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":140,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":141,"author":{"gitId":"jiahui0309"},"content":".pane-with-border {","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"jiahui0309"},"content":".status-bar {","lastModifiedDate":"2024-03-23"},{"lineNumber":146,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #dedede;","lastModifiedDate":"2024-03-23"},{"lineNumber":147,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":148,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"jiahui0309"},"content":".result-display {","lastModifiedDate":"2024-03-23"},{"lineNumber":150,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-23"},{"lineNumber":151,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 15pt;","lastModifiedDate":"2024-03-23"},{"lineNumber":152,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":153,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":154,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":155,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":156,"author":{"gitId":"jiahui0309"},"content":".result-display .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":158,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":159,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"jiahui0309"},"content":".status-bar .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 4px;","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"jiahui0309"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"jiahui0309"},"content":".status-bar-with-border {","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #dedede;","lastModifiedDate":"2024-03-23"},{"lineNumber":169,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"jiahui0309"},"content":".status-bar-with-border .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"jiahui0309"},"content":".grid-pane {","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #dedede;","lastModifiedDate":"2024-03-23"},{"lineNumber":177,"author":{"gitId":"jiahui0309"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-23"},{"lineNumber":178,"author":{"gitId":"jiahui0309"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2024-03-23"},{"lineNumber":179,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":180,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":181,"author":{"gitId":"jiahui0309"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2024-03-23"},{"lineNumber":182,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":184,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":185,"author":{"gitId":"jiahui0309"},"content":".context-menu {","lastModifiedDate":"2024-03-23"},{"lineNumber":186,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":187,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":188,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":189,"author":{"gitId":"jiahui0309"},"content":".context-menu .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":190,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":191,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":192,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":193,"author":{"gitId":"jiahui0309"},"content":".menu-bar {","lastModifiedDate":"2024-03-23"},{"lineNumber":194,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":195,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":196,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":197,"author":{"gitId":"jiahui0309"},"content":".menu-bar .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":198,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 16pt;","lastModifiedDate":"2024-03-23"},{"lineNumber":199,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-23"},{"lineNumber":200,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":201,"author":{"gitId":"jiahui0309"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2024-03-23"},{"lineNumber":202,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":203,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":204,"author":{"gitId":"jiahui0309"},"content":".menu .left-container {","lastModifiedDate":"2024-03-23"},{"lineNumber":205,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":206,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":207,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":208,"author":{"gitId":"jiahui0309"},"content":"/*","lastModifiedDate":"2024-03-23"},{"lineNumber":209,"author":{"gitId":"jiahui0309"},"content":" * Metro style Push Button","lastModifiedDate":"2024-03-23"},{"lineNumber":210,"author":{"gitId":"jiahui0309"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2024-03-23"},{"lineNumber":211,"author":{"gitId":"jiahui0309"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2024-03-23"},{"lineNumber":212,"author":{"gitId":"jiahui0309"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":213,"author":{"gitId":"jiahui0309"},"content":".button {","lastModifiedDate":"2024-03-23"},{"lineNumber":214,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2024-03-23"},{"lineNumber":215,"author":{"gitId":"jiahui0309"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2024-03-23"},{"lineNumber":216,"author":{"gitId":"jiahui0309"},"content":" -fx-border-width: 2;","lastModifiedDate":"2024-03-23"},{"lineNumber":217,"author":{"gitId":"jiahui0309"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":218,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-23"},{"lineNumber":219,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2024-03-23"},{"lineNumber":220,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-23"},{"lineNumber":221,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2024-03-23"},{"lineNumber":222,"author":{"gitId":"jiahui0309"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2024-03-23"},{"lineNumber":223,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":224,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":225,"author":{"gitId":"jiahui0309"},"content":".button:hover {","lastModifiedDate":"2024-03-23"},{"lineNumber":226,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2024-03-23"},{"lineNumber":227,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":228,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":229,"author":{"gitId":"jiahui0309"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2024-03-23"},{"lineNumber":230,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":231,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2024-03-23"},{"lineNumber":232,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":233,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":234,"author":{"gitId":"jiahui0309"},"content":".button:focused {","lastModifiedDate":"2024-03-23"},{"lineNumber":235,"author":{"gitId":"jiahui0309"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2024-03-23"},{"lineNumber":236,"author":{"gitId":"jiahui0309"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":237,"author":{"gitId":"jiahui0309"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2024-03-23"},{"lineNumber":238,"author":{"gitId":"jiahui0309"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":239,"author":{"gitId":"jiahui0309"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":240,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":241,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":242,"author":{"gitId":"jiahui0309"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2024-03-23"},{"lineNumber":243,"author":{"gitId":"jiahui0309"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2024-03-23"},{"lineNumber":244,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-23"},{"lineNumber":245,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":246,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":247,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":248,"author":{"gitId":"jiahui0309"},"content":".button:default {","lastModifiedDate":"2024-03-23"},{"lineNumber":249,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2024-03-23"},{"lineNumber":250,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":251,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":252,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":253,"author":{"gitId":"jiahui0309"},"content":".button:default:hover {","lastModifiedDate":"2024-03-23"},{"lineNumber":254,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2024-03-23"},{"lineNumber":255,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":256,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":257,"author":{"gitId":"jiahui0309"},"content":".dialog-pane {","lastModifiedDate":"2024-03-23"},{"lineNumber":258,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-23"},{"lineNumber":259,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":260,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":261,"author":{"gitId":"jiahui0309"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2024-03-23"},{"lineNumber":262,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-23"},{"lineNumber":263,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":264,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":265,"author":{"gitId":"jiahui0309"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2024-03-23"},{"lineNumber":266,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2024-03-23"},{"lineNumber":267,"author":{"gitId":"jiahui0309"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-23"},{"lineNumber":268,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":269,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":270,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":271,"author":{"gitId":"jiahui0309"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2024-03-23"},{"lineNumber":272,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2024-03-23"},{"lineNumber":273,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":274,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":275,"author":{"gitId":"jiahui0309"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2024-03-23"},{"lineNumber":276,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-03-23"},{"lineNumber":277,"author":{"gitId":"jiahui0309"},"content":" -fx-font-style: italic;","lastModifiedDate":"2024-03-23"},{"lineNumber":278,"author":{"gitId":"jiahui0309"},"content":" -fx-fill: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":279,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":280,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":281,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":282,"author":{"gitId":"jiahui0309"},"content":".scroll-bar {","lastModifiedDate":"2024-03-23"},{"lineNumber":283,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":284,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":285,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":286,"author":{"gitId":"jiahui0309"},"content":".scroll-bar .thumb {","lastModifiedDate":"2024-03-23"},{"lineNumber":287,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: derive(#ffffff, -20%);","lastModifiedDate":"2024-03-23"},{"lineNumber":288,"author":{"gitId":"jiahui0309"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2024-03-23"},{"lineNumber":289,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":290,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":291,"author":{"gitId":"jiahui0309"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2024-03-23"},{"lineNumber":292,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":293,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":294,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":295,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":296,"author":{"gitId":"jiahui0309"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2024-03-23"},{"lineNumber":297,"author":{"gitId":"jiahui0309"},"content":" -fx-shape: \" \";","lastModifiedDate":"2024-03-23"},{"lineNumber":298,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":299,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":300,"author":{"gitId":"jiahui0309"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2024-03-23"},{"lineNumber":301,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2024-03-23"},{"lineNumber":302,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":303,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":304,"author":{"gitId":"jiahui0309"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2024-03-23"},{"lineNumber":305,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":306,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":307,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":308,"author":{"gitId":"jiahui0309"},"content":"#cardPane {","lastModifiedDate":"2024-03-23"},{"lineNumber":309,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":310,"author":{"gitId":"jiahui0309"},"content":" -fx-border-width: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":311,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":312,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":313,"author":{"gitId":"jiahui0309"},"content":"#commandTypeLabel {","lastModifiedDate":"2024-03-23"},{"lineNumber":314,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2024-03-23"},{"lineNumber":315,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2024-03-23"},{"lineNumber":316,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":317,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":318,"author":{"gitId":"jiahui0309"},"content":"#commandTextField {","lastModifiedDate":"2024-03-23"},{"lineNumber":319,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2024-03-23"},{"lineNumber":320,"author":{"gitId":"jiahui0309"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":321,"author":{"gitId":"jiahui0309"},"content":" -fx-border-color: #383838 #383838 #383838 #383838;","lastModifiedDate":"2024-03-23"},{"lineNumber":322,"author":{"gitId":"jiahui0309"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":323,"author":{"gitId":"jiahui0309"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":324,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-23"},{"lineNumber":325,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 15pt;","lastModifiedDate":"2024-03-23"},{"lineNumber":326,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":327,"author":{"gitId":"jiahui0309"},"content":" -fx-border-radius: 10px;","lastModifiedDate":"2024-03-23"},{"lineNumber":328,"author":{"gitId":"jiahui0309"},"content":" -fx-prompt-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":329,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":330,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":331,"author":{"gitId":"jiahui0309"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2024-03-23"},{"lineNumber":332,"author":{"gitId":"jiahui0309"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":333,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":334,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":335,"author":{"gitId":"jiahui0309"},"content":"#resultDisplay .content {","lastModifiedDate":"2024-03-23"},{"lineNumber":336,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":337,"author":{"gitId":"jiahui0309"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":338,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":339,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":340,"author":{"gitId":"jiahui0309"},"content":"#personal_info {","lastModifiedDate":"2024-03-23"},{"lineNumber":341,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 3 5 3 5;","lastModifiedDate":"2024-03-23"},{"lineNumber":342,"author":{"gitId":"jiahui0309"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2024-03-23"},{"lineNumber":343,"author":{"gitId":"jiahui0309"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2024-03-23"},{"lineNumber":344,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2024-03-23"},{"lineNumber":345,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":346,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":347,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":348,"author":{"gitId":"jiahui0309"},"content":"#personal_info .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":349,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":350,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 16;","lastModifiedDate":"2024-03-23"},{"lineNumber":351,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"jiahui0309":351}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":14,"author":{"gitId":"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":"jiahui0309"},"content":" \u003cURL value\u003d\"@LightTheme.css\" /\u003e","lastModifiedDate":"2024-03-23"},{"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":"jiahui0309"},"content":" minHeight\u003d\"170\" prefHeight\u003d\"170\" maxHeight\u003d\"170\"\u003e","lastModifiedDate":"2024-03-24"},{"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,"-":55,"jiahui0309":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":"jiahui0309"},"content":" \u003cHBox spacing\u003d\"5\" fx:id\u003d\"personal_info\" \u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":" \u003cLabel fx:id\u003d\"sex\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$sex\" /\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" \u003cLabel fx:id\u003d\"age\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$age\" /\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" \u003cLabel text\u003d\"y/o\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":" \u003cLabel text\u003d\"IC:\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":" \u003cLabel fx:id\u003d\"ic\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$ic\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"jiahui0309"},"content":" \u003cLabel text\u003d\"Phone:\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"jiahui0309"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"jiahui0309"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":" \u003cLabel text\u003d\"Address:\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"jiahui0309"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"jiahui0309"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"jiahui0309"},"content":" \u003cLabel text\u003d\"Email:\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"jiahui0309"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"jiahui0309"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"TOP_LEFT\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"jiahui0309"},"content":" \u003cLabel text\u003d\"Note:\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"tengcharmaine"},"content":" \u003cLabel fx:id\u003d\"note\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$note\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"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":{"Jayne1010":1,"tengcharmaine":1,"-":36,"jiahui0309":22}},{"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}}] +[{"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 java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"tengcharmaine"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"Jayne1010"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_IC;","lastModifiedDate":"2024-03-24"},{"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":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"tengcharmaine"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"tengcharmaine"},"content":"import seedu.address.model.Model;","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":"import seedu.address.model.person.Person;","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":" * Changes the note of an existing person in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"tengcharmaine"},"content":"public class AddNoteCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"tengcharmaine"},"content":" public static final String COMMAND_WORD \u003d \"addnote\";","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"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":26,"author":{"gitId":"Jayne1010"},"content":" + \"the specified IC (must be a valid identity card number). \\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"Jayne1010"},"content":" + \"Existing remark will be appended by default. \\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"Jayne1010"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_IC + \"IC \"","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"tengcharmaine"},"content":" + PREFIX_NOTE + \"NOTE \\n\"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Jayne1010"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_IC + \"S0123456Q \"","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_NOTE + \"Diabetes \\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"Jayne1010"},"content":" + \"To replace the original note, add -replace at the end of your command. \\n\"","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"Jayne1010"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_IC + \"S0123456Q \"","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"Jayne1010"},"content":" + PREFIX_NOTE + \"Diabetes -replace\";","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"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":40,"author":{"gitId":"tengcharmaine"},"content":" private final IdentityCardNumberMatchesPredicate icPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"tengcharmaine"},"content":" private final Note note;","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"tengcharmaine"},"content":" private final boolean isReplace;","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":"tengcharmaine"},"content":" * @param icPredicate of the person in the filtered person list to edit the note","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"tengcharmaine"},"content":" * @param note of the person to be updated to","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"tengcharmaine"},"content":" public AddNoteCommand(IdentityCardNumberMatchesPredicate icPredicate, Note note, boolean isReplace) {","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"tengcharmaine"},"content":" requireAllNonNull(icPredicate, note);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"tengcharmaine"},"content":" this.icPredicate \u003d icPredicate;","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"tengcharmaine"},"content":" this.note \u003d note;","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"tengcharmaine"},"content":" this.isReplace \u003d isReplace;","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":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"tengcharmaine"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"tengcharmaine"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"tengcharmaine"},"content":" List\u003cPerson\u003e allPatients \u003d model.getAddressBook().getPersonList();","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"tengcharmaine"},"content":" Person personToEdit \u003d allPatients.stream()","lastModifiedDate":"2024-03-24"},{"lineNumber":62,"author":{"gitId":"tengcharmaine"},"content":" .filter(icPredicate::test)","lastModifiedDate":"2024-03-24"},{"lineNumber":63,"author":{"gitId":"tengcharmaine"},"content":" .findFirst()","lastModifiedDate":"2024-03-24"},{"lineNumber":64,"author":{"gitId":"tengcharmaine"},"content":" .orElseThrow(() -\u003e new CommandException(Messages.MESSAGE_NO_MATCHING_IC));","lastModifiedDate":"2024-03-24"},{"lineNumber":65,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"tengcharmaine"},"content":" Person editedPerson;","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"tengcharmaine"},"content":" if (isReplace || personToEdit.getNote().equals(Note.DEFAULT)) {","lastModifiedDate":"2024-03-18"},{"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(), note, personToEdit.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"tengcharmaine"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"tengcharmaine"},"content":" Note updatedNote \u003d personToEdit.getNote().append(\"\\n\" + note.toString());","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"tengcharmaine"},"content":" editedPerson \u003d new Person(personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getIdentityCardNumber(), personToEdit.getAge(), personToEdit.getSex(),","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getAddress(), updatedNote, personToEdit.getTags());","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"tengcharmaine"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"tengcharmaine"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"tengcharmaine"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"tengcharmaine"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"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":86,"author":{"gitId":"tengcharmaine"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"tengcharmaine"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"tengcharmaine"},"content":" public String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"tengcharmaine"},"content":" return String.format(MESSAGE_MODIFY_NOTE_SUCCESS, personToEdit.getName(),","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"tengcharmaine"},"content":" personToEdit.getIdentityCardNumber());","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"tengcharmaine"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"tengcharmaine"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"tengcharmaine"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"tengcharmaine"},"content":" return true;","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":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"tengcharmaine"},"content":" if (!(other instanceof AddNoteCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"tengcharmaine"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"tengcharmaine"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"tengcharmaine"},"content":" AddNoteCommand e \u003d (AddNoteCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"tengcharmaine"},"content":" return icPredicate.equals(e.icPredicate)","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"tengcharmaine"},"content":" \u0026\u0026 note.equals(e.note)","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"tengcharmaine"},"content":" \u0026\u0026 isReplace \u003d\u003d e.isReplace;","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"tengcharmaine"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"tengcharmaine"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"Jayne1010":12,"tengcharmaine":97}},{"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":"jiahui0309"},"content":" alert.getDialogPane().getStylesheets().add(\"view/LightTheme.css\");","lastModifiedDate":"2024-03-23"},{"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,"-":86,"jiahui0309":1}},{"path":"src/main/resources/view/HelpWindow.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#copyButton, #helpMessage {","lastModifiedDate":"2021-08-28"},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2022-01-02"},{"lineNumber":3,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"#copyButton {","lastModifiedDate":"2022-01-02"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-background-color: dimgray;","lastModifiedDate":"2022-01-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":10,"author":{"gitId":"-"},"content":"#copyButton:hover {","lastModifiedDate":"2022-01-02"},{"lineNumber":11,"author":{"gitId":"-"},"content":" -fx-background-color: gray;","lastModifiedDate":"2022-01-02"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":"#copyButton:armed {","lastModifiedDate":"2022-01-02"},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-background-color: darkgray;","lastModifiedDate":"2022-01-02"},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":"#helpMessageContainer {","lastModifiedDate":"2022-01-02"},{"lineNumber":19,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2022-01-02"},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-08-28"}],"authorContributionMap":{"-":19,"jiahui0309":1}},{"path":"src/main/resources/view/LightTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jiahui0309"},"content":".background {","lastModifiedDate":"2024-03-23"},{"lineNumber":2,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":3,"author":{"gitId":"jiahui0309"},"content":" background-color: white; /* Used in the default.html file */","lastModifiedDate":"2024-03-23"},{"lineNumber":4,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":5,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":6,"author":{"gitId":"jiahui0309"},"content":".label {","lastModifiedDate":"2024-03-23"},{"lineNumber":7,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-23"},{"lineNumber":8,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-23"},{"lineNumber":9,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2024-03-23"},{"lineNumber":10,"author":{"gitId":"jiahui0309"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2024-03-23"},{"lineNumber":11,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":12,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":13,"author":{"gitId":"jiahui0309"},"content":".label-bright {","lastModifiedDate":"2024-03-23"},{"lineNumber":14,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-23"},{"lineNumber":15,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-23"},{"lineNumber":16,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":17,"author":{"gitId":"jiahui0309"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":18,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":19,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":20,"author":{"gitId":"jiahui0309"},"content":".label-header {","lastModifiedDate":"2024-03-23"},{"lineNumber":21,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 34pt;","lastModifiedDate":"2024-03-23"},{"lineNumber":22,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-23"},{"lineNumber":23,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":24,"author":{"gitId":"jiahui0309"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":25,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":26,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":27,"author":{"gitId":"jiahui0309"},"content":".text-field {","lastModifiedDate":"2024-03-23"},{"lineNumber":28,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2024-03-23"},{"lineNumber":29,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":".tab-pane {","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":" -fx-min-height: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":" -fx-max-height: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":".table-view {","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"jiahui0309"},"content":" -fx-base: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"jiahui0309"},"content":" -fx-control-inner-background: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":45,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"jiahui0309"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 5;","lastModifiedDate":"2024-03-23"},{"lineNumber":49,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"jiahui0309"},"content":".table-view .column-header-background {","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":53,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"jiahui0309"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"jiahui0309"},"content":" -fx-size: 35;","lastModifiedDate":"2024-03-23"},{"lineNumber":57,"author":{"gitId":"jiahui0309"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":59,"author":{"gitId":"jiahui0309"},"content":" -fx-border-color:","lastModifiedDate":"2024-03-23"},{"lineNumber":60,"author":{"gitId":"jiahui0309"},"content":" transparent","lastModifiedDate":"2024-03-23"},{"lineNumber":61,"author":{"gitId":"jiahui0309"},"content":" transparent","lastModifiedDate":"2024-03-23"},{"lineNumber":62,"author":{"gitId":"jiahui0309"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2024-03-23"},{"lineNumber":63,"author":{"gitId":"jiahui0309"},"content":" transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":64,"author":{"gitId":"jiahui0309"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":65,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":66,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":67,"author":{"gitId":"jiahui0309"},"content":".table-view .column-header .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":68,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 22pt;","lastModifiedDate":"2024-03-23"},{"lineNumber":69,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-23"},{"lineNumber":70,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":71,"author":{"gitId":"jiahui0309"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2024-03-23"},{"lineNumber":72,"author":{"gitId":"jiahui0309"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":73,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":74,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":75,"author":{"gitId":"jiahui0309"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2024-03-23"},{"lineNumber":76,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2024-03-23"},{"lineNumber":77,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":78,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":79,"author":{"gitId":"jiahui0309"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2024-03-23"},{"lineNumber":80,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":81,"author":{"gitId":"jiahui0309"},"content":" -fx-border-color: transparent transparent transparent black;","lastModifiedDate":"2024-03-23"},{"lineNumber":82,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":83,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":84,"author":{"gitId":"jiahui0309"},"content":".split-pane {","lastModifiedDate":"2024-03-23"},{"lineNumber":85,"author":{"gitId":"jiahui0309"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":86,"author":{"gitId":"jiahui0309"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":87,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":88,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":89,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":90,"author":{"gitId":"jiahui0309"},"content":".list-view {","lastModifiedDate":"2024-03-23"},{"lineNumber":91,"author":{"gitId":"jiahui0309"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":92,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":93,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":94,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":95,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":96,"author":{"gitId":"jiahui0309"},"content":".list-cell {","lastModifiedDate":"2024-03-23"},{"lineNumber":97,"author":{"gitId":"jiahui0309"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":98,"author":{"gitId":"jiahui0309"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":99,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":100,"author":{"gitId":"jiahui0309"},"content":" -fx-background-radius: 10px;","lastModifiedDate":"2024-03-23"},{"lineNumber":101,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-25"},{"lineNumber":102,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":103,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":104,"author":{"gitId":"jiahui0309"},"content":".list-cell:filled:even {","lastModifiedDate":"2024-03-23"},{"lineNumber":105,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #f2f2f2;","lastModifiedDate":"2024-03-23"},{"lineNumber":106,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":107,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":108,"author":{"gitId":"jiahui0309"},"content":".list-cell:filled:odd {","lastModifiedDate":"2024-03-23"},{"lineNumber":109,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #dedede;","lastModifiedDate":"2024-03-23"},{"lineNumber":110,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":111,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":112,"author":{"gitId":"jiahui0309"},"content":".list-cell:filled:selected {","lastModifiedDate":"2024-03-23"},{"lineNumber":113,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #bdbdbd;","lastModifiedDate":"2024-03-23"},{"lineNumber":114,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":115,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":116,"author":{"gitId":"jiahui0309"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2024-03-23"},{"lineNumber":117,"author":{"gitId":"jiahui0309"},"content":" -fx-border-color: #050505;","lastModifiedDate":"2024-03-23"},{"lineNumber":118,"author":{"gitId":"jiahui0309"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":119,"author":{"gitId":"jiahui0309"},"content":" -fx-background-radius: 10px;","lastModifiedDate":"2024-03-23"},{"lineNumber":120,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":121,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":122,"author":{"gitId":"jiahui0309"},"content":".list-cell .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":123,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":124,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":125,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":126,"author":{"gitId":"jiahui0309"},"content":".cell_big_label {","lastModifiedDate":"2024-03-23"},{"lineNumber":127,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-03-23"},{"lineNumber":128,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2024-03-23"},{"lineNumber":129,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-23"},{"lineNumber":130,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":131,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":132,"author":{"gitId":"jiahui0309"},"content":".cell_small_label {","lastModifiedDate":"2024-03-23"},{"lineNumber":133,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2024-03-23"},{"lineNumber":134,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 15px;","lastModifiedDate":"2024-03-23"},{"lineNumber":135,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2024-03-23"},{"lineNumber":136,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":137,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":138,"author":{"gitId":"jiahui0309"},"content":".stack-pane {","lastModifiedDate":"2024-03-23"},{"lineNumber":139,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":140,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":141,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":142,"author":{"gitId":"jiahui0309"},"content":".pane-with-border {","lastModifiedDate":"2024-03-23"},{"lineNumber":143,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":144,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":145,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":146,"author":{"gitId":"jiahui0309"},"content":".status-bar {","lastModifiedDate":"2024-03-23"},{"lineNumber":147,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #dedede;","lastModifiedDate":"2024-03-23"},{"lineNumber":148,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":149,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":150,"author":{"gitId":"jiahui0309"},"content":".result-display {","lastModifiedDate":"2024-03-23"},{"lineNumber":151,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-23"},{"lineNumber":152,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 15pt;","lastModifiedDate":"2024-03-23"},{"lineNumber":153,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":154,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":155,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":156,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":157,"author":{"gitId":"jiahui0309"},"content":".result-display .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":158,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2024-03-23"},{"lineNumber":159,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":160,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":161,"author":{"gitId":"jiahui0309"},"content":".status-bar .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":162,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-23"},{"lineNumber":163,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":164,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 4px;","lastModifiedDate":"2024-03-23"},{"lineNumber":165,"author":{"gitId":"jiahui0309"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2024-03-23"},{"lineNumber":166,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":167,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":168,"author":{"gitId":"jiahui0309"},"content":".status-bar-with-border {","lastModifiedDate":"2024-03-23"},{"lineNumber":169,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #dedede;","lastModifiedDate":"2024-03-23"},{"lineNumber":170,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":171,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":172,"author":{"gitId":"jiahui0309"},"content":".status-bar-with-border .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":173,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":174,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":175,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":176,"author":{"gitId":"jiahui0309"},"content":".grid-pane {","lastModifiedDate":"2024-03-23"},{"lineNumber":177,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #dedede;","lastModifiedDate":"2024-03-23"},{"lineNumber":178,"author":{"gitId":"jiahui0309"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-23"},{"lineNumber":179,"author":{"gitId":"jiahui0309"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2024-03-23"},{"lineNumber":180,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":181,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":182,"author":{"gitId":"jiahui0309"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2024-03-23"},{"lineNumber":183,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2024-03-23"},{"lineNumber":184,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":185,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":186,"author":{"gitId":"jiahui0309"},"content":".context-menu {","lastModifiedDate":"2024-03-23"},{"lineNumber":187,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":188,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":189,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":190,"author":{"gitId":"jiahui0309"},"content":".context-menu .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":191,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":192,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":193,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":194,"author":{"gitId":"jiahui0309"},"content":".menu-bar {","lastModifiedDate":"2024-03-23"},{"lineNumber":195,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":196,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":197,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":198,"author":{"gitId":"jiahui0309"},"content":".menu-bar .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":199,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 16pt;","lastModifiedDate":"2024-03-23"},{"lineNumber":200,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-23"},{"lineNumber":201,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":202,"author":{"gitId":"jiahui0309"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2024-03-23"},{"lineNumber":203,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":204,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":205,"author":{"gitId":"jiahui0309"},"content":".menu .left-container {","lastModifiedDate":"2024-03-23"},{"lineNumber":206,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":207,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":208,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":209,"author":{"gitId":"jiahui0309"},"content":"/*","lastModifiedDate":"2024-03-23"},{"lineNumber":210,"author":{"gitId":"jiahui0309"},"content":" * Metro style Push Button","lastModifiedDate":"2024-03-23"},{"lineNumber":211,"author":{"gitId":"jiahui0309"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2024-03-23"},{"lineNumber":212,"author":{"gitId":"jiahui0309"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2024-03-23"},{"lineNumber":213,"author":{"gitId":"jiahui0309"},"content":" */","lastModifiedDate":"2024-03-23"},{"lineNumber":214,"author":{"gitId":"jiahui0309"},"content":".button {","lastModifiedDate":"2024-03-23"},{"lineNumber":215,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2024-03-23"},{"lineNumber":216,"author":{"gitId":"jiahui0309"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2024-03-23"},{"lineNumber":217,"author":{"gitId":"jiahui0309"},"content":" -fx-border-width: 2;","lastModifiedDate":"2024-03-23"},{"lineNumber":218,"author":{"gitId":"jiahui0309"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":219,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-23"},{"lineNumber":220,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2024-03-23"},{"lineNumber":221,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-03-23"},{"lineNumber":222,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2024-03-23"},{"lineNumber":223,"author":{"gitId":"jiahui0309"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2024-03-23"},{"lineNumber":224,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":225,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":226,"author":{"gitId":"jiahui0309"},"content":".button:hover {","lastModifiedDate":"2024-03-23"},{"lineNumber":227,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2024-03-23"},{"lineNumber":228,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":229,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":230,"author":{"gitId":"jiahui0309"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2024-03-23"},{"lineNumber":231,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":232,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2024-03-23"},{"lineNumber":233,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":234,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":235,"author":{"gitId":"jiahui0309"},"content":".button:focused {","lastModifiedDate":"2024-03-23"},{"lineNumber":236,"author":{"gitId":"jiahui0309"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2024-03-23"},{"lineNumber":237,"author":{"gitId":"jiahui0309"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":238,"author":{"gitId":"jiahui0309"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2024-03-23"},{"lineNumber":239,"author":{"gitId":"jiahui0309"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":240,"author":{"gitId":"jiahui0309"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":241,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":242,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":243,"author":{"gitId":"jiahui0309"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2024-03-23"},{"lineNumber":244,"author":{"gitId":"jiahui0309"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2024-03-23"},{"lineNumber":245,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-23"},{"lineNumber":246,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":247,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":248,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":249,"author":{"gitId":"jiahui0309"},"content":".button:default {","lastModifiedDate":"2024-03-23"},{"lineNumber":250,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2024-03-23"},{"lineNumber":251,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":252,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":253,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":254,"author":{"gitId":"jiahui0309"},"content":".button:default:hover {","lastModifiedDate":"2024-03-23"},{"lineNumber":255,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2024-03-23"},{"lineNumber":256,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":257,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":258,"author":{"gitId":"jiahui0309"},"content":".dialog-pane {","lastModifiedDate":"2024-03-23"},{"lineNumber":259,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-23"},{"lineNumber":260,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":261,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":262,"author":{"gitId":"jiahui0309"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2024-03-23"},{"lineNumber":263,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2024-03-23"},{"lineNumber":264,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":265,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":266,"author":{"gitId":"jiahui0309"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2024-03-23"},{"lineNumber":267,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2024-03-23"},{"lineNumber":268,"author":{"gitId":"jiahui0309"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2024-03-23"},{"lineNumber":269,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":270,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":271,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":272,"author":{"gitId":"jiahui0309"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2024-03-23"},{"lineNumber":273,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2024-03-23"},{"lineNumber":274,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":275,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":276,"author":{"gitId":"jiahui0309"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2024-03-23"},{"lineNumber":277,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 20px;","lastModifiedDate":"2024-03-23"},{"lineNumber":278,"author":{"gitId":"jiahui0309"},"content":" -fx-font-style: italic;","lastModifiedDate":"2024-03-23"},{"lineNumber":279,"author":{"gitId":"jiahui0309"},"content":" -fx-fill: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":280,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":281,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":282,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":283,"author":{"gitId":"jiahui0309"},"content":".scroll-bar {","lastModifiedDate":"2024-03-23"},{"lineNumber":284,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #ffffff;","lastModifiedDate":"2024-03-23"},{"lineNumber":285,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":286,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":287,"author":{"gitId":"jiahui0309"},"content":".scroll-bar .thumb {","lastModifiedDate":"2024-03-23"},{"lineNumber":288,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: derive(#ffffff, -20%);","lastModifiedDate":"2024-03-23"},{"lineNumber":289,"author":{"gitId":"jiahui0309"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2024-03-23"},{"lineNumber":290,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":291,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":292,"author":{"gitId":"jiahui0309"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2024-03-23"},{"lineNumber":293,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":294,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":295,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":296,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":297,"author":{"gitId":"jiahui0309"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2024-03-23"},{"lineNumber":298,"author":{"gitId":"jiahui0309"},"content":" -fx-shape: \" \";","lastModifiedDate":"2024-03-23"},{"lineNumber":299,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":300,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":301,"author":{"gitId":"jiahui0309"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2024-03-23"},{"lineNumber":302,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2024-03-23"},{"lineNumber":303,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":304,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":305,"author":{"gitId":"jiahui0309"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2024-03-23"},{"lineNumber":306,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":307,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":308,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":309,"author":{"gitId":"jiahui0309"},"content":"#cardPane {","lastModifiedDate":"2024-03-23"},{"lineNumber":310,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2024-03-23"},{"lineNumber":311,"author":{"gitId":"jiahui0309"},"content":" -fx-border-width: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":312,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":313,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":314,"author":{"gitId":"jiahui0309"},"content":"#commandTypeLabel {","lastModifiedDate":"2024-03-23"},{"lineNumber":315,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2024-03-23"},{"lineNumber":316,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2024-03-23"},{"lineNumber":317,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":318,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":319,"author":{"gitId":"jiahui0309"},"content":"#commandTextField {","lastModifiedDate":"2024-03-23"},{"lineNumber":320,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2024-03-23"},{"lineNumber":321,"author":{"gitId":"jiahui0309"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":322,"author":{"gitId":"jiahui0309"},"content":" -fx-border-color: #383838 #383838 #383838 #383838;","lastModifiedDate":"2024-03-23"},{"lineNumber":323,"author":{"gitId":"jiahui0309"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":324,"author":{"gitId":"jiahui0309"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-03-23"},{"lineNumber":325,"author":{"gitId":"jiahui0309"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2024-03-23"},{"lineNumber":326,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 15pt;","lastModifiedDate":"2024-03-23"},{"lineNumber":327,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":328,"author":{"gitId":"jiahui0309"},"content":" -fx-border-radius: 10px;","lastModifiedDate":"2024-03-23"},{"lineNumber":329,"author":{"gitId":"jiahui0309"},"content":" -fx-prompt-text-fill: black;","lastModifiedDate":"2024-03-23"},{"lineNumber":330,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":331,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":332,"author":{"gitId":"jiahui0309"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2024-03-23"},{"lineNumber":333,"author":{"gitId":"jiahui0309"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2024-03-23"},{"lineNumber":334,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":335,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":336,"author":{"gitId":"jiahui0309"},"content":"#resultDisplay .content {","lastModifiedDate":"2024-03-23"},{"lineNumber":337,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":338,"author":{"gitId":"jiahui0309"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2024-03-23"},{"lineNumber":339,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":340,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":341,"author":{"gitId":"jiahui0309"},"content":"#personal_info {","lastModifiedDate":"2024-03-23"},{"lineNumber":342,"author":{"gitId":"jiahui0309"},"content":" -fx-padding: 3 5 3 5;","lastModifiedDate":"2024-03-23"},{"lineNumber":343,"author":{"gitId":"jiahui0309"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2024-03-23"},{"lineNumber":344,"author":{"gitId":"jiahui0309"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2024-03-23"},{"lineNumber":345,"author":{"gitId":"jiahui0309"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2024-03-23"},{"lineNumber":346,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":347,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"},{"lineNumber":348,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":349,"author":{"gitId":"jiahui0309"},"content":"#personal_info .label {","lastModifiedDate":"2024-03-23"},{"lineNumber":350,"author":{"gitId":"jiahui0309"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-23"},{"lineNumber":351,"author":{"gitId":"jiahui0309"},"content":" -fx-font-size: 16;","lastModifiedDate":"2024-03-23"},{"lineNumber":352,"author":{"gitId":"jiahui0309"},"content":"}","lastModifiedDate":"2024-03-23"}],"authorContributionMap":{"jiahui0309":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":"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":"jiahui0309"},"content":" \u003cURL value\u003d\"@LightTheme.css\" /\u003e","lastModifiedDate":"2024-03-23"},{"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":"jiahui0309"},"content":" minHeight\u003d\"170\" prefHeight\u003d\"170\" maxHeight\u003d\"170\"\u003e","lastModifiedDate":"2024-03-24"},{"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,"-":55,"jiahui0309":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":"jiahui0309"},"content":" \u003cHBox spacing\u003d\"5\" fx:id\u003d\"personal_info\" \u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":30,"author":{"gitId":"jiahui0309"},"content":" \u003cLabel fx:id\u003d\"sex\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$sex\" /\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":31,"author":{"gitId":"jiahui0309"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":32,"author":{"gitId":"jiahui0309"},"content":" \u003cLabel fx:id\u003d\"age\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$age\" /\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":33,"author":{"gitId":"jiahui0309"},"content":" \u003cLabel text\u003d\"y/o\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03"},{"lineNumber":35,"author":{"gitId":"jiahui0309"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":36,"author":{"gitId":"jiahui0309"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":37,"author":{"gitId":"jiahui0309"},"content":"","lastModifiedDate":"2024-03-23"},{"lineNumber":38,"author":{"gitId":"jiahui0309"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":39,"author":{"gitId":"jiahui0309"},"content":" \u003cLabel text\u003d\"IC:\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":40,"author":{"gitId":"Jayne1010"},"content":" \u003cLabel fx:id\u003d\"ic\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$ic\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"jiahui0309"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":42,"author":{"gitId":"jiahui0309"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":43,"author":{"gitId":"jiahui0309"},"content":" \u003cLabel text\u003d\"Phone:\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"jiahui0309"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":46,"author":{"gitId":"jiahui0309"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":47,"author":{"gitId":"jiahui0309"},"content":" \u003cLabel text\u003d\"Address:\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":49,"author":{"gitId":"jiahui0309"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":50,"author":{"gitId":"jiahui0309"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":51,"author":{"gitId":"jiahui0309"},"content":" \u003cLabel text\u003d\"Email:\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"jiahui0309"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":54,"author":{"gitId":"jiahui0309"},"content":" \u003cHBox spacing\u003d\"5\" alignment\u003d\"TOP_LEFT\"\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":55,"author":{"gitId":"jiahui0309"},"content":" \u003cLabel text\u003d\"Note:\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":56,"author":{"gitId":"tengcharmaine"},"content":" \u003cLabel fx:id\u003d\"note\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$note\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"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":{"Jayne1010":1,"tengcharmaine":1,"-":36,"jiahui0309":22}},{"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 d0a3d20e..4e8de286 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":{}}]},{"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":{}},{"hash":"afe6c2235a41604158057e33ac03a42597b15e67","isMergeCommit":false,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":8}}},{"hash":"7a4490a54061e68f6e3d7bdb92b532695a604bcb","isMergeCommit":true,"messageTitle":"Merge pull request #108 from jiahui0309/edit-ui","messageBody":"Edit UI features of ClinicMate","fileTypesAndContributionMap":{}},{"hash":"08c1a6a34d2d3c719cbf4fae780407c65c3d7d3a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7a4e1a2a84581a798594a9aa0edb24f508d0b52e","isMergeCommit":true,"messageTitle":"Merge pull request #115 from Jayne1010/master","messageBody":"Resolve merge conflict","fileTypesAndContributionMap":{}},{"hash":"50cc7143c635119463d8675278d11b7262159208","isMergeCommit":true,"messageTitle":"Merge pull request #113 from tengcharmaine/nonexistentic_addnote","messageBody":"Update addnote to display full list when nonexistent ic is used","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":{}},{"hash":"874eccc4f0f3eda22b3e2e643825989a1bcea4d0","isMergeCommit":false,"messageTitle":"Update addnote to display full list when nonexistent ic is used","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":6}}}]}],"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":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"2595550c9fdd52be07b388f1546750a6e51ce51d","isMergeCommit":false,"messageTitle":"Edit UI features of ClinicMate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":381,"deletions":10}}},{"hash":"30e7cb0f2c53c07e06224d4dac6592d4632070a9","isMergeCommit":false,"messageTitle":"Increase UI font size for better readability","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":15}}},{"hash":"73099e8a7d84cbf8f87eda7b4f6e8d605d6a589a","isMergeCommit":false,"messageTitle":"Add testcases for UiManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":50,"deletions":0}}},{"hash":"6cf7d891d0c48fd9588b49ae4ba53c42335d9380","isMergeCommit":false,"messageTitle":"Remove unsupported testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":7}}},{"hash":"a0f8cb7b12f9557f07bde057a1e373838faa21ce","isMergeCommit":false,"messageTitle":"Remove UiManagerTest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":43}}}]},{"date":"2024-03-24","commitResults":[{"hash":"51ad8c7e99813382f98f50dddf3f6177be90636f","isMergeCommit":false,"messageTitle":"Increase result box size","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"drustanyjt":{"docs":36,"functional-code":402,"test-code":506,"other":1},"Jayne1010":{"docs":182,"functional-code":261,"test-code":329},"tengcharmaine":{"docs":100,"functional-code":197,"test-code":163},"jiahui0309":{"docs":194,"functional-code":474,"test-code":93}},"authorContributionVariance":{"drustanyjt":181243.8,"Jayne1010":17701.768,"tengcharmaine":25624.623,"jiahui0309":11314.617},"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":{}},{"hash":"afe6c2235a41604158057e33ac03a42597b15e67","isMergeCommit":false,"messageTitle":"Resolve merge conflict","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":8}}},{"hash":"7a4490a54061e68f6e3d7bdb92b532695a604bcb","isMergeCommit":true,"messageTitle":"Merge pull request #108 from jiahui0309/edit-ui","messageBody":"Edit UI features of ClinicMate","fileTypesAndContributionMap":{}},{"hash":"08c1a6a34d2d3c719cbf4fae780407c65c3d7d3a","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-F14-2:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7a4e1a2a84581a798594a9aa0edb24f508d0b52e","isMergeCommit":true,"messageTitle":"Merge pull request #115 from Jayne1010/master","messageBody":"Resolve merge conflict","fileTypesAndContributionMap":{}},{"hash":"50cc7143c635119463d8675278d11b7262159208","isMergeCommit":true,"messageTitle":"Merge pull request #113 from tengcharmaine/nonexistentic_addnote","messageBody":"Update addnote to display full list when nonexistent ic is used","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":{}},{"hash":"874eccc4f0f3eda22b3e2e643825989a1bcea4d0","isMergeCommit":false,"messageTitle":"Update addnote to display full list when nonexistent ic is used","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":6}}}]}],"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":{}}]},{"date":"2024-03-23","commitResults":[{"hash":"2595550c9fdd52be07b388f1546750a6e51ce51d","isMergeCommit":false,"messageTitle":"Edit UI features of ClinicMate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":381,"deletions":10}}},{"hash":"30e7cb0f2c53c07e06224d4dac6592d4632070a9","isMergeCommit":false,"messageTitle":"Increase UI font size for better readability","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":15}}},{"hash":"73099e8a7d84cbf8f87eda7b4f6e8d605d6a589a","isMergeCommit":false,"messageTitle":"Add testcases for UiManagerTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":50,"deletions":0}}},{"hash":"6cf7d891d0c48fd9588b49ae4ba53c42335d9380","isMergeCommit":false,"messageTitle":"Remove unsupported testcase","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":7}}},{"hash":"a0f8cb7b12f9557f07bde057a1e373838faa21ce","isMergeCommit":false,"messageTitle":"Remove UiManagerTest class","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":43}}}]},{"date":"2024-03-24","commitResults":[{"hash":"51ad8c7e99813382f98f50dddf3f6177be90636f","isMergeCommit":false,"messageTitle":"Increase result box size","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-25","commitResults":[{"hash":"c401cfbf8813236f858eb5ce704366ea7ad26755","isMergeCommit":false,"messageTitle":"Fix UI bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"6796bfd3ab92cbd768d8e2a7c8726cffc1d2f120","isMergeCommit":true,"messageTitle":"Merge pull request #117 from jiahui0309/fix-ui-bugs","messageBody":"Fix UI bugs","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"drustanyjt":{"docs":36,"functional-code":402,"test-code":506,"other":1},"Jayne1010":{"docs":182,"functional-code":261,"test-code":329},"tengcharmaine":{"docs":100,"functional-code":197,"test-code":163},"jiahui0309":{"docs":194,"functional-code":475,"test-code":93}},"authorContributionVariance":{"drustanyjt":175917.61,"Jayne1010":17260.521,"tengcharmaine":24875.707,"jiahui0309":11001.047},"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-T11-2_tp_master/authorship.json b/AY2324S2-CS2103T-T11-2_tp_master/authorship.json index 3039ae2d..a43fd44e 100644 --- a/AY2324S2-CS2103T-T11-2_tp_master/authorship.json +++ b/AY2324S2-CS2103T-T11-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T11-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T11-2/tp/actions)","lastModifiedDate":"2024-02-21"},{"lineNumber":2,"author":{"gitId":"E0735389"},"content":"[![CodeCov Status](https://codecov.io/gh/AY2324S2-CS2103T-T11-2/tp/branch/master/graph/badge.svg)](https://app.codecov.io/gh/AY2324S2-CS2103T-T11-2/tp)","lastModifiedDate":"2024-03-07"},{"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":"reetmitra"},"content":"# NUSContacts","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"reetmitra"},"content":"NUSContacts is a desktop application for students to manage their contacts, specifically Tutors (Professors and Teaching Assistants) and course coordinators. It is 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, NUSContacts can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"E0735389"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"E0735389"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"E0735389"},"content":"Refer to [the project website](https://ay2324s2-cs2103t-t11-2.github.io/tp/) for more information.","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"E0735389":4,"reetmitra":4,"-":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":"E0735389"},"content":"check.dependsOn javadoc","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"E0735389"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"ChillinRage"},"content":" archiveFileName \u003d \u0027NUSContacts.jar\u0027","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"E0735389":2,"-":71,"ChillinRage":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":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","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":"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":"reetmitra"},"content":"## CS2103T T11-2 Team Members","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"reetmitra"},"content":"### Reet Mitra","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"reetmitra"},"content":"\u003cimg src\u003d\"images/reetmitra.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"reetmitra"},"content":"[[Github](https://github.com/reetmitra)]","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"reetmitra"},"content":"* Role: Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"reetmitra"},"content":"* Responsibilities: Code Testing","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"reetmitra"},"content":"### Bui Hong Duc","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"reetmitra"},"content":"\u003cimg src\u003d\"images/e0735389.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"reetmitra"},"content":"[[Github](https://github.com/E0735389)]","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"reetmitra"},"content":"* Role: Team Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"reetmitra"},"content":"* Responsibilities: Deliverables and Deadlines","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"reetmitra"},"content":"### Chong Chan How","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"reetmitra"},"content":"\u003cimg src\u003d\"images/chillinrage.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"reetmitra"},"content":"[[Github](https://github.com/ChillinRage)]","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"reetmitra"},"content":"* Responsibilities: Code Quality","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"reetmitra"},"content":"### Timothy Soh Yee Song","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"reetmitra"},"content":"\u003cimg src\u003d\"images/largecrowd.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"reetmitra"},"content":"[[Github](https://github.com/LargeCrowd)]","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"reetmitra"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"E0735389"},"content":"### Yang Heebeom","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"reetmitra"},"content":"\u003cimg src\u003d\"images/hibeom0929.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"reetmitra"},"content":"[[Github](https://github.com/Hibeom0929)]","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"E0735389":1,"reetmitra":21,"-":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":"-"},"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":"Hibeom0929"},"content":"* has a need to manage a significant number of contacts of NUS students, tutors, and professors","lastModifiedDate":"2024-03-07"},{"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":"Hibeom0929"},"content":"**Value proposition**:","lastModifiedDate":"2024-03-07"},{"lineNumber":272,"author":{"gitId":"Hibeom0929"},"content":"* manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-03-07"},{"lineNumber":273,"author":{"gitId":"Hibeom0929"},"content":"* allow NUS students to save and search up contacts of students/tutors/instructors and the courses they are in. (e.g. tutorial/lecture groupings)","lastModifiedDate":"2024-03-07"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"LargeCrowd"},"content":"|----------|--------------------------------------------|----------------------------------|-----------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-07"},{"lineNumber":282,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"LargeCrowd"},"content":"| `* * *` | user | add a new tutor | |","lastModifiedDate":"2024-03-07"},{"lineNumber":284,"author":{"gitId":"LargeCrowd"},"content":"| `* * *` | user | delete a tutor | remove entries that I no longer need |","lastModifiedDate":"2024-03-07"},{"lineNumber":285,"author":{"gitId":"LargeCrowd"},"content":"| `* * *` | user | find a tutor by name | locate details of tutors without having to go through the entire list |","lastModifiedDate":"2024-03-07"},{"lineNumber":286,"author":{"gitId":"LargeCrowd"},"content":"| `* * *` | user | find a tutor by course code | locate tutors from a specific module without having to go through the entire list |","lastModifiedDate":"2024-03-07"},{"lineNumber":287,"author":{"gitId":"LargeCrowd"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2024-03-07"},{"lineNumber":288,"author":{"gitId":"LargeCrowd"},"content":"| `* *` | user | edit a tutor | change incorrect or new information about a tutor |","lastModifiedDate":"2024-03-07"},{"lineNumber":289,"author":{"gitId":"LargeCrowd"},"content":"| `*` | user with many persons in the address book | sort tutor by name | locate a tutor easily |","lastModifiedDate":"2024-03-07"},{"lineNumber":290,"author":{"gitId":"LargeCrowd"},"content":"| `*` | user | add a tutor to a favourites list | access the details of my most frequently contacted tutors easily |","lastModifiedDate":"2024-03-07"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"LargeCrowd"},"content":"(For all use cases below, the **System** is the `NUSContacts` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-07"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"LargeCrowd"},"content":"**UC1: Add a tutor**","lastModifiedDate":"2024-03-07"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"LargeCrowd"},"content":"1. User requests to add a tutor","lastModifiedDate":"2024-03-07"},{"lineNumber":303,"author":{"gitId":"LargeCrowd"},"content":"2. User provides the tutor\u0027s details","lastModifiedDate":"2024-03-07"},{"lineNumber":304,"author":{"gitId":"LargeCrowd"},"content":"3. NUSContacts adds the tutor","lastModifiedDate":"2024-03-07"},{"lineNumber":305,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":306,"author":{"gitId":"LargeCrowd"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":307,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":308,"author":{"gitId":"LargeCrowd"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":309,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":310,"author":{"gitId":"LargeCrowd"},"content":"* 2a. The tutor already exists.","lastModifiedDate":"2024-03-07"},{"lineNumber":311,"author":{"gitId":"LargeCrowd"},"content":" * 2a1. NUSContacts informs the user of the error.","lastModifiedDate":"2024-03-07"},{"lineNumber":312,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":313,"author":{"gitId":"LargeCrowd"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":314,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":315,"author":{"gitId":"LargeCrowd"},"content":"**UC2: Delete a tutor**","lastModifiedDate":"2024-03-07"},{"lineNumber":316,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":317,"author":{"gitId":"LargeCrowd"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":318,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":319,"author":{"gitId":"LargeCrowd"},"content":"1. User requests to list tutors","lastModifiedDate":"2024-03-07"},{"lineNumber":320,"author":{"gitId":"LargeCrowd"},"content":"2. NUSContacts shows a list of tutors","lastModifiedDate":"2024-03-07"},{"lineNumber":321,"author":{"gitId":"LargeCrowd"},"content":"3. User requests to delete a specific tutor in the list","lastModifiedDate":"2024-03-07"},{"lineNumber":322,"author":{"gitId":"LargeCrowd"},"content":"4. NUSContacts deletes the tutor","lastModifiedDate":"2024-03-07"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"LargeCrowd"},"content":" * 3a1. NUSContacts shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"LargeCrowd"},"content":"**UC3: Find a tutor by name**","lastModifiedDate":"2024-03-07"},{"lineNumber":339,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":340,"author":{"gitId":"LargeCrowd"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":341,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":342,"author":{"gitId":"LargeCrowd"},"content":"1. User requests to find a tutor","lastModifiedDate":"2024-03-07"},{"lineNumber":343,"author":{"gitId":"LargeCrowd"},"content":"2. NUSContacts prompts search criterion (name or course code)","lastModifiedDate":"2024-03-07"},{"lineNumber":344,"author":{"gitId":"LargeCrowd"},"content":"3. User provides the search criterion (name)","lastModifiedDate":"2024-03-07"},{"lineNumber":345,"author":{"gitId":"LargeCrowd"},"content":"4. NUSContacts shows the tutor(s) that match the criterion","lastModifiedDate":"2024-03-07"},{"lineNumber":346,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":347,"author":{"gitId":"LargeCrowd"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":348,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":349,"author":{"gitId":"LargeCrowd"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":350,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":351,"author":{"gitId":"LargeCrowd"},"content":"* 4a. No tutor matches the criterion.","lastModifiedDate":"2024-03-07"},{"lineNumber":352,"author":{"gitId":"LargeCrowd"},"content":" * 4a1. NUSContacts informs the user of the error.","lastModifiedDate":"2024-03-07"},{"lineNumber":353,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":354,"author":{"gitId":"LargeCrowd"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":355,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":356,"author":{"gitId":"LargeCrowd"},"content":"**UC4: Find a tutor by course code**","lastModifiedDate":"2024-03-07"},{"lineNumber":357,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":358,"author":{"gitId":"LargeCrowd"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":359,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":360,"author":{"gitId":"LargeCrowd"},"content":"1. User requests to find a tutor","lastModifiedDate":"2024-03-07"},{"lineNumber":361,"author":{"gitId":"LargeCrowd"},"content":"2. NUSContacts prompts search criterion (name or course code)","lastModifiedDate":"2024-03-07"},{"lineNumber":362,"author":{"gitId":"LargeCrowd"},"content":"3. User provides the search criterion (course code)","lastModifiedDate":"2024-03-07"},{"lineNumber":363,"author":{"gitId":"LargeCrowd"},"content":"4. NUSContacts shows the tutor(s) that match the criterion","lastModifiedDate":"2024-03-07"},{"lineNumber":364,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":365,"author":{"gitId":"LargeCrowd"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":366,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":367,"author":{"gitId":"LargeCrowd"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":368,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":369,"author":{"gitId":"LargeCrowd"},"content":"* 4a. No tutor matches the criterion.","lastModifiedDate":"2024-03-07"},{"lineNumber":370,"author":{"gitId":"LargeCrowd"},"content":" * 4a1. NUSContacts informs the user of the error.","lastModifiedDate":"2024-03-07"},{"lineNumber":371,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":372,"author":{"gitId":"LargeCrowd"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":373,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":374,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"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":379,"author":{"gitId":"ChillinRage"},"content":"2. Should be able to hold up to 1000 contacts without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-07"},{"lineNumber":380,"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":381,"author":{"gitId":"ChillinRage"},"content":"4. Error messages displayed to application window should be easily understood by most users.","lastModifiedDate":"2024-03-07"},{"lineNumber":382,"author":{"gitId":"ChillinRage"},"content":"5. System should respond to user actions within 1 second.","lastModifiedDate":"2024-03-07"},{"lineNumber":383,"author":{"gitId":"ChillinRage"},"content":"6. For databases with less than 1000 contacts, fetching and saving of contacts to/from it should not exceed 200 milliseconds.","lastModifiedDate":"2024-03-07"},{"lineNumber":384,"author":{"gitId":"ChillinRage"},"content":"7. System should handle data corruption or loss without crashing the application.","lastModifiedDate":"2024-03-07"},{"lineNumber":385,"author":{"gitId":"ChillinRage"},"content":"8. System architecture should support future updates and extensions without major restructures.","lastModifiedDate":"2024-03-07"},{"lineNumber":386,"author":{"gitId":"ChillinRage"},"content":"9. System should support comprehensive testing for all components and features.","lastModifiedDate":"2024-03-07"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":393,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"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":402,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"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":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"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":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"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":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"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":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"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":436,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","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"}],"authorContributionMap":{"LargeCrowd":69,"Hibeom0929":4,"-":366,"ChillinRage":7}},{"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":"E0735389"},"content":"NUSContacts 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, NUSContacts can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-07"},{"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":"ChillinRage"},"content":"1. Download the latest `NUSContacts.jar` from [here](https://github.com/AY2324S2-CS2103T-T11-2/tp/releases).","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"E0735389"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your NUSContacts application.","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"ChillinRage"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar NUSContacts.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-15"},{"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":"Hibeom0929"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com r/STUDENT a/PGPR c/CS2103T` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-03-21"},{"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":"E0735389"},"content":" e.g. if the command specifies `n/NAME p/PHONE`, `p/PHONE n/NAME` is also acceptable.","lastModifiedDate":"2024-03-18"},{"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":"Hibeom0929"},"content":"Format: `add n/NAME e/EMAIL r/ROLE a/ADDRESS c/COURSE [p/PHONE] [t/TAG]…​`","lastModifiedDate":"2024-03-21"},{"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":"Hibeom0929"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com r/STUDENT a/PGPR c/CS2101`","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Hibeom0929"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com r/TA a/COM2-0102 c/ST2334`","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"E0735389"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"E0735389"},"content":"Unlike the `edit` command, `t/` with an empty tag is not supported.","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"E0735389"},"content":"If you want to not include any tag, leave out `t/TAG` entirely.","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"E0735389"},"content":"Similarly, `p/` without any phone number is not supported, if you want to not specify the phone number, leave out `p/PHONE` entirely.","lastModifiedDate":"2024-03-19"},{"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":"Hibeom0929"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [r/ROLE] [a/ADDRESS] [c/COURSE] [t/TAG]…​`","lastModifiedDate":"2024-03-21"},{"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":"E0735389"},"content":"* You can remove a person\u0027s phone number by typing `p/` without specifying any phone number after it.","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"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":115,"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":116,"author":{"gitId":"E0735389"},"content":"* `edit 3 p/ t/` Deletes the phone number of the 3rd person and clears all existing tags.","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"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 the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"Hibeom0929"},"content":"* `find yang timothy` returns `Yang Heebeom`, `Timothy`\u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"Hibeom0929"},"content":" ![result for \u0027find alex david\u0027](images/findYangTimothyResult.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"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":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"E0735389"},"content":"NUSContacts 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-07"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":168,"author":{"gitId":"E0735389"},"content":"NUSContacts 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-03-07"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":171,"author":{"gitId":"E0735389"},"content":"If your changes to the data file makes its format invalid, NUSContacts 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":172,"author":{"gitId":"E0735389"},"content":"Furthermore, certain edits can cause the NUSContacts 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":173,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","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":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"E0735389"},"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 NUSContacts home folder.","lastModifiedDate":"2024-03-07"},{"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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":190,"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":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"Hibeom0929"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-21"},{"lineNumber":197,"author":{"gitId":"Hibeom0929"},"content":"|------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"Hibeom0929"},"content":"| **Add** | `add n/NAME e/EMAIL r/ROLE a/ADDRESS c/COURSE [t/TAG]… [p/PHONE]​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com r/STUDENT a/PGPR c/CS2103T t/friend t/colleague` |","lastModifiedDate":"2024-03-21"},{"lineNumber":199,"author":{"gitId":"Hibeom0929"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-03-21"},{"lineNumber":200,"author":{"gitId":"Hibeom0929"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-03-21"},{"lineNumber":201,"author":{"gitId":"Hibeom0929"},"content":"| **Edit** | `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [r/ROLE] [a/ADDRESS] [c/COURSE] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com` |","lastModifiedDate":"2024-03-21"},{"lineNumber":202,"author":{"gitId":"Hibeom0929"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake` |","lastModifiedDate":"2024-03-21"},{"lineNumber":203,"author":{"gitId":"Hibeom0929"},"content":"| **List** | `list` |","lastModifiedDate":"2024-03-21"},{"lineNumber":204,"author":{"gitId":"Hibeom0929"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Hibeom0929":16,"E0735389":14,"-":172,"ChillinRage":2}},{"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":"E0735389"},"content":"title: NUSContacts","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":"E0735389"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T11-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T11-2/tp/actions)","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"E0735389"},"content":"[![CodeCov Status](https://codecov.io/gh/AY2324S2-CS2103T-T11-2/tp/branch/master/graph/badge.svg)](https://app.codecov.io/gh/AY2324S2-CS2103T-T11-2/tp)","lastModifiedDate":"2024-03-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":"E0735389"},"content":"**NUSContacts 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-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"E0735389"},"content":"* If you are interested in using NUSContacts, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"E0735389"},"content":"* If you are interested about developing NUSContacts, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-07"},{"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":{"E0735389":6,"-":13}},{"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":"ChillinRage"},"content":" private static final String LOG_FILE \u003d \"NUSContacts.log\";","lastModifiedDate":"2024-03-12"},{"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,"ChillinRage":1}},{"path":"src/main/java/seedu/address/commons/util/FileUtil.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 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":"E0735389"},"content":" * Returns true if {@code path} can be converted into a {@code Path} via {@link Paths#get(String, String...)},","lastModifiedDate":"2024-03-20"},{"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":{"E0735389":1,"-":82}},{"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":"Hibeom0929"},"content":" .append(\"; Role: \")","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"Hibeom0929"},"content":" .append(person.getRole())","lastModifiedDate":"2024-03-15"},{"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":"ChillinRage"},"content":" .append(\"; Course: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"ChillinRage"},"content":" .append(person.getCourse())","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"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":{"Hibeom0929":2,"-":51,"ChillinRage":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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSE;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-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":"Hibeom0929"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"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_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"Hibeom0929"},"content":" + PREFIX_ROLE + \"ROLE \"","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"ChillinRage"},"content":" + PREFIX_COURSE + \"COURSE \"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"E0735389"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2024-03-18"},{"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":"Hibeom0929"},"content":" + PREFIX_ROLE + \"STUDENT \"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"ChillinRage"},"content":" + PREFIX_COURSE + \"CS2103T \"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"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":{"Hibeom0929":3,"E0735389":1,"-":83,"ChillinRage":3}},{"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":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSE;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-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":"Hibeom0929"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":24,"author":{"gitId":"-"},"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":"ChillinRage"},"content":"import seedu.address.model.person.Course;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"Hibeom0929"},"content":"import seedu.address.model.person.Role;","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":"Hibeom0929"},"content":" + \"[\" + PREFIX_ROLE + \"ROLE] \"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"ChillinRage"},"content":" + \"[\" + PREFIX_COURSE + \"COURSE] \"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"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":"E0735389"},"content":" Optional\u003cPhone\u003e updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":107,"author":{"gitId":"Hibeom0929"},"content":" Role updatedRole \u003d editPersonDescriptor.getRole().orElse(personToEdit.getRole());","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":109,"author":{"gitId":"ChillinRage"},"content":" Course updatedCourse \u003d editPersonDescriptor.getCourse().orElse(personToEdit.getCourse());","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"ChillinRage"},"content":" return new Person(","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"ChillinRage"},"content":" updatedName, updatedPhone, updatedEmail, updatedRole,","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"ChillinRage"},"content":" updatedAddress, updatedCourse, updatedTags);","lastModifiedDate":"2024-03-20"},{"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":"E0735389"},"content":" private Optional\u003cPhone\u003e phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":149,"author":{"gitId":"Hibeom0929"},"content":" private Role role;","lastModifiedDate":"2024-03-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"ChillinRage"},"content":" private Course course;","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"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":"Hibeom0929"},"content":" setRole(toCopy.role);","lastModifiedDate":"2024-03-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":166,"author":{"gitId":"ChillinRage"},"content":" setCourse(toCopy.course);","lastModifiedDate":"2024-03-16"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"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":"ChillinRage"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, role, address, course, tags);","lastModifiedDate":"2024-03-20"},{"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":"E0735389"},"content":" public void setPhone(Optional\u003cPhone\u003e phone) {","lastModifiedDate":"2024-03-18"},{"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":"E0735389"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"E0735389"},"content":" * Gets the phone number information of this optional.","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"E0735389"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":192,"author":{"gitId":"E0735389"},"content":" * The result is {@code Optional.empty()} if {@code p/} field is not specified,","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"E0735389"},"content":" * {@code Optional.of(Optional.empty())} if {@code p/} field is specified but left empty","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"E0735389"},"content":" * (which means the user wants to delete the phone number),","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"E0735389"},"content":" * and an actual value if the user wants to update the phone number.","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"E0735389"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"E0735389"},"content":" public Optional\u003cOptional\u003cPhone\u003e\u003e getPhone() {","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.email \u003d email;","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\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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":"Hibeom0929"},"content":" public void setRole(Role role) {","lastModifiedDate":"2024-03-15"},{"lineNumber":210,"author":{"gitId":"Hibeom0929"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-15"},{"lineNumber":211,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":212,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":213,"author":{"gitId":"Hibeom0929"},"content":" public Optional\u003cRole\u003e getRole() {","lastModifiedDate":"2024-03-15"},{"lineNumber":214,"author":{"gitId":"Hibeom0929"},"content":" return Optional.ofNullable(role);","lastModifiedDate":"2024-03-15"},{"lineNumber":215,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":216,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":217,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":218,"author":{"gitId":"-"},"content":" this.address \u003d address;","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 Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":222,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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":"ChillinRage"},"content":" public void setCourse(Course course) {","lastModifiedDate":"2024-03-16"},{"lineNumber":226,"author":{"gitId":"ChillinRage"},"content":" this.course \u003d course;","lastModifiedDate":"2024-03-16"},{"lineNumber":227,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":228,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":229,"author":{"gitId":"ChillinRage"},"content":" public Optional\u003cCourse\u003e getCourse() {","lastModifiedDate":"2024-03-16"},{"lineNumber":230,"author":{"gitId":"ChillinRage"},"content":" return Optional.ofNullable(course);","lastModifiedDate":"2024-03-16"},{"lineNumber":231,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":232,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":233,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":235,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":236,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":238,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":241,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":242,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":243,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":245,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":246,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":250,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":251,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":252,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":253,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":256,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":257,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":258,"author":{"gitId":"-"},"content":" return false;","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":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":262,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":263,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":264,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":265,"author":{"gitId":"Hibeom0929"},"content":" \u0026\u0026 Objects.equals(role, otherEditPersonDescriptor.role)","lastModifiedDate":"2024-03-15"},{"lineNumber":266,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":267,"author":{"gitId":"ChillinRage"},"content":" \u0026\u0026 Objects.equals(course, otherEditPersonDescriptor.course)","lastModifiedDate":"2024-03-16"},{"lineNumber":268,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":277,"author":{"gitId":"Hibeom0929"},"content":" .add(\"role\", role)","lastModifiedDate":"2024-03-15"},{"lineNumber":278,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":279,"author":{"gitId":"ChillinRage"},"content":" .add(\"course\", course)","lastModifiedDate":"2024-03-16"},{"lineNumber":280,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":284,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"Hibeom0929":16,"E0735389":12,"-":236,"ChillinRage":20}},{"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":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":4,"author":{"gitId":"E0735389"},"content":" * Represents an error which occurs during execution of a {@link seedu.address.logic.commands.Command}.","lastModifiedDate":"2024-03-20"},{"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":{"E0735389":1,"-":16}},{"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":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSE;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"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":"Hibeom0929"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"E0735389"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-18"},{"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":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"ChillinRage"},"content":"import seedu.address.model.person.Course;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"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":"Hibeom0929"},"content":"import seedu.address.model.person.Role;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"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":"ChillinRage"},"content":" ArgumentTokenizer.tokenize(","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"ChillinRage"},"content":" args,","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"ChillinRage"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ChillinRage"},"content":" PREFIX_ADDRESS, PREFIX_COURSE, PREFIX_TAG);","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"ChillinRage"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_EMAIL, PREFIX_ROLE, PREFIX_ADDRESS, PREFIX_COURSE)","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"E0735389"},"content":" Optional\u003cString\u003e phoneString \u003d argMultimap.getValue(PREFIX_PHONE);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"E0735389"},"content":" Optional\u003cPhone\u003e phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"E0735389"},"content":" if (phoneString.isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"E0735389"},"content":" phone \u003d Optional.of(ParserUtil.parsePhone(phoneString.get()));","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"E0735389"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"E0735389"},"content":" phone \u003d Optional.empty();","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"E0735389"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"Hibeom0929"},"content":" Role role \u003d ParserUtil.parseRole(argMultimap.getValue(PREFIX_ROLE).get());","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"ChillinRage"},"content":" Course course \u003d ParserUtil.parseCourse(argMultimap.getValue(PREFIX_COURSE).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"ChillinRage"},"content":" Person person \u003d new Person(name, phone, email, role, address, course, tagList);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"Hibeom0929":3,"E0735389":8,"-":57,"ChillinRage":10}},{"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":"Hibeom0929"},"content":" public static final Prefix PREFIX_ROLE \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"ChillinRage"},"content":" public static final Prefix PREFIX_COURSE \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Hibeom0929":1,"-":15,"ChillinRage":1}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSE;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-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-01-26"},{"lineNumber":10,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"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":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":37,"author":{"gitId":"ChillinRage"},"content":" ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ChillinRage"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ChillinRage"},"content":" PREFIX_ROLE, PREFIX_ADDRESS, PREFIX_COURSE, PREFIX_TAG);","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":"ChillinRage"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ChillinRage"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ChillinRage"},"content":" PREFIX_ROLE, PREFIX_ADDRESS, PREFIX_COURSE);","lastModifiedDate":"2024-03-20"},{"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":"E0735389"},"content":" editPersonDescriptor.setPhone(ParserUtil.parseOptionalPhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-18"},{"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":"ChillinRage"},"content":" if (argMultimap.getValue(PREFIX_ROLE).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ChillinRage"},"content":" editPersonDescriptor.setRole(ParserUtil.parseRole(argMultimap.getValue(PREFIX_ROLE).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":70,"author":{"gitId":"ChillinRage"},"content":" if (argMultimap.getValue(PREFIX_COURSE).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ChillinRage"},"content":" editPersonDescriptor.setCourse(ParserUtil.parseCourse(argMultimap.getValue(PREFIX_COURSE).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"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":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"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":{"E0735389":1,"-":82,"ChillinRage":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":"E0735389"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"ChillinRage"},"content":"import seedu.address.model.person.Course;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"Hibeom0929"},"content":"import seedu.address.model.person.Role;","lastModifiedDate":"2024-03-15"},{"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":"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":"E0735389"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"E0735389"},"content":" * Parses a {@code String phone} into a {@code Optional\u003cPhone\u003e}, allowing empty input.","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"E0735389"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"E0735389"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"E0735389"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"E0735389"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"E0735389"},"content":" public static Optional\u003cPhone\u003e parseOptionalPhone(String phone) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"E0735389"},"content":" requireNonNull(phone);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"E0735389"},"content":" if (phone.trim().isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"E0735389"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"E0735389"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"E0735389"},"content":" return Optional.of(parsePhone(phone));","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"E0735389"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"E0735389"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","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 address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","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 email} into an {@code Email}.","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 email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"ChillinRage"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"ChillinRage"},"content":" * Parses a {@code String course} into an {@code Course}.","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"ChillinRage"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"ChillinRage"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"ChillinRage"},"content":" * @throws ParseException if the given {@code course} is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"ChillinRage"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"ChillinRage"},"content":" public static Course parseCourse(String course) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"ChillinRage"},"content":" requireNonNull(course);","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"ChillinRage"},"content":" String trimmedCourse \u003d course.trim();","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"ChillinRage"},"content":" if (!Course.isValidCourse(trimmedCourse)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"ChillinRage"},"content":" throw new ParseException(Course.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"ChillinRage"},"content":" return new Course(trimmedCourse);","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"Hibeom0929"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":131,"author":{"gitId":"Hibeom0929"},"content":" * Parses a {@code String role} into a {@code Role}.","lastModifiedDate":"2024-03-15"},{"lineNumber":132,"author":{"gitId":"Hibeom0929"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-15"},{"lineNumber":133,"author":{"gitId":"Hibeom0929"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":134,"author":{"gitId":"Hibeom0929"},"content":" * @throws ParseException if the given {@code role} is invalid.","lastModifiedDate":"2024-03-15"},{"lineNumber":135,"author":{"gitId":"Hibeom0929"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":136,"author":{"gitId":"Hibeom0929"},"content":" public static Role parseRole(String role) throws ParseException {","lastModifiedDate":"2024-03-15"},{"lineNumber":137,"author":{"gitId":"Hibeom0929"},"content":" requireNonNull(role);","lastModifiedDate":"2024-03-15"},{"lineNumber":138,"author":{"gitId":"Hibeom0929"},"content":" String trimmedRole \u003d role.trim();","lastModifiedDate":"2024-03-15"},{"lineNumber":139,"author":{"gitId":"Hibeom0929"},"content":" if (!Role.isValidRole(trimmedRole)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":140,"author":{"gitId":"Hibeom0929"},"content":" throw new ParseException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":141,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"Hibeom0929"},"content":" return new Role(trimmedRole);","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":152,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":164,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":167,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Hibeom0929":16,"E0735389":15,"-":124,"ChillinRage":16}},{"path":"src/main/java/seedu/address/model/person/Course.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChillinRage"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"ChillinRage"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"ChillinRage"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"ChillinRage"},"content":" * Represents a Person\u0027s course code in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"ChillinRage"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidCourse(String)}","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"ChillinRage"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"ChillinRage"},"content":"public class Course {","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"ChillinRage"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"ChillinRage"},"content":" \"Course code should adhere to the following constraints:\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"ChillinRage"},"content":" + \"1. It should start with 2 or 3 letters, followed by exactly 4 digits.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"ChillinRage"},"content":" + \"2. (Optional) You can also add a letter as a postfix.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"ChillinRage"},"content":" + \"Examples of accepted code: CS2103, CS2103T, DSA1101.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"ChillinRage"},"content":" /*","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"ChillinRage"},"content":" * A course code should start with 2-3 alphabets, followed by exactly 4 digits.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"ChillinRage"},"content":" * The first digit should be within the range [1,8].","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ChillinRage"},"content":" * Some course codes may also have an alphabet as its last character. (i.e. CS2103T)","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"ChillinRage"},"content":" * (Course code format is quoted from official NUS website)","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"ChillinRage"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"ChillinRage"},"content":" private static final String PREFIX_CODE \u003d \"[A-Z]{2,3}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"ChillinRage"},"content":" private static final String DIGIT_CODE \u003d \"[1-8][0-9]{3}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ChillinRage"},"content":" private static final String POSTFIX_CODE \u003d \"[A-Z]{0,1}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ChillinRage"},"content":" public static final String VALIDATION_REGEX \u003d PREFIX_CODE + DIGIT_CODE + POSTFIX_CODE;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"ChillinRage"},"content":" public final String value;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"ChillinRage"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"ChillinRage"},"content":" * Constructs a {@code Course}.","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"ChillinRage"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"ChillinRage"},"content":" * @param course A valid course code.","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"ChillinRage"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"ChillinRage"},"content":" public Course(String course) {","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"ChillinRage"},"content":" requireNonNull(course);","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"ChillinRage"},"content":" checkArgument(isValidCourse(course), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"ChillinRage"},"content":" this.value \u003d course.toUpperCase().trim();","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"ChillinRage"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"ChillinRage"},"content":" * Returns true if a given string is a valid course code.","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"ChillinRage"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"ChillinRage"},"content":" public static boolean isValidCourse(String test) {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"ChillinRage"},"content":" return test.toUpperCase().trim().matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"ChillinRage"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"ChillinRage"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"ChillinRage"},"content":" return this.value;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"ChillinRage"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"ChillinRage"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"ChillinRage"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"ChillinRage"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"ChillinRage"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"ChillinRage"},"content":" if (!(other instanceof Course)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ChillinRage"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"ChillinRage"},"content":" Course otherName \u003d (Course) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"ChillinRage"},"content":" return this.value.equals(otherName.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"ChillinRage"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"ChillinRage"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"ChillinRage"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"ChillinRage"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"ChillinRage":73}},{"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":"E0735389"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"E0735389"},"content":" private final Optional\u003cPhone\u003e phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"ChillinRage"},"content":" private final Course course;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Hibeom0929"},"content":" private final Role role;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"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":"-"},"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":"ChillinRage"},"content":" public Person(","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ChillinRage"},"content":" Name name, Optional\u003cPhone\u003e phone, Email email, Role role,","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ChillinRage"},"content":" Address address, Course course, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ChillinRage"},"content":" requireAllNonNull(name, phone, email, role, address, course, tags);","lastModifiedDate":"2024-03-20"},{"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":"Hibeom0929"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"ChillinRage"},"content":" this.course \u003d course;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"E0735389"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"Hibeom0929"},"content":" public Role getRole() {","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"Hibeom0929"},"content":" return role;","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"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":"ChillinRage"},"content":" public Course getCourse() {","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"ChillinRage"},"content":" return course;","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"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":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","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":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":112,"author":{"gitId":"Hibeom0929"},"content":" \u0026\u0026 role.equals(otherPerson.role)","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"ChillinRage"},"content":" \u0026\u0026 course.equals(otherPerson.course)","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"ChillinRage"},"content":" return Objects.hash(name, phone, email, role, address, course, tags);","lastModifiedDate":"2024-03-20"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"Hibeom0929"},"content":" .add(\"role\", role)","lastModifiedDate":"2024-03-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"ChillinRage"},"content":" .add(\"course\", course)","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Hibeom0929":8,"E0735389":3,"-":112,"ChillinRage":14}},{"path":"src/main/java/seedu/address/model/person/Role.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Hibeom0929"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"Hibeom0929"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"Hibeom0929"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"Hibeom0929"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"Hibeom0929"},"content":" * Represents a Person\u0027s role in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"Hibeom0929"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidRole(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"Hibeom0929"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"Hibeom0929"},"content":"public class Role {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"Hibeom0929"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"Hibeom0929"},"content":" \"Roles should be either \u0027STUDENT\u0027, \u0027TA\u0027, or \u0027PROFESSOR\u0027.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"Hibeom0929"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Hibeom0929"},"content":" * Enum representing different roles in an educational system.","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Hibeom0929"},"content":" * This enum defines three role types: STUDENT, TA (Teaching Assistant), and PROFESSOR.","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Hibeom0929"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"Hibeom0929"},"content":" public enum RoleType {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Hibeom0929"},"content":" STUDENT, TA, PROFESSOR","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"Hibeom0929"},"content":" public final RoleType role;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"Hibeom0929"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"Hibeom0929"},"content":" * Constructs a {@code role}.","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"Hibeom0929"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"Hibeom0929"},"content":" * @param role A valid role.","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"Hibeom0929"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"Hibeom0929"},"content":" public Role(String role) {","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"Hibeom0929"},"content":" requireNonNull(role);","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"Hibeom0929"},"content":" checkArgument(isValidRole(role), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"Hibeom0929"},"content":" this.role \u003d RoleType.valueOf(role);","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"Hibeom0929"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"Hibeom0929"},"content":" * Returns true if a given string is a valid role.","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"Hibeom0929"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"Hibeom0929"},"content":" public static boolean isValidRole(String test) {","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"Hibeom0929"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Hibeom0929"},"content":" RoleType.valueOf(test);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Hibeom0929"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"Hibeom0929"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Hibeom0929"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"Hibeom0929"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"Hibeom0929"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"Hibeom0929"},"content":" return role.name();","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"Hibeom0929"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"Hibeom0929"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"Hibeom0929"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"Hibeom0929"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"Hibeom0929"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"Hibeom0929"},"content":" if (!(other instanceof Role)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"Hibeom0929"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"LargeCrowd"},"content":" Role otherRole \u003d (Role) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"LargeCrowd"},"content":" return role.equals(otherRole.role);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"Hibeom0929"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"Hibeom0929"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"Hibeom0929"},"content":" return role.hashCode();","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"Hibeom0929"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"LargeCrowd":2,"Hibeom0929":72}},{"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":"E0735389"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-18"},{"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":"ChillinRage"},"content":"import seedu.address.model.person.Course;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":16,"author":{"gitId":"Hibeom0929"},"content":"import seedu.address.model.person.Role;","lastModifiedDate":"2024-03-15"},{"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":"-"},"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":"LargeCrowd"},"content":" new Person(new Name(\"Alex Yeoh\"), Optional.of(new Phone(\"87438807\")), new Email(\"alexyeoh@u.nus.edu\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"LargeCrowd"},"content":" new Role(\"STUDENT\"), new Address(\"COM1-0108\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"ChillinRage"},"content":" new Course(\"CS2103T\"), getTagSet(\"friends\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"LargeCrowd"},"content":" new Person(new Name(\"Bernice Yu\"), Optional.of(new Phone(\"99272758\")), new Email(\"berniceyu@u.nus.edu\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"LargeCrowd"},"content":" new Role(\"STUDENT\"), new Address(\"COM2-0123\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"LargeCrowd"},"content":" new Course(\"CS2103\"), getTagSet(\"classmates\", \"friends\")),","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"E0735389"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), Optional.of(new Phone(\"93210283\")),","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"E0735389"},"content":" new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"LargeCrowd"},"content":" new Role(\"TA\"), new Address(\"AS7-0622\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"LargeCrowd"},"content":" new Course(\"DSA1101\"), getTagSet(\"tutor\")),","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"LargeCrowd"},"content":" new Person(new Name(\"David Li\"), Optional.of(new Phone(\"91031282\")), new Email(\"lidavid@u.nus.edu\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"LargeCrowd"},"content":" new Role(\"TA\"), new Address(\"S17-0301\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"LargeCrowd"},"content":" new Course(\"MA2001\"), getTagSet(\"friends\")),","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"LargeCrowd"},"content":" new Person(new Name(\"Irfan Ibrahim\"), Optional.of(new Phone(\"92492021\")), new Email(\"irfan@nus.edu.sg\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"LargeCrowd"},"content":" new Role(\"PROFESSOR\"), new Address(\"COM3-0513\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"LargeCrowd"},"content":" new Course(\"EL1101E\"), getTagSet(\"lecturer\")),","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"LargeCrowd"},"content":" new Person(new Name(\"Roy Balakrishnan\"), Optional.of(new Phone(\"92624417\")), new Email(\"royb@nus.edu.sg\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"LargeCrowd"},"content":" new Role(\"PROFESSOR\"), new Address(\"COM1-0203\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"LargeCrowd"},"content":" new Course(\"ACC1701X\"), getTagSet(\"DepartmentHead\"))","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":{"LargeCrowd":16,"Hibeom0929":1,"E0735389":3,"-":42,"ChillinRage":2}},{"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":"E0735389"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-18"},{"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":"E0735389"},"content":"import com.fasterxml.jackson.annotation.JsonInclude;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"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":"ChillinRage"},"content":"import seedu.address.model.person.Course;","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"Hibeom0929"},"content":"import seedu.address.model.person.Role;","lastModifiedDate":"2024-03-15"},{"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":"Hibeom0929"},"content":" private final String role;","lastModifiedDate":"2024-03-15"},{"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":"ChillinRage"},"content":" private final String course;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"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":"ChillinRage"},"content":" public JsonAdaptedPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ChillinRage"},"content":" @JsonProperty(\"name\") String name,","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ChillinRage"},"content":" @JsonInclude(JsonInclude.Include.NON_NULL) @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ChillinRage"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ChillinRage"},"content":" @JsonProperty(\"role\") String role,","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ChillinRage"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ChillinRage"},"content":" @JsonProperty(\"course\") String course,","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"Hibeom0929"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"ChillinRage"},"content":" this.course \u003d course;","lastModifiedDate":"2024-03-16"},{"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":"-"},"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":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"E0735389"},"content":" phone \u003d source.getPhone().map(x -\u003e x.value).orElse(null);","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"Hibeom0929"},"content":" role \u003d source.getRole().role.name();","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"ChillinRage"},"content":" course \u003d source.getCourse().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"E0735389"},"content":" if (phone !\u003d null \u0026\u0026 !Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-03-18"},{"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":"E0735389"},"content":" final Optional\u003cPhone\u003e modelPhone \u003d Optional.ofNullable(phone).map(phone -\u003e new Phone(phone));","lastModifiedDate":"2024-03-18"},{"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":"Hibeom0929"},"content":" if (role \u003d\u003d null) {","lastModifiedDate":"2024-03-15"},{"lineNumber":111,"author":{"gitId":"Hibeom0929"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Role.class.getSimpleName()));","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"Hibeom0929"},"content":" if (!Role.isValidRole(role)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":114,"author":{"gitId":"Hibeom0929"},"content":" throw new IllegalValueException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"Hibeom0929"},"content":" final Role modelRole \u003d new Role(role);","lastModifiedDate":"2024-03-15"},{"lineNumber":117,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"ChillinRage"},"content":" if (course \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"ChillinRage"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Course.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"ChillinRage"},"content":" if (!Course.isValidCourse(course)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"ChillinRage"},"content":" throw new IllegalValueException(Course.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"ChillinRage"},"content":" final Course modelCourse \u003d new Course(course);","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"ChillinRage"},"content":" return new Person(modelName, modelPhone, modelEmail, modelRole, modelAddress, modelCourse, modelTags);","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Hibeom0929":12,"E0735389":5,"-":100,"ChillinRage":22}},{"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":"E0735389"},"content":" public static final String WEBSITE_URL \u003d \"https://ay2324s2-cs2103t-t11-2.github.io/tp/\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"E0735389"},"content":" public static final String HELP_MESSAGE \u003d \"NUSContacts Application\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"E0735389"},"content":" + \"Visit the project website: \" + WEBSITE_URL;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"E0735389"},"content":" url.putString(WEBSITE_URL);","lastModifiedDate":"2024-03-18"},{"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":{"E0735389":4,"-":99}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"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":"ChillinRage"},"content":" private Label course;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"ChillinRage"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"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":"Hibeom0929"},"content":" private Label role;","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"Hibeom0929"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"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":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"Hibeom0929"},"content":" role.setText(person.getRole().role.name());","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"ChillinRage"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ChillinRage"},"content":" course.setText(person.getCourse().value);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ChillinRage"},"content":" phone.setText(person.getPhone().map(x -\u003e x.value).orElse(\"(no phone number)\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Hibeom0929":3,"-":57,"ChillinRage":6}},{"path":"src/main/java/seedu/address/ui/UiPart.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":"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":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-12-21"},{"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":"E0735389"},"content":" * @see #UiPart(URL, Object)","lastModifiedDate":"2024-03-20"},{"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":{"E0735389":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":"-"},"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":"ChillinRage"},"content":" title\u003d\"NUSContacts\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"-":59,"ChillinRage":1}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","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":"ChillinRage"},"content":" \u003cLabel fx:id\u003d\"course\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$course\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"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":"Hibeom0929"},"content":" \u003cLabel fx:id\u003d\"role\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$role\" /\u003e","lastModifiedDate":"2024-03-15"},{"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":{"Hibeom0929":1,"-":36,"ChillinRage":1}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.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":"reetmitra"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-19"},{"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":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"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":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"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":{"reetmitra":3,"-":175}},{"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":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSE;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"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":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"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":"ChillinRage"},"content":" public static final String VALID_ROLE_AMY \u003d \"PROFESSOR\";","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ChillinRage"},"content":" public static final String VALID_ROLE_BOB \u003d \"STUDENT\";","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":" public static final String VALID_COURSE_AMY \u003d \"MA1521\";","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"ChillinRage"},"content":" public static final String VALID_COURSE_BOB \u003d \"MA1522\";","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"ChillinRage"},"content":" public static final String ROLE_DESC_AMY \u003d \" \" + PREFIX_ROLE + VALID_ROLE_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ChillinRage"},"content":" public static final String ROLE_DESC_BOB \u003d \" \" + PREFIX_ROLE + VALID_ROLE_BOB;","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":" public static final String COURSE_DESC_AMY \u003d \" \" + PREFIX_COURSE + VALID_COURSE_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"ChillinRage"},"content":" public static final String COURSE_DESC_BOB \u003d \" \" + PREFIX_COURSE + VALID_COURSE_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"ChillinRage"},"content":" public static final String INVALID_ROLE_DESC \u003d \" \" + PREFIX_ROLE + \"Teacher\"; // only 3 specific roles allowed","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":" public static final String INVALID_COURSE_DESC \u003d \" \" + PREFIX_COURSE + \"2334ST\"; // digit prefix not allowed","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"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":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"ChillinRage"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withRole(VALID_ROLE_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ChillinRage"},"content":" .withAddress(VALID_ADDRESS_AMY).withCourse(VALID_COURSE_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"ChillinRage"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withRole(VALID_ROLE_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ChillinRage"},"content":" .withAddress(VALID_ADDRESS_BOB).withCourse(VALID_COURSE_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"-":125,"ChillinRage":16}},{"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":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_COURSE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"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":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"reetmitra"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"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":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"ChillinRage"},"content":" // different role -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ChillinRage"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withRole(VALID_ROLE_BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ChillinRage"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_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":"ChillinRage"},"content":" // different course -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"ChillinRage"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withCourse(VALID_COURSE_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"ChillinRage"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"ChillinRage"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName()","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"ChillinRage"},"content":" + \"{name\u003d\" + editPersonDescriptor.getName().orElse(null)","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"ChillinRage"},"content":" + \", phone\u003d\" + editPersonDescriptor.getPhone().orElse(null)","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"ChillinRage"},"content":" + \", email\u003d\" + editPersonDescriptor.getEmail().orElse(null)","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"ChillinRage"},"content":" + \", role\u003d\" + editPersonDescriptor.getRole().orElse(null)","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ChillinRage"},"content":" + \", address\u003d\" + editPersonDescriptor.getAddress().orElse(null)","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"ChillinRage"},"content":" + \", course\u003d\" + editPersonDescriptor.getCourse().orElse(null)","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"ChillinRage"},"content":" + \", tags\u003d\" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2024-03-16"},{"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":{"reetmitra":2,"-":65,"ChillinRage":18}},{"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":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.COURSE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.COURSE_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_COURSE_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ROLE_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"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":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_COURSE_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSE;","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"reetmitra"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"ChillinRage"},"content":"import seedu.address.model.person.Course;","lastModifiedDate":"2024-03-21"},{"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":"ChillinRage"},"content":"import seedu.address.model.person.Role;","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"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":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"ChillinRage"},"content":" assertParseSuccess(","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"ChillinRage"},"content":" PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"ChillinRage"},"content":" + ROLE_DESC_BOB + ADDRESS_DESC_BOB + COURSE_DESC_BOB + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"ChillinRage"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":79,"author":{"gitId":"ChillinRage"},"content":" assertParseSuccess(","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ROLE_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"ChillinRage"},"content":" + ADDRESS_DESC_BOB + COURSE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","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":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + 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":"ChillinRage"},"content":" // multiple roles","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(parser, ROLE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"ChillinRage"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ROLE));","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + 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":"ChillinRage"},"content":" // multiple courses","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(parser, COURSE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"ChillinRage"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_COURSE));","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"ChillinRage"},"content":" // invalid role","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(parser, INVALID_ROLE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"ChillinRage"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ROLE));","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"ChillinRage"},"content":" // invalid course","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(parser, INVALID_COURSE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"ChillinRage"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_COURSE));","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"ChillinRage"},"content":" // invalid role","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ROLE_DESC,","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"ChillinRage"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ROLE));","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"ChillinRage"},"content":" // invalid course","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_COURSE_DESC,","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"ChillinRage"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_COURSE));","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"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_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":190,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":191,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"ChillinRage"},"content":" + ROLE_DESC_BOB + ADDRESS_DESC_BOB + COURSE_DESC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"ChillinRage"},"content":" // missing email prefix","lastModifiedDate":"2024-03-21"},{"lineNumber":196,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":197,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":199,"author":{"gitId":"ChillinRage"},"content":" + ROLE_DESC_BOB + ADDRESS_DESC_BOB + COURSE_DESC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":200,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":202,"author":{"gitId":"ChillinRage"},"content":" // missing role prefix","lastModifiedDate":"2024-03-21"},{"lineNumber":203,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":204,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":205,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":206,"author":{"gitId":"ChillinRage"},"content":" + VALID_ROLE_BOB + ADDRESS_DESC_BOB + COURSE_DESC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":211,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":212,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":213,"author":{"gitId":"ChillinRage"},"content":" + ROLE_DESC_BOB + VALID_ADDRESS_BOB + COURSE_DESC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":214,"author":{"gitId":"ChillinRage"},"content":" expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":215,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":216,"author":{"gitId":"ChillinRage"},"content":" // missing course prefix","lastModifiedDate":"2024-03-21"},{"lineNumber":217,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":218,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":219,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":220,"author":{"gitId":"ChillinRage"},"content":" + ROLE_DESC_BOB + ADDRESS_DESC_BOB + VALID_COURSE_BOB,","lastModifiedDate":"2024-03-21"},{"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":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":225,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":226,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":227,"author":{"gitId":"ChillinRage"},"content":" + VALID_ROLE_BOB + VALID_ADDRESS_BOB + VALID_COURSE_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":228,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":231,"author":{"gitId":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":233,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":235,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":236,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":237,"author":{"gitId":"ChillinRage"},"content":" INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ROLE_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":238,"author":{"gitId":"ChillinRage"},"content":" + ADDRESS_DESC_BOB + COURSE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":239,"author":{"gitId":"ChillinRage"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":241,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":242,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":243,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":244,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ROLE_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":245,"author":{"gitId":"ChillinRage"},"content":" + ADDRESS_DESC_BOB + COURSE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":246,"author":{"gitId":"ChillinRage"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":248,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":249,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":250,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":251,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ROLE_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":252,"author":{"gitId":"ChillinRage"},"content":" + ADDRESS_DESC_BOB + COURSE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":253,"author":{"gitId":"ChillinRage"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":254,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":255,"author":{"gitId":"ChillinRage"},"content":" // invalid role","lastModifiedDate":"2024-03-21"},{"lineNumber":256,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":257,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":258,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ROLE_DESC","lastModifiedDate":"2024-03-21"},{"lineNumber":259,"author":{"gitId":"ChillinRage"},"content":" + ADDRESS_DESC_BOB + COURSE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":260,"author":{"gitId":"ChillinRage"},"content":" Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":262,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":263,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":264,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":265,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ROLE_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":266,"author":{"gitId":"ChillinRage"},"content":" + INVALID_ADDRESS_DESC + COURSE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":267,"author":{"gitId":"ChillinRage"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":268,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":269,"author":{"gitId":"ChillinRage"},"content":" // invalid course","lastModifiedDate":"2024-03-21"},{"lineNumber":270,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":271,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":272,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ROLE_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":273,"author":{"gitId":"ChillinRage"},"content":" + ADDRESS_DESC_BOB + INVALID_COURSE_DESC + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":274,"author":{"gitId":"ChillinRage"},"content":" Course.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":276,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":277,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":278,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":279,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":280,"author":{"gitId":"ChillinRage"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":281,"author":{"gitId":"ChillinRage"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":283,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":284,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"reetmitra":5,"-":174,"ChillinRage":113}},{"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":"reetmitra"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"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":"2017-06-27"},{"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":"-"},"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":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"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":"-"},"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":{"reetmitra":2,"-":101}},{"path":"src/test/java/seedu/address/model/person/CourseTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ChillinRage"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ChillinRage"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ChillinRage"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ChillinRage"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ChillinRage"},"content":"public class CourseTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ChillinRage"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ChillinRage"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ChillinRage"},"content":" assertThrows(NullPointerException.class, () -\u003e new Course(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ChillinRage"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ChillinRage"},"content":" public void constructor_invalidCourse_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ChillinRage"},"content":" String invalidCourse \u003d \"12CS20S\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ChillinRage"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Course(invalidCourse));","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ChillinRage"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ChillinRage"},"content":" public void isValidCourse() {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ChillinRage"},"content":" // null course","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ChillinRage"},"content":" assertThrows(NullPointerException.class, () -\u003e Course.isValidCourse(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ChillinRage"},"content":" // blank course","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"\")); // empty string","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\" \")); // spaces only","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ChillinRage"},"content":" // missing parts","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"1234\")); // missing alphabet prefix","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"CS\")); // missing digits","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ChillinRage"},"content":" // invalid courses","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"C1231\")); // at least 2 alphabet prefix","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"CS123\")); // cannot have less than 4 digits","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"CS12345\")); // cannot have more than 4 digits","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"CS1231CS\")); // at most 1 alphabet postfix","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"CS123S1\")); // no mixing of digits and alphabets","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"CS0123\")); // first digit cannot be less than 1","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"CS9123\")); // first digit cannot be more than 8","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"CS-1123\")); // no invalid character \"-\"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"CS11 23\")); // no whitespaces in-between characters","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ChillinRage"},"content":" // valid courses","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ChillinRage"},"content":" assertTrue(Course.isValidCourse(\"CS1234\")); // no alphabet postfix","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ChillinRage"},"content":" assertTrue(Course.isValidCourse(\"CS1231S\")); // 1 alphabet postfix","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ChillinRage"},"content":" assertTrue(Course.isValidCourse(\"CS1111\")); // digits all equal","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ChillinRage"},"content":" assertTrue(Course.isValidCourse(\"PLS8002B\")); // first digit is 8","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ChillinRage"},"content":" assertTrue(Course.isValidCourse(\" CS1234 \")); // leading and trailing whitespaces","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ChillinRage"},"content":" assertTrue(Course.isValidCourse(\"cS1234s\")); // small letters","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ChillinRage"},"content":" assertTrue(Course.isValidCourse(\"CS1999\")); // last 3 digits greater than 8","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ChillinRage"},"content":" assertTrue(Course.isValidCourse(\" Cs8970s \")); // mixed of above properties","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"ChillinRage"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"ChillinRage"},"content":" public void equal() {","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"ChillinRage"},"content":" Course course \u003d new Course(\"CS2103T\");","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"ChillinRage"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"ChillinRage"},"content":" assertTrue(course.equals(new Course(\"CS2103T\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"ChillinRage"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"ChillinRage"},"content":" assertTrue(course.equals(course));","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"ChillinRage"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"ChillinRage"},"content":" assertFalse(course.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"ChillinRage"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"ChillinRage"},"content":" assertFalse(course.equals(\"CS2103T\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"ChillinRage"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"ChillinRage"},"content":" assertFalse(course.equals(new Course(\"CS2103\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"ChillinRage"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ChillinRage":76}},{"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":"reetmitra"},"content":"import org.junit.jupiter.api.Disabled;","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":"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":"-"},"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":"-"},"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":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2019-02-23"},{"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":{"reetmitra":2,"-":99}},{"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":"ChillinRage"},"content":"import seedu.address.model.person.Course;","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"Hibeom0929"},"content":"import seedu.address.model.person.Role;","lastModifiedDate":"2024-03-16"},{"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":"ChillinRage"},"content":" private static final String INVALID_COURSE \u003d \"1231S\";","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"Hibeom0929"},"content":" private static final String INVALID_ROLE \u003d \"sTuDennt\";","lastModifiedDate":"2024-03-16"},{"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":"E0735389"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().get().toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"Hibeom0929"},"content":" private static final String VALID_ROLE \u003d BENSON.getRole().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"ChillinRage"},"content":" private static final String VALID_COURSE \u003d BENSON.getCourse().toString();","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ChillinRage"},"content":" INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, VALID_COURSE, VALID_TAGS);","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":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"ChillinRage"},"content":" null, VALID_PHONE, VALID_EMAIL, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, VALID_COURSE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"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":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, VALID_COURSE, VALID_TAGS);","lastModifiedDate":"2024-03-20"},{"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_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, VALID_COURSE, VALID_TAGS);","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, VALID_PHONE, null, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, VALID_COURSE, VALID_TAGS);","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","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":"Hibeom0929"},"content":" public void toModelType_invalidRole_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, VALID_COURSE, VALID_TAGS);","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"Hibeom0929"},"content":" String expectedMessage \u003d Role.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"Hibeom0929"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"Hibeom0929"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"Hibeom0929"},"content":" public void toModelType_nullRole_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, VALID_COURSE, VALID_TAGS);","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Hibeom0929"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Role.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"ChillinRage"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"ChillinRage"},"content":" public void toModelType_invalidCourse_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, INVALID_COURSE, VALID_TAGS);","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"ChillinRage"},"content":" String expectedMessage \u003d Course.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"ChillinRage"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"ChillinRage"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"ChillinRage"},"content":" public void toModelType_nullCourse_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, null, VALID_TAGS);","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"ChillinRage"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Course.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"ChillinRage"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"ChillinRage"},"content":" INVALID_ADDRESS, VALID_COURSE, VALID_TAGS);","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"ChillinRage"},"content":" null, VALID_COURSE, VALID_TAGS);","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, 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":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, VALID_COURSE, invalidTags);","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Hibeom0929":11,"E0735389":1,"-":93,"ChillinRage":51}},{"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":"reetmitra"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"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.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"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":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"reetmitra":3,"-":47}},{"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":"E0735389"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"ChillinRage"},"content":"import seedu.address.model.person.Course;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"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":"ChillinRage"},"content":"import seedu.address.model.person.Role;","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":" descriptor.setRole(person.getRole());","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":43,"author":{"gitId":"ChillinRage"},"content":" descriptor.setCourse(person.getCourse());","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"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":"E0735389"},"content":" descriptor.setPhone(Optional.of(new Phone(phone)));","lastModifiedDate":"2024-03-19"},{"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":"ChillinRage"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ChillinRage"},"content":" * Sets the {@code Course} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ChillinRage"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ChillinRage"},"content":" public EditPersonDescriptorBuilder withRole(String role) {","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ChillinRage"},"content":" descriptor.setRole(new Role(role));","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ChillinRage"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":87,"author":{"gitId":"ChillinRage"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"ChillinRage"},"content":" * Sets the {@code Course} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"ChillinRage"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"ChillinRage"},"content":" public EditPersonDescriptorBuilder withCourse(String course) {","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"ChillinRage"},"content":" descriptor.setCourse(new Course(course));","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"ChillinRage"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":96,"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":97,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"E0735389":2,"-":86,"ChillinRage":20}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"E0735389"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"ChillinRage"},"content":"import seedu.address.model.person.Course;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"Hibeom0929"},"content":"import seedu.address.model.person.Role;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":25,"author":{"gitId":"Hibeom0929"},"content":" public static final String DEFAULT_ROLE \u003d \"STUDENT\";","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"ChillinRage"},"content":" public static final String DEFAULT_COURSE \u003d \"CS2103T\";","lastModifiedDate":"2024-03-16"},{"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":"E0735389"},"content":" private Optional\u003cPhone\u003e phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"Hibeom0929"},"content":" private Role role;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"ChillinRage"},"content":" private Course course;","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"E0735389"},"content":" phone \u003d Optional.of(new Phone(DEFAULT_PHONE));","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"Hibeom0929"},"content":" role \u003d new Role(DEFAULT_ROLE);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"ChillinRage"},"content":" course \u003d new Course(DEFAULT_COURSE);","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"Hibeom0929"},"content":" role \u003d personToCopy.getRole();","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"ChillinRage"},"content":" course \u003d personToCopy.getCourse();","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the {@code Address} 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 withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","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 Phone} 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 withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"E0735389"},"content":" this.phone \u003d Optional.of(new Phone(phone));","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":103,"author":{"gitId":"Hibeom0929"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"Hibeom0929"},"content":" * Sets the {@code Role} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"Hibeom0929"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"Hibeom0929"},"content":" public PersonBuilder withRole(String role) {","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"Hibeom0929"},"content":" this.role \u003d new Role(role);","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"Hibeom0929"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"ChillinRage"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"ChillinRage"},"content":" * Sets the {@code Course} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"ChillinRage"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"ChillinRage"},"content":" public PersonBuilder withCourse(String course) {","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"ChillinRage"},"content":" this.course \u003d new Course(course);","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"ChillinRage"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":120,"author":{"gitId":"ChillinRage"},"content":" return new Person(name, phone, email, role, address, course, tags);","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"Hibeom0929":13,"E0735389":4,"-":92,"ChillinRage":14}},{"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":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSE;","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-20"},{"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":"-"},"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":"E0735389"},"content":" sb.append(person.getPhone().map(x -\u003e PREFIX_PHONE + x.value + \" \").orElse(\"\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"ChillinRage"},"content":" sb.append(PREFIX_ROLE + person.getRole().role.name() + \" \");","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"ChillinRage"},"content":" sb.append(PREFIX_COURSE + person.getCourse().value + \" \");","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"E0735389"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE)","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"E0735389"},"content":" .append(phone.map(x -\u003e x.value).orElse(\"\")).append(\" \"));","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"ChillinRage"},"content":" descriptor.getRole().ifPresent(role -\u003e sb.append(PREFIX_ROLE).append(role.role.name()).append(\" \"));","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"ChillinRage"},"content":" descriptor.getCourse().ifPresent(course -\u003e sb.append(PREFIX_COURSE).append(course.value).append(\" \"));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ChillinRage"},"content":" System.out.println(sb.toString());","lastModifiedDate":"2024-03-20"},{"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":{"E0735389":3,"-":60,"ChillinRage":9}},{"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":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_COURSE_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_COURSE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"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":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_BOB;","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":" .withPhone(\"94351253\").withCourse(\"IS2218\").withRole(\"TA\")","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":" .withCourse(\"IS2218\").withRole(\"STUDENT\")","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"ChillinRage"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ChillinRage"},"content":" .withCourse(\"HSI1000\").withRole(\"PROFESSOR\").build();","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ChillinRage"},"content":" .withCourse(\"CS2030S\").withRole(\"TA\").withTags(\"friends\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"ChillinRage"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ChillinRage"},"content":" .withCourse(\"CS2040S\").withRole(\"TA\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"ChillinRage"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ChillinRage"},"content":" .withCourse(\"MDG5102\").withRole(\"PROFESSOR\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"ChillinRage"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ChillinRage"},"content":" .withCourse(\"ME2115\").withRole(\"STUDENT\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"ChillinRage"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ChillinRage"},"content":" .withCourse(\"CS2103T\").withRole(\"STUDENT\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"ChillinRage"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ChillinRage"},"content":" .withCourse(\"CS2103T\").withRole(\"TA\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":65,"author":{"gitId":"ChillinRage"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ChillinRage"},"content":" .withCourse(VALID_COURSE_AMY).withRole(VALID_ROLE_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":68,"author":{"gitId":"ChillinRage"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ChillinRage"},"content":" .withCourse(VALID_COURSE_BOB).withRole(VALID_ROLE_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"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":{"-":66,"ChillinRage":24}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T11-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T11-2/tp/actions)","lastModifiedDate":"2024-02-21"},{"lineNumber":2,"author":{"gitId":"E0735389"},"content":"[![CodeCov Status](https://codecov.io/gh/AY2324S2-CS2103T-T11-2/tp/branch/master/graph/badge.svg)](https://app.codecov.io/gh/AY2324S2-CS2103T-T11-2/tp)","lastModifiedDate":"2024-03-07"},{"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":"reetmitra"},"content":"# NUSContacts","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":8,"author":{"gitId":"reetmitra"},"content":"NUSContacts is a desktop application for students to manage their contacts, specifically Tutors (Professors and Teaching Assistants) and course coordinators. It is 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, NUSContacts can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-07"},{"lineNumber":9,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"E0735389"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-07"},{"lineNumber":11,"author":{"gitId":"E0735389"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":12,"author":{"gitId":"E0735389"},"content":"Refer to [the project website](https://ay2324s2-cs2103t-t11-2.github.io/tp/) for more information.","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"E0735389":4,"reetmitra":4,"-":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":"E0735389"},"content":"check.dependsOn javadoc","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"E0735389"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23"},{"lineNumber":26,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23"},{"lineNumber":27,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07"},{"lineNumber":30,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07"},{"lineNumber":31,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07"},{"lineNumber":33,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07"},{"lineNumber":34,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07"},{"lineNumber":35,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07"},{"lineNumber":36,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07"},{"lineNumber":37,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":39,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07"},{"lineNumber":40,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":45,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29"},{"lineNumber":63,"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":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"ChillinRage"},"content":" archiveFileName \u003d \u0027NUSContacts.jar\u0027","lastModifiedDate":"2024-03-12"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"E0735389":2,"-":71,"ChillinRage":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":"2024-03-07"},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","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":"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":"reetmitra"},"content":"## CS2103T T11-2 Team Members","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17"},{"lineNumber":10,"author":{"gitId":"reetmitra"},"content":"### Reet Mitra","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":12,"author":{"gitId":"reetmitra"},"content":"\u003cimg src\u003d\"images/reetmitra.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"reetmitra"},"content":"[[Github](https://github.com/reetmitra)]","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"reetmitra"},"content":"* Role: Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"reetmitra"},"content":"* Responsibilities: Code Testing","lastModifiedDate":"2024-03-11"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"reetmitra"},"content":"### Bui Hong Duc","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"reetmitra"},"content":"\u003cimg src\u003d\"images/e0735389.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"reetmitra"},"content":"[[Github](https://github.com/E0735389)]","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"reetmitra"},"content":"* Role: Team Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"reetmitra"},"content":"* Responsibilities: Deliverables and Deadlines","lastModifiedDate":"2024-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"reetmitra"},"content":"### Chong Chan How","lastModifiedDate":"2024-03-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"reetmitra"},"content":"\u003cimg src\u003d\"images/chillinrage.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"reetmitra"},"content":"[[Github](https://github.com/ChillinRage)]","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":35,"author":{"gitId":"reetmitra"},"content":"* Responsibilities: Code Quality","lastModifiedDate":"2024-03-11"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"reetmitra"},"content":"### Timothy Soh Yee Song","lastModifiedDate":"2024-03-06"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"reetmitra"},"content":"\u003cimg src\u003d\"images/largecrowd.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"reetmitra"},"content":"[[Github](https://github.com/LargeCrowd)]","lastModifiedDate":"2024-03-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":44,"author":{"gitId":"reetmitra"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":46,"author":{"gitId":"E0735389"},"content":"### Yang Heebeom","lastModifiedDate":"2024-03-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":48,"author":{"gitId":"reetmitra"},"content":"\u003cimg src\u003d\"images/hibeom0929.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":50,"author":{"gitId":"reetmitra"},"content":"[[Github](https://github.com/Hibeom0929)]","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":53,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-03-11"}],"authorContributionMap":{"E0735389":1,"reetmitra":21,"-":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":"-"},"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":"Hibeom0929"},"content":"* has a need to manage a significant number of contacts of NUS students, tutors, and professors","lastModifiedDate":"2024-03-07"},{"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":"Hibeom0929"},"content":"**Value proposition**:","lastModifiedDate":"2024-03-07"},{"lineNumber":272,"author":{"gitId":"Hibeom0929"},"content":"* manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-03-07"},{"lineNumber":273,"author":{"gitId":"Hibeom0929"},"content":"* allow NUS students to save and search up contacts of students/tutors/instructors and the courses they are in. (e.g. tutorial/lecture groupings)","lastModifiedDate":"2024-03-07"},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":281,"author":{"gitId":"LargeCrowd"},"content":"|----------|--------------------------------------------|----------------------------------|-----------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-07"},{"lineNumber":282,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"LargeCrowd"},"content":"| `* * *` | user | add a new tutor | |","lastModifiedDate":"2024-03-07"},{"lineNumber":284,"author":{"gitId":"LargeCrowd"},"content":"| `* * *` | user | delete a tutor | remove entries that I no longer need |","lastModifiedDate":"2024-03-07"},{"lineNumber":285,"author":{"gitId":"LargeCrowd"},"content":"| `* * *` | user | find a tutor by name | locate details of tutors without having to go through the entire list |","lastModifiedDate":"2024-03-07"},{"lineNumber":286,"author":{"gitId":"LargeCrowd"},"content":"| `* * *` | user | find a tutor by course code | locate tutors from a specific module without having to go through the entire list |","lastModifiedDate":"2024-03-07"},{"lineNumber":287,"author":{"gitId":"LargeCrowd"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2024-03-07"},{"lineNumber":288,"author":{"gitId":"LargeCrowd"},"content":"| `* *` | user | edit a tutor | change incorrect or new information about a tutor |","lastModifiedDate":"2024-03-07"},{"lineNumber":289,"author":{"gitId":"LargeCrowd"},"content":"| `*` | user with many persons in the address book | sort tutor by name | locate a tutor easily |","lastModifiedDate":"2024-03-07"},{"lineNumber":290,"author":{"gitId":"LargeCrowd"},"content":"| `*` | user | add a tutor to a favourites list | access the details of my most frequently contacted tutors easily |","lastModifiedDate":"2024-03-07"},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"LargeCrowd"},"content":"(For all use cases below, the **System** is the `NUSContacts` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-07"},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":298,"author":{"gitId":"LargeCrowd"},"content":"**UC1: Add a tutor**","lastModifiedDate":"2024-03-07"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":300,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"LargeCrowd"},"content":"1. User requests to add a tutor","lastModifiedDate":"2024-03-07"},{"lineNumber":303,"author":{"gitId":"LargeCrowd"},"content":"2. User provides the tutor\u0027s details","lastModifiedDate":"2024-03-07"},{"lineNumber":304,"author":{"gitId":"LargeCrowd"},"content":"3. NUSContacts adds the tutor","lastModifiedDate":"2024-03-07"},{"lineNumber":305,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":306,"author":{"gitId":"LargeCrowd"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":307,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":308,"author":{"gitId":"LargeCrowd"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":309,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":310,"author":{"gitId":"LargeCrowd"},"content":"* 2a. The tutor already exists.","lastModifiedDate":"2024-03-07"},{"lineNumber":311,"author":{"gitId":"LargeCrowd"},"content":" * 2a1. NUSContacts informs the user of the error.","lastModifiedDate":"2024-03-07"},{"lineNumber":312,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":313,"author":{"gitId":"LargeCrowd"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":314,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":315,"author":{"gitId":"LargeCrowd"},"content":"**UC2: Delete a tutor**","lastModifiedDate":"2024-03-07"},{"lineNumber":316,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":317,"author":{"gitId":"LargeCrowd"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":318,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":319,"author":{"gitId":"LargeCrowd"},"content":"1. User requests to list tutors","lastModifiedDate":"2024-03-07"},{"lineNumber":320,"author":{"gitId":"LargeCrowd"},"content":"2. NUSContacts shows a list of tutors","lastModifiedDate":"2024-03-07"},{"lineNumber":321,"author":{"gitId":"LargeCrowd"},"content":"3. User requests to delete a specific tutor in the list","lastModifiedDate":"2024-03-07"},{"lineNumber":322,"author":{"gitId":"LargeCrowd"},"content":"4. NUSContacts deletes the tutor","lastModifiedDate":"2024-03-07"},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":324,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":326,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":328,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":330,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":332,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":334,"author":{"gitId":"LargeCrowd"},"content":" * 3a1. NUSContacts shows an error message.","lastModifiedDate":"2024-03-07"},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":336,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"LargeCrowd"},"content":"**UC3: Find a tutor by name**","lastModifiedDate":"2024-03-07"},{"lineNumber":339,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":340,"author":{"gitId":"LargeCrowd"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":341,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":342,"author":{"gitId":"LargeCrowd"},"content":"1. User requests to find a tutor","lastModifiedDate":"2024-03-07"},{"lineNumber":343,"author":{"gitId":"LargeCrowd"},"content":"2. NUSContacts prompts search criterion (name or course code)","lastModifiedDate":"2024-03-07"},{"lineNumber":344,"author":{"gitId":"LargeCrowd"},"content":"3. User provides the search criterion (name)","lastModifiedDate":"2024-03-07"},{"lineNumber":345,"author":{"gitId":"LargeCrowd"},"content":"4. NUSContacts shows the tutor(s) that match the criterion","lastModifiedDate":"2024-03-07"},{"lineNumber":346,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":347,"author":{"gitId":"LargeCrowd"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":348,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":349,"author":{"gitId":"LargeCrowd"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":350,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":351,"author":{"gitId":"LargeCrowd"},"content":"* 4a. No tutor matches the criterion.","lastModifiedDate":"2024-03-07"},{"lineNumber":352,"author":{"gitId":"LargeCrowd"},"content":" * 4a1. NUSContacts informs the user of the error.","lastModifiedDate":"2024-03-07"},{"lineNumber":353,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":354,"author":{"gitId":"LargeCrowd"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":355,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":356,"author":{"gitId":"LargeCrowd"},"content":"**UC4: Find a tutor by course code**","lastModifiedDate":"2024-03-07"},{"lineNumber":357,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":358,"author":{"gitId":"LargeCrowd"},"content":"**MSS**","lastModifiedDate":"2024-03-07"},{"lineNumber":359,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":360,"author":{"gitId":"LargeCrowd"},"content":"1. User requests to find a tutor","lastModifiedDate":"2024-03-07"},{"lineNumber":361,"author":{"gitId":"LargeCrowd"},"content":"2. NUSContacts prompts search criterion (name or course code)","lastModifiedDate":"2024-03-07"},{"lineNumber":362,"author":{"gitId":"LargeCrowd"},"content":"3. User provides the search criterion (course code)","lastModifiedDate":"2024-03-07"},{"lineNumber":363,"author":{"gitId":"LargeCrowd"},"content":"4. NUSContacts shows the tutor(s) that match the criterion","lastModifiedDate":"2024-03-07"},{"lineNumber":364,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":365,"author":{"gitId":"LargeCrowd"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":366,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":367,"author":{"gitId":"LargeCrowd"},"content":"**Extensions**","lastModifiedDate":"2024-03-07"},{"lineNumber":368,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":369,"author":{"gitId":"LargeCrowd"},"content":"* 4a. No tutor matches the criterion.","lastModifiedDate":"2024-03-07"},{"lineNumber":370,"author":{"gitId":"LargeCrowd"},"content":" * 4a1. NUSContacts informs the user of the error.","lastModifiedDate":"2024-03-07"},{"lineNumber":371,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":372,"author":{"gitId":"LargeCrowd"},"content":" Use case ends.","lastModifiedDate":"2024-03-07"},{"lineNumber":373,"author":{"gitId":"LargeCrowd"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":374,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":376,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":378,"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":379,"author":{"gitId":"ChillinRage"},"content":"2. Should be able to hold up to 1000 contacts without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-07"},{"lineNumber":380,"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":381,"author":{"gitId":"ChillinRage"},"content":"4. Error messages displayed to application window should be easily understood by most users.","lastModifiedDate":"2024-03-07"},{"lineNumber":382,"author":{"gitId":"ChillinRage"},"content":"5. System should respond to user actions within 1 second.","lastModifiedDate":"2024-03-07"},{"lineNumber":383,"author":{"gitId":"ChillinRage"},"content":"6. For databases with less than 1000 contacts, fetching and saving of contacts to/from it should not exceed 200 milliseconds.","lastModifiedDate":"2024-03-07"},{"lineNumber":384,"author":{"gitId":"ChillinRage"},"content":"7. System should handle data corruption or loss without crashing the application.","lastModifiedDate":"2024-03-07"},{"lineNumber":385,"author":{"gitId":"ChillinRage"},"content":"8. System architecture should support future updates and extensions without major restructures.","lastModifiedDate":"2024-03-07"},{"lineNumber":386,"author":{"gitId":"ChillinRage"},"content":"9. System should support comprehensive testing for all components and features.","lastModifiedDate":"2024-03-07"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":393,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"lineNumber":394,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":395,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"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":402,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":406,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":410,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"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":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"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":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":427,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":429,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"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":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"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":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"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":436,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":440,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":442,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":444,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","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"}],"authorContributionMap":{"LargeCrowd":69,"Hibeom0929":4,"-":366,"ChillinRage":7}},{"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":"E0735389"},"content":"NUSContacts 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, NUSContacts can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-03-07"},{"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":"ChillinRage"},"content":"1. Download the latest `NUSContacts.jar` from [here](https://github.com/AY2324S2-CS2103T-T11-2/tp/releases).","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":19,"author":{"gitId":"E0735389"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your NUSContacts application.","lastModifiedDate":"2024-03-07"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"ChillinRage"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar NUSContacts.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-15"},{"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":"Hibeom0929"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com r/STUDENT a/PGPR c/CS2103T` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-03-21"},{"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":"E0735389"},"content":" e.g. if the command specifies `n/NAME p/PHONE`, `p/PHONE n/NAME` is also acceptable.","lastModifiedDate":"2024-03-18"},{"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":"Hibeom0929"},"content":"Format: `add n/NAME e/EMAIL r/ROLE a/ADDRESS c/COURSE [p/PHONE] [t/TAG]…​`","lastModifiedDate":"2024-03-21"},{"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":"Hibeom0929"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com r/STUDENT a/PGPR c/CS2101`","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"Hibeom0929"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com r/TA a/COM2-0102 c/ST2334`","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"E0735389"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"E0735389"},"content":"Unlike the `edit` command, `t/` with an empty tag is not supported.","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"E0735389"},"content":"If you want to not include any tag, leave out `t/TAG` entirely.","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"E0735389"},"content":"Similarly, `p/` without any phone number is not supported, if you want to not specify the phone number, leave out `p/PHONE` entirely.","lastModifiedDate":"2024-03-19"},{"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":"Hibeom0929"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [r/ROLE] [a/ADDRESS] [c/COURSE] [t/TAG]…​`","lastModifiedDate":"2024-03-21"},{"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":"E0735389"},"content":"* You can remove a person\u0027s phone number by typing `p/` without specifying any phone number after it.","lastModifiedDate":"2024-03-18"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"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":115,"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":116,"author":{"gitId":"E0735389"},"content":"* `edit 3 p/ t/` Deletes the phone number of the 3rd person and clears all existing tags.","lastModifiedDate":"2024-03-18"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"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 the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"Hibeom0929"},"content":"* `find yang timothy` returns `Yang Heebeom`, `Timothy`\u003cbr\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"Hibeom0929"},"content":" ![result for \u0027find alex david\u0027](images/findYangTimothyResult.png)","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"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":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"E0735389"},"content":"NUSContacts 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-07"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":168,"author":{"gitId":"E0735389"},"content":"NUSContacts 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-03-07"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04"},{"lineNumber":171,"author":{"gitId":"E0735389"},"content":"If your changes to the data file makes its format invalid, NUSContacts 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":172,"author":{"gitId":"E0735389"},"content":"Furthermore, certain edits can cause the NUSContacts 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":173,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":175,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","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":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"E0735389"},"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 NUSContacts home folder.","lastModifiedDate":"2024-03-07"},{"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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":190,"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":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":194,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"Hibeom0929"},"content":"| Action | Format, Examples |","lastModifiedDate":"2024-03-21"},{"lineNumber":197,"author":{"gitId":"Hibeom0929"},"content":"|------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"Hibeom0929"},"content":"| **Add** | `add n/NAME e/EMAIL r/ROLE a/ADDRESS c/COURSE [t/TAG]… [p/PHONE]​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com r/STUDENT a/PGPR c/CS2103T t/friend t/colleague` |","lastModifiedDate":"2024-03-21"},{"lineNumber":199,"author":{"gitId":"Hibeom0929"},"content":"| **Clear** | `clear` |","lastModifiedDate":"2024-03-21"},{"lineNumber":200,"author":{"gitId":"Hibeom0929"},"content":"| **Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3` |","lastModifiedDate":"2024-03-21"},{"lineNumber":201,"author":{"gitId":"Hibeom0929"},"content":"| **Edit** | `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [r/ROLE] [a/ADDRESS] [c/COURSE] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com` |","lastModifiedDate":"2024-03-21"},{"lineNumber":202,"author":{"gitId":"Hibeom0929"},"content":"| **Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake` |","lastModifiedDate":"2024-03-21"},{"lineNumber":203,"author":{"gitId":"Hibeom0929"},"content":"| **List** | `list` |","lastModifiedDate":"2024-03-21"},{"lineNumber":204,"author":{"gitId":"Hibeom0929"},"content":"| **Help** | `help` |","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"Hibeom0929":16,"E0735389":14,"-":172,"ChillinRage":2}},{"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":"reetmitra"},"content":"Person *--\u003e Role","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03"}],"authorContributionMap":{"reetmitra":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":"reetmitra"},"content":"Class Role","lastModifiedDate":"2024-03-24"},{"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":"reetmitra"},"content":"Person *--\u003e Role","lastModifiedDate":"2024-03-24"},{"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":"reetmitra"},"content":"Email -[hidden]right-\u003e Tag","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"reetmitra"},"content":"","lastModifiedDate":"2024-03-24"},{"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":{"reetmitra":4,"-":54}},{"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":"E0735389"},"content":"title: NUSContacts","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":"E0735389"},"content":"[![CI Status](https://github.com/AY2324S2-CS2103T-T11-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T11-2/tp/actions)","lastModifiedDate":"2024-03-07"},{"lineNumber":7,"author":{"gitId":"E0735389"},"content":"[![CodeCov Status](https://codecov.io/gh/AY2324S2-CS2103T-T11-2/tp/branch/master/graph/badge.svg)](https://app.codecov.io/gh/AY2324S2-CS2103T-T11-2/tp)","lastModifiedDate":"2024-03-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":"E0735389"},"content":"**NUSContacts 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-07"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":13,"author":{"gitId":"E0735389"},"content":"* If you are interested in using NUSContacts, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-03-07"},{"lineNumber":14,"author":{"gitId":"E0735389"},"content":"* If you are interested about developing NUSContacts, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-03-07"},{"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":{"E0735389":6,"-":13}},{"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":"ChillinRage"},"content":" private static final String LOG_FILE \u003d \"NUSContacts.log\";","lastModifiedDate":"2024-03-12"},{"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,"ChillinRage":1}},{"path":"src/main/java/seedu/address/commons/util/FileUtil.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 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":"E0735389"},"content":" * Returns true if {@code path} can be converted into a {@code Path} via {@link Paths#get(String, String...)},","lastModifiedDate":"2024-03-20"},{"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":{"E0735389":1,"-":82}},{"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":"Hibeom0929"},"content":" .append(\"; Role: \")","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"Hibeom0929"},"content":" .append(person.getRole())","lastModifiedDate":"2024-03-15"},{"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":"ChillinRage"},"content":" .append(\"; Course: \")","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"ChillinRage"},"content":" .append(person.getCourse())","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23"},{"lineNumber":51,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"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":{"Hibeom0929":2,"-":51,"ChillinRage":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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09"},{"lineNumber":5,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSE;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-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":"Hibeom0929"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":14,"author":{"gitId":"-"},"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_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09"},{"lineNumber":29,"author":{"gitId":"Hibeom0929"},"content":" + PREFIX_ROLE + \"ROLE \"","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"ChillinRage"},"content":" + PREFIX_COURSE + \"COURSE \"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"E0735389"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2024-03-18"},{"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":"Hibeom0929"},"content":" + PREFIX_ROLE + \"STUDENT \"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"ChillinRage"},"content":" + PREFIX_COURSE + \"CS2103T \"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09"},{"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":{"Hibeom0929":3,"E0735389":1,"-":83,"ChillinRage":3}},{"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":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSE;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-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":"Hibeom0929"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13"},{"lineNumber":24,"author":{"gitId":"-"},"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":"ChillinRage"},"content":"import seedu.address.model.person.Course;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":32,"author":{"gitId":"Hibeom0929"},"content":"import seedu.address.model.person.Role;","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":"Hibeom0929"},"content":" + \"[\" + PREFIX_ROLE + \"ROLE] \"","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":51,"author":{"gitId":"ChillinRage"},"content":" + \"[\" + PREFIX_COURSE + \"COURSE] \"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09"},{"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":"E0735389"},"content":" Optional\u003cPhone\u003e updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-03-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":107,"author":{"gitId":"Hibeom0929"},"content":" Role updatedRole \u003d editPersonDescriptor.getRole().orElse(personToEdit.getRole());","lastModifiedDate":"2024-03-15"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":109,"author":{"gitId":"ChillinRage"},"content":" Course updatedCourse \u003d editPersonDescriptor.getCourse().orElse(personToEdit.getCourse());","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"ChillinRage"},"content":" return new Person(","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"ChillinRage"},"content":" updatedName, updatedPhone, updatedEmail, updatedRole,","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"ChillinRage"},"content":" updatedAddress, updatedCourse, updatedTags);","lastModifiedDate":"2024-03-20"},{"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":"E0735389"},"content":" private Optional\u003cPhone\u003e phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":149,"author":{"gitId":"Hibeom0929"},"content":" private Role role;","lastModifiedDate":"2024-03-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"ChillinRage"},"content":" private Course course;","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":154,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"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":"Hibeom0929"},"content":" setRole(toCopy.role);","lastModifiedDate":"2024-03-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15"},{"lineNumber":166,"author":{"gitId":"ChillinRage"},"content":" setCourse(toCopy.course);","lastModifiedDate":"2024-03-16"},{"lineNumber":167,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"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":"ChillinRage"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, role, address, course, tags);","lastModifiedDate":"2024-03-20"},{"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":"E0735389"},"content":" public void setPhone(Optional\u003cPhone\u003e phone) {","lastModifiedDate":"2024-03-18"},{"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":"E0735389"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":190,"author":{"gitId":"E0735389"},"content":" * Gets the phone number information of this optional.","lastModifiedDate":"2024-03-18"},{"lineNumber":191,"author":{"gitId":"E0735389"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":192,"author":{"gitId":"E0735389"},"content":" * The result is {@code Optional.empty()} if {@code p/} field is not specified,","lastModifiedDate":"2024-03-18"},{"lineNumber":193,"author":{"gitId":"E0735389"},"content":" * {@code Optional.of(Optional.empty())} if {@code p/} field is specified but left empty","lastModifiedDate":"2024-03-18"},{"lineNumber":194,"author":{"gitId":"E0735389"},"content":" * (which means the user wants to delete the phone number),","lastModifiedDate":"2024-03-18"},{"lineNumber":195,"author":{"gitId":"E0735389"},"content":" * and an actual value if the user wants to update the phone number.","lastModifiedDate":"2024-03-18"},{"lineNumber":196,"author":{"gitId":"E0735389"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":197,"author":{"gitId":"E0735389"},"content":" public Optional\u003cOptional\u003cPhone\u003e\u003e getPhone() {","lastModifiedDate":"2024-03-18"},{"lineNumber":198,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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 void setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.email \u003d email;","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\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":206,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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":"Hibeom0929"},"content":" public void setRole(Role role) {","lastModifiedDate":"2024-03-15"},{"lineNumber":210,"author":{"gitId":"Hibeom0929"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-15"},{"lineNumber":211,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":212,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":213,"author":{"gitId":"Hibeom0929"},"content":" public Optional\u003cRole\u003e getRole() {","lastModifiedDate":"2024-03-15"},{"lineNumber":214,"author":{"gitId":"Hibeom0929"},"content":" return Optional.ofNullable(role);","lastModifiedDate":"2024-03-15"},{"lineNumber":215,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":216,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":217,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":218,"author":{"gitId":"-"},"content":" this.address \u003d address;","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 Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":222,"author":{"gitId":"-"},"content":" return Optional.ofNullable(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":"ChillinRage"},"content":" public void setCourse(Course course) {","lastModifiedDate":"2024-03-16"},{"lineNumber":226,"author":{"gitId":"ChillinRage"},"content":" this.course \u003d course;","lastModifiedDate":"2024-03-16"},{"lineNumber":227,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":228,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":229,"author":{"gitId":"ChillinRage"},"content":" public Optional\u003cCourse\u003e getCourse() {","lastModifiedDate":"2024-03-16"},{"lineNumber":230,"author":{"gitId":"ChillinRage"},"content":" return Optional.ofNullable(course);","lastModifiedDate":"2024-03-16"},{"lineNumber":231,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":232,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":233,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":234,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":235,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":236,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":237,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":238,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":241,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":242,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":243,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":245,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":246,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":247,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":250,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":251,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":252,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":253,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":256,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":257,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":258,"author":{"gitId":"-"},"content":" return false;","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":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":262,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":263,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":264,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":265,"author":{"gitId":"Hibeom0929"},"content":" \u0026\u0026 Objects.equals(role, otherEditPersonDescriptor.role)","lastModifiedDate":"2024-03-15"},{"lineNumber":266,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":267,"author":{"gitId":"ChillinRage"},"content":" \u0026\u0026 Objects.equals(course, otherEditPersonDescriptor.course)","lastModifiedDate":"2024-03-16"},{"lineNumber":268,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":276,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":277,"author":{"gitId":"Hibeom0929"},"content":" .add(\"role\", role)","lastModifiedDate":"2024-03-15"},{"lineNumber":278,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":279,"author":{"gitId":"ChillinRage"},"content":" .add(\"course\", course)","lastModifiedDate":"2024-03-16"},{"lineNumber":280,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":284,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"Hibeom0929":16,"E0735389":12,"-":236,"ChillinRage":20}},{"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":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":4,"author":{"gitId":"E0735389"},"content":" * Represents an error which occurs during execution of a {@link seedu.address.logic.commands.Command}.","lastModifiedDate":"2024-03-20"},{"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":{"E0735389":1,"-":16}},{"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":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSE;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"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":"Hibeom0929"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"E0735389"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-18"},{"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":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"ChillinRage"},"content":"import seedu.address.model.person.Course;","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"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":"Hibeom0929"},"content":"import seedu.address.model.person.Role;","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"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":"ChillinRage"},"content":" ArgumentTokenizer.tokenize(","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"ChillinRage"},"content":" args,","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"ChillinRage"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ChillinRage"},"content":" PREFIX_ADDRESS, PREFIX_COURSE, PREFIX_TAG);","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":44,"author":{"gitId":"ChillinRage"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_EMAIL, PREFIX_ROLE, PREFIX_ADDRESS, PREFIX_COURSE)","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"E0735389"},"content":" Optional\u003cString\u003e phoneString \u003d argMultimap.getValue(PREFIX_PHONE);","lastModifiedDate":"2024-03-18"},{"lineNumber":52,"author":{"gitId":"E0735389"},"content":" Optional\u003cPhone\u003e phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"E0735389"},"content":" if (phoneString.isPresent()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"E0735389"},"content":" phone \u003d Optional.of(ParserUtil.parsePhone(phoneString.get()));","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"E0735389"},"content":" } else {","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"E0735389"},"content":" phone \u003d Optional.empty();","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"E0735389"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":58,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"Hibeom0929"},"content":" Role role \u003d ParserUtil.parseRole(argMultimap.getValue(PREFIX_ROLE).get());","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"ChillinRage"},"content":" Course course \u003d ParserUtil.parseCourse(argMultimap.getValue(PREFIX_COURSE).get());","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":65,"author":{"gitId":"ChillinRage"},"content":" Person person \u003d new Person(name, phone, email, role, address, course, tagList);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17"},{"lineNumber":74,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05"}],"authorContributionMap":{"Hibeom0929":3,"E0735389":8,"-":57,"ChillinRage":10}},{"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":"Hibeom0929"},"content":" public static final Prefix PREFIX_ROLE \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"ChillinRage"},"content":" public static final Prefix PREFIX_COURSE \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Hibeom0929":1,"-":15,"ChillinRage":1}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26"},{"lineNumber":6,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSE;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-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-01-26"},{"lineNumber":10,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"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":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":37,"author":{"gitId":"ChillinRage"},"content":" ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ChillinRage"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ChillinRage"},"content":" PREFIX_ROLE, PREFIX_ADDRESS, PREFIX_COURSE, PREFIX_TAG);","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":"ChillinRage"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ChillinRage"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ChillinRage"},"content":" PREFIX_ROLE, PREFIX_ADDRESS, PREFIX_COURSE);","lastModifiedDate":"2024-03-20"},{"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":"E0735389"},"content":" editPersonDescriptor.setPhone(ParserUtil.parseOptionalPhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2024-03-18"},{"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":"ChillinRage"},"content":" if (argMultimap.getValue(PREFIX_ROLE).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"ChillinRage"},"content":" editPersonDescriptor.setRole(ParserUtil.parseRole(argMultimap.getValue(PREFIX_ROLE).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":68,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":70,"author":{"gitId":"ChillinRage"},"content":" if (argMultimap.getValue(PREFIX_COURSE).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"ChillinRage"},"content":" editPersonDescriptor.setCourse(ParserUtil.parseCourse(argMultimap.getValue(PREFIX_COURSE).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"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":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"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":{"E0735389":1,"-":82,"ChillinRage":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":"E0735389"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11"},{"lineNumber":14,"author":{"gitId":"ChillinRage"},"content":"import seedu.address.model.person.Course;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11"},{"lineNumber":18,"author":{"gitId":"Hibeom0929"},"content":"import seedu.address.model.person.Role;","lastModifiedDate":"2024-03-15"},{"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":"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":"E0735389"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"E0735389"},"content":" * Parses a {@code String phone} into a {@code Optional\u003cPhone\u003e}, allowing empty input.","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"E0735389"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"E0735389"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"E0735389"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"E0735389"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"E0735389"},"content":" public static Optional\u003cPhone\u003e parseOptionalPhone(String phone) throws ParseException {","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"E0735389"},"content":" requireNonNull(phone);","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"E0735389"},"content":" if (phone.trim().isEmpty()) {","lastModifiedDate":"2024-03-18"},{"lineNumber":80,"author":{"gitId":"E0735389"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"E0735389"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"E0735389"},"content":" return Optional.of(parsePhone(phone));","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"E0735389"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"E0735389"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","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 address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","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 email} into an {@code Email}.","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 email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"ChillinRage"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"ChillinRage"},"content":" * Parses a {@code String course} into an {@code Course}.","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"ChillinRage"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"ChillinRage"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"ChillinRage"},"content":" * @throws ParseException if the given {@code course} is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"ChillinRage"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"ChillinRage"},"content":" public static Course parseCourse(String course) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"ChillinRage"},"content":" requireNonNull(course);","lastModifiedDate":"2024-03-16"},{"lineNumber":123,"author":{"gitId":"ChillinRage"},"content":" String trimmedCourse \u003d course.trim();","lastModifiedDate":"2024-03-16"},{"lineNumber":124,"author":{"gitId":"ChillinRage"},"content":" if (!Course.isValidCourse(trimmedCourse)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"ChillinRage"},"content":" throw new ParseException(Course.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"ChillinRage"},"content":" return new Course(trimmedCourse);","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"Hibeom0929"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":131,"author":{"gitId":"Hibeom0929"},"content":" * Parses a {@code String role} into a {@code Role}.","lastModifiedDate":"2024-03-15"},{"lineNumber":132,"author":{"gitId":"Hibeom0929"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-15"},{"lineNumber":133,"author":{"gitId":"Hibeom0929"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":134,"author":{"gitId":"Hibeom0929"},"content":" * @throws ParseException if the given {@code role} is invalid.","lastModifiedDate":"2024-03-15"},{"lineNumber":135,"author":{"gitId":"Hibeom0929"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":136,"author":{"gitId":"Hibeom0929"},"content":" public static Role parseRole(String role) throws ParseException {","lastModifiedDate":"2024-03-15"},{"lineNumber":137,"author":{"gitId":"Hibeom0929"},"content":" requireNonNull(role);","lastModifiedDate":"2024-03-15"},{"lineNumber":138,"author":{"gitId":"Hibeom0929"},"content":" String trimmedRole \u003d role.trim();","lastModifiedDate":"2024-03-15"},{"lineNumber":139,"author":{"gitId":"Hibeom0929"},"content":" if (!Role.isValidRole(trimmedRole)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":140,"author":{"gitId":"Hibeom0929"},"content":" throw new ParseException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":141,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":142,"author":{"gitId":"Hibeom0929"},"content":" return new Role(trimmedRole);","lastModifiedDate":"2024-03-15"},{"lineNumber":143,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":144,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30"},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30"},{"lineNumber":148,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30"},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":152,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30"},{"lineNumber":153,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":157,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30"},{"lineNumber":160,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11"},{"lineNumber":163,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":164,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11"},{"lineNumber":166,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11"},{"lineNumber":167,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":169,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11"},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"Hibeom0929":16,"E0735389":15,"-":124,"ChillinRage":16}},{"path":"src/main/java/seedu/address/model/person/Course.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ChillinRage"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"ChillinRage"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"ChillinRage"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"ChillinRage"},"content":" * Represents a Person\u0027s course code in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"ChillinRage"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidCourse(String)}","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"ChillinRage"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"ChillinRage"},"content":"public class Course {","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"ChillinRage"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"ChillinRage"},"content":" \"Course code should adhere to the following constraints:\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"ChillinRage"},"content":" + \"1. It should start with 2 or 3 letters, followed by exactly 4 digits.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"ChillinRage"},"content":" + \"2. (Optional) You can also add a letter as a postfix.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"ChillinRage"},"content":" + \"Examples of accepted code: CS2103, CS2103T, DSA1101.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"ChillinRage"},"content":" /*","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"ChillinRage"},"content":" * A course code should start with 2-3 alphabets, followed by exactly 4 digits.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"ChillinRage"},"content":" * The first digit should be within the range [1,8].","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ChillinRage"},"content":" * Some course codes may also have an alphabet as its last character. (i.e. CS2103T)","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"ChillinRage"},"content":" * (Course code format is quoted from official NUS website)","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"ChillinRage"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"ChillinRage"},"content":" private static final String PREFIX_CODE \u003d \"[A-Z]{2,3}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"ChillinRage"},"content":" private static final String DIGIT_CODE \u003d \"[1-8][0-9]{3}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ChillinRage"},"content":" private static final String POSTFIX_CODE \u003d \"[A-Z]{0,1}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ChillinRage"},"content":" public static final String VALIDATION_REGEX \u003d PREFIX_CODE + DIGIT_CODE + POSTFIX_CODE;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"ChillinRage"},"content":" public final String value;","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"ChillinRage"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"ChillinRage"},"content":" * Constructs a {@code Course}.","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"ChillinRage"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"ChillinRage"},"content":" * @param course A valid course code.","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"ChillinRage"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"ChillinRage"},"content":" public Course(String course) {","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"ChillinRage"},"content":" requireNonNull(course);","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"ChillinRage"},"content":" checkArgument(isValidCourse(course), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"ChillinRage"},"content":" this.value \u003d course.toUpperCase().trim();","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"ChillinRage"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"ChillinRage"},"content":" * Returns true if a given string is a valid course code.","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"ChillinRage"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"ChillinRage"},"content":" public static boolean isValidCourse(String test) {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"ChillinRage"},"content":" return test.toUpperCase().trim().matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"ChillinRage"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"ChillinRage"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"ChillinRage"},"content":" return this.value;","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"ChillinRage"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"ChillinRage"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"ChillinRage"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"ChillinRage"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"ChillinRage"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"ChillinRage"},"content":" if (!(other instanceof Course)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"ChillinRage"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"ChillinRage"},"content":" Course otherName \u003d (Course) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"ChillinRage"},"content":" return this.value.equals(otherName.value);","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"ChillinRage"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"ChillinRage"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"ChillinRage"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"ChillinRage"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"ChillinRage":73}},{"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":"E0735389"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"E0735389"},"content":" private final Optional\u003cPhone\u003e phone;","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"ChillinRage"},"content":" private final Course course;","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"Hibeom0929"},"content":" private final Role role;","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":27,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"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":"-"},"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":"ChillinRage"},"content":" public Person(","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ChillinRage"},"content":" Name name, Optional\u003cPhone\u003e phone, Email email, Role role,","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ChillinRage"},"content":" Address address, Course course, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ChillinRage"},"content":" requireAllNonNull(name, phone, email, role, address, course, tags);","lastModifiedDate":"2024-03-20"},{"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":"Hibeom0929"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"ChillinRage"},"content":" this.course \u003d course;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":49,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"E0735389"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":60,"author":{"gitId":"Hibeom0929"},"content":" public Role getRole() {","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"Hibeom0929"},"content":" return role;","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"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":"ChillinRage"},"content":" public Course getCourse() {","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"ChillinRage"},"content":" return course;","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"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":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","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":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":103,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":109,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":112,"author":{"gitId":"Hibeom0929"},"content":" \u0026\u0026 role.equals(otherPerson.role)","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":114,"author":{"gitId":"ChillinRage"},"content":" \u0026\u0026 course.equals(otherPerson.course)","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"ChillinRage"},"content":" return Objects.hash(name, phone, email, role, address, course, tags);","lastModifiedDate":"2024-03-20"},{"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 String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":130,"author":{"gitId":"Hibeom0929"},"content":" .add(\"role\", role)","lastModifiedDate":"2024-03-15"},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"ChillinRage"},"content":" .add(\"course\", course)","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Hibeom0929":8,"E0735389":3,"-":112,"ChillinRage":14}},{"path":"src/main/java/seedu/address/model/person/Role.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Hibeom0929"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"Hibeom0929"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-15"},{"lineNumber":4,"author":{"gitId":"Hibeom0929"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-15"},{"lineNumber":5,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":6,"author":{"gitId":"Hibeom0929"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":7,"author":{"gitId":"Hibeom0929"},"content":" * Represents a Person\u0027s role in the address book.","lastModifiedDate":"2024-03-15"},{"lineNumber":8,"author":{"gitId":"Hibeom0929"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidRole(String)}","lastModifiedDate":"2024-03-15"},{"lineNumber":9,"author":{"gitId":"Hibeom0929"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":10,"author":{"gitId":"Hibeom0929"},"content":"public class Role {","lastModifiedDate":"2024-03-15"},{"lineNumber":11,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":12,"author":{"gitId":"Hibeom0929"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-15"},{"lineNumber":13,"author":{"gitId":"Hibeom0929"},"content":" \"Roles should be either \u0027STUDENT\u0027, \u0027TA\u0027, or \u0027PROFESSOR\u0027.\";","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"Hibeom0929"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"Hibeom0929"},"content":" * Enum representing different roles in an educational system.","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"Hibeom0929"},"content":" * This enum defines three role types: STUDENT, TA (Teaching Assistant), and PROFESSOR.","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"Hibeom0929"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"Hibeom0929"},"content":" public enum RoleType {","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"Hibeom0929"},"content":" STUDENT, TA, PROFESSOR","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"Hibeom0929"},"content":" public final RoleType role;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"Hibeom0929"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":26,"author":{"gitId":"Hibeom0929"},"content":" * Constructs a {@code role}.","lastModifiedDate":"2024-03-15"},{"lineNumber":27,"author":{"gitId":"Hibeom0929"},"content":" *","lastModifiedDate":"2024-03-15"},{"lineNumber":28,"author":{"gitId":"Hibeom0929"},"content":" * @param role A valid role.","lastModifiedDate":"2024-03-15"},{"lineNumber":29,"author":{"gitId":"Hibeom0929"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":30,"author":{"gitId":"Hibeom0929"},"content":" public Role(String role) {","lastModifiedDate":"2024-03-15"},{"lineNumber":31,"author":{"gitId":"Hibeom0929"},"content":" requireNonNull(role);","lastModifiedDate":"2024-03-15"},{"lineNumber":32,"author":{"gitId":"Hibeom0929"},"content":" checkArgument(isValidRole(role), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":33,"author":{"gitId":"Hibeom0929"},"content":" this.role \u003d RoleType.valueOf(role);","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":35,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"Hibeom0929"},"content":" /**","lastModifiedDate":"2024-03-15"},{"lineNumber":37,"author":{"gitId":"Hibeom0929"},"content":" * Returns true if a given string is a valid role.","lastModifiedDate":"2024-03-15"},{"lineNumber":38,"author":{"gitId":"Hibeom0929"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":39,"author":{"gitId":"Hibeom0929"},"content":" public static boolean isValidRole(String test) {","lastModifiedDate":"2024-03-15"},{"lineNumber":40,"author":{"gitId":"Hibeom0929"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"Hibeom0929"},"content":" RoleType.valueOf(test);","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"Hibeom0929"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":43,"author":{"gitId":"Hibeom0929"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"Hibeom0929"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":46,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":48,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":49,"author":{"gitId":"Hibeom0929"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":50,"author":{"gitId":"Hibeom0929"},"content":" public String toString() {","lastModifiedDate":"2024-03-15"},{"lineNumber":51,"author":{"gitId":"Hibeom0929"},"content":" return role.name();","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":53,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":54,"author":{"gitId":"Hibeom0929"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":55,"author":{"gitId":"Hibeom0929"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"Hibeom0929"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-15"},{"lineNumber":57,"author":{"gitId":"Hibeom0929"},"content":" return true;","lastModifiedDate":"2024-03-15"},{"lineNumber":58,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":59,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":60,"author":{"gitId":"Hibeom0929"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-15"},{"lineNumber":61,"author":{"gitId":"Hibeom0929"},"content":" if (!(other instanceof Role)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":62,"author":{"gitId":"Hibeom0929"},"content":" return false;","lastModifiedDate":"2024-03-15"},{"lineNumber":63,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":64,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":65,"author":{"gitId":"LargeCrowd"},"content":" Role otherRole \u003d (Role) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"LargeCrowd"},"content":" return role.equals(otherRole.role);","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":68,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":69,"author":{"gitId":"Hibeom0929"},"content":" @Override","lastModifiedDate":"2024-03-15"},{"lineNumber":70,"author":{"gitId":"Hibeom0929"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-15"},{"lineNumber":71,"author":{"gitId":"Hibeom0929"},"content":" return role.hashCode();","lastModifiedDate":"2024-03-15"},{"lineNumber":72,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":73,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":74,"author":{"gitId":"Hibeom0929"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"LargeCrowd":2,"Hibeom0929":72}},{"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":"E0735389"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-18"},{"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":"ChillinRage"},"content":"import seedu.address.model.person.Course;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"lineNumber":16,"author":{"gitId":"Hibeom0929"},"content":"import seedu.address.model.person.Role;","lastModifiedDate":"2024-03-15"},{"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":"-"},"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":"LargeCrowd"},"content":" new Person(new Name(\"Alex Yeoh\"), Optional.of(new Phone(\"87438807\")), new Email(\"alexyeoh@u.nus.edu\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"LargeCrowd"},"content":" new Role(\"STUDENT\"), new Address(\"COM1-0108\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"ChillinRage"},"content":" new Course(\"CS2103T\"), getTagSet(\"friends\")),","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"LargeCrowd"},"content":" new Person(new Name(\"Bernice Yu\"), Optional.of(new Phone(\"99272758\")), new Email(\"berniceyu@u.nus.edu\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"LargeCrowd"},"content":" new Role(\"STUDENT\"), new Address(\"COM2-0123\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"LargeCrowd"},"content":" new Course(\"CS2103\"), getTagSet(\"classmates\", \"friends\")),","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"E0735389"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), Optional.of(new Phone(\"93210283\")),","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"E0735389"},"content":" new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"LargeCrowd"},"content":" new Role(\"TA\"), new Address(\"AS7-0622\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"LargeCrowd"},"content":" new Course(\"DSA1101\"), getTagSet(\"tutor\")),","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"LargeCrowd"},"content":" new Person(new Name(\"David Li\"), Optional.of(new Phone(\"91031282\")), new Email(\"lidavid@u.nus.edu\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"LargeCrowd"},"content":" new Role(\"TA\"), new Address(\"S17-0301\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"LargeCrowd"},"content":" new Course(\"MA2001\"), getTagSet(\"friends\")),","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"LargeCrowd"},"content":" new Person(new Name(\"Irfan Ibrahim\"), Optional.of(new Phone(\"92492021\")), new Email(\"irfan@nus.edu.sg\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"LargeCrowd"},"content":" new Role(\"PROFESSOR\"), new Address(\"COM3-0513\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"LargeCrowd"},"content":" new Course(\"EL1101E\"), getTagSet(\"lecturer\")),","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"LargeCrowd"},"content":" new Person(new Name(\"Roy Balakrishnan\"), Optional.of(new Phone(\"92624417\")), new Email(\"royb@nus.edu.sg\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"LargeCrowd"},"content":" new Role(\"PROFESSOR\"), new Address(\"COM1-0203\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"LargeCrowd"},"content":" new Course(\"ACC1701X\"), getTagSet(\"DepartmentHead\"))","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":{"LargeCrowd":16,"Hibeom0929":1,"E0735389":3,"-":42,"ChillinRage":2}},{"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":"E0735389"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-18"},{"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":"E0735389"},"content":"import com.fasterxml.jackson.annotation.JsonInclude;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13"},{"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":"ChillinRage"},"content":"import seedu.address.model.person.Course;","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":21,"author":{"gitId":"Hibeom0929"},"content":"import seedu.address.model.person.Role;","lastModifiedDate":"2024-03-15"},{"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":"Hibeom0929"},"content":" private final String role;","lastModifiedDate":"2024-03-15"},{"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":"ChillinRage"},"content":" private final String course;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"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":"ChillinRage"},"content":" public JsonAdaptedPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ChillinRage"},"content":" @JsonProperty(\"name\") String name,","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ChillinRage"},"content":" @JsonInclude(JsonInclude.Include.NON_NULL) @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ChillinRage"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ChillinRage"},"content":" @JsonProperty(\"role\") String role,","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ChillinRage"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ChillinRage"},"content":" @JsonProperty(\"course\") String course,","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"Hibeom0929"},"content":" this.role \u003d role;","lastModifiedDate":"2024-03-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"ChillinRage"},"content":" this.course \u003d course;","lastModifiedDate":"2024-03-16"},{"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":"-"},"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":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"E0735389"},"content":" phone \u003d source.getPhone().map(x -\u003e x.value).orElse(null);","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":70,"author":{"gitId":"Hibeom0929"},"content":" role \u003d source.getRole().role.name();","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"ChillinRage"},"content":" course \u003d source.getCourse().value;","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":86,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"E0735389"},"content":" if (phone !\u003d null \u0026\u0026 !Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-03-18"},{"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":"E0735389"},"content":" final Optional\u003cPhone\u003e modelPhone \u003d Optional.ofNullable(phone).map(phone -\u003e new Phone(phone));","lastModifiedDate":"2024-03-18"},{"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":"Hibeom0929"},"content":" if (role \u003d\u003d null) {","lastModifiedDate":"2024-03-15"},{"lineNumber":111,"author":{"gitId":"Hibeom0929"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Role.class.getSimpleName()));","lastModifiedDate":"2024-03-15"},{"lineNumber":112,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":113,"author":{"gitId":"Hibeom0929"},"content":" if (!Role.isValidRole(role)) {","lastModifiedDate":"2024-03-15"},{"lineNumber":114,"author":{"gitId":"Hibeom0929"},"content":" throw new IllegalValueException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-15"},{"lineNumber":115,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-15"},{"lineNumber":116,"author":{"gitId":"Hibeom0929"},"content":" final Role modelRole \u003d new Role(role);","lastModifiedDate":"2024-03-15"},{"lineNumber":117,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":126,"author":{"gitId":"ChillinRage"},"content":" if (course \u003d\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"ChillinRage"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Course.class.getSimpleName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":129,"author":{"gitId":"ChillinRage"},"content":" if (!Course.isValidCourse(course)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":130,"author":{"gitId":"ChillinRage"},"content":" throw new IllegalValueException(Course.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":131,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"ChillinRage"},"content":" final Course modelCourse \u003d new Course(course);","lastModifiedDate":"2024-03-16"},{"lineNumber":133,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":134,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":136,"author":{"gitId":"ChillinRage"},"content":" return new Person(modelName, modelPhone, modelEmail, modelRole, modelAddress, modelCourse, modelTags);","lastModifiedDate":"2024-03-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Hibeom0929":12,"E0735389":5,"-":100,"ChillinRage":22}},{"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":"E0735389"},"content":" public static final String WEBSITE_URL \u003d \"https://ay2324s2-cs2103t-t11-2.github.io/tp/\";","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"E0735389"},"content":" public static final String HELP_MESSAGE \u003d \"NUSContacts Application\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"E0735389"},"content":" + \"Visit the project website: \" + WEBSITE_URL;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01"},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":52,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16"},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":61,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24"},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13"},{"lineNumber":69,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15"},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08"},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15"},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15"},{"lineNumber":90,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19"},{"lineNumber":96,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19"},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19"},{"lineNumber":100,"author":{"gitId":"E0735389"},"content":" url.putString(WEBSITE_URL);","lastModifiedDate":"2024-03-18"},{"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":{"E0735389":4,"-":99}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"-"},"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":"ChillinRage"},"content":" private Label course;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"ChillinRage"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"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":"Hibeom0929"},"content":" private Label role;","lastModifiedDate":"2024-03-15"},{"lineNumber":45,"author":{"gitId":"Hibeom0929"},"content":" @FXML","lastModifiedDate":"2024-03-15"},{"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":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"Hibeom0929"},"content":" role.setText(person.getRole().role.name());","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"ChillinRage"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ChillinRage"},"content":" course.setText(person.getCourse().value);","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ChillinRage"},"content":" phone.setText(person.getPhone().map(x -\u003e x.value).orElse(\"(no phone number)\"));","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":63,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02"},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Hibeom0929":3,"-":57,"ChillinRage":6}},{"path":"src/main/java/seedu/address/ui/UiPart.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":"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":"-"},"content":"import seedu.address.MainApp;","lastModifiedDate":"2016-12-21"},{"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":"E0735389"},"content":" * @see #UiPart(URL, Object)","lastModifiedDate":"2024-03-20"},{"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":{"E0735389":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":"-"},"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":"ChillinRage"},"content":" title\u003d\"NUSContacts\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-03-12"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2019-01-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"-":59,"ChillinRage":1}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","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":"ChillinRage"},"content":" \u003cLabel fx:id\u003d\"course\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$course\" /\u003e","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"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":"Hibeom0929"},"content":" \u003cLabel fx:id\u003d\"role\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$role\" /\u003e","lastModifiedDate":"2024-03-15"},{"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":{"Hibeom0929":1,"-":36,"ChillinRage":1}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.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":"reetmitra"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-19"},{"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":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"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":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"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":{"reetmitra":3,"-":175}},{"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":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSE;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"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":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":20,"author":{"gitId":"-"},"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":"ChillinRage"},"content":" public static final String VALID_ROLE_AMY \u003d \"PROFESSOR\";","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ChillinRage"},"content":" public static final String VALID_ROLE_BOB \u003d \"STUDENT\";","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":" public static final String VALID_COURSE_AMY \u003d \"MA1521\";","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"ChillinRage"},"content":" public static final String VALID_COURSE_BOB \u003d \"MA1522\";","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":52,"author":{"gitId":"ChillinRage"},"content":" public static final String ROLE_DESC_AMY \u003d \" \" + PREFIX_ROLE + VALID_ROLE_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ChillinRage"},"content":" public static final String ROLE_DESC_BOB \u003d \" \" + PREFIX_ROLE + VALID_ROLE_BOB;","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":" public static final String COURSE_DESC_AMY \u003d \" \" + PREFIX_COURSE + VALID_COURSE_AMY;","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"ChillinRage"},"content":" public static final String COURSE_DESC_BOB \u003d \" \" + PREFIX_COURSE + VALID_COURSE_BOB;","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"ChillinRage"},"content":" public static final String INVALID_ROLE_DESC \u003d \" \" + PREFIX_ROLE + \"Teacher\"; // only 3 specific roles allowed","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":" public static final String INVALID_COURSE_DESC \u003d \" \" + PREFIX_COURSE + \"2334ST\"; // digit prefix not allowed","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"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":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":77,"author":{"gitId":"ChillinRage"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withRole(VALID_ROLE_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ChillinRage"},"content":" .withAddress(VALID_ADDRESS_AMY).withCourse(VALID_COURSE_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"ChillinRage"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withRole(VALID_ROLE_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"ChillinRage"},"content":" .withAddress(VALID_ADDRESS_BOB).withCourse(VALID_COURSE_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":92,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":118,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":120,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":141,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"-":125,"ChillinRage":16}},{"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":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_COURSE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"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":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":16,"author":{"gitId":"reetmitra"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"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":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":54,"author":{"gitId":"ChillinRage"},"content":" // different role -\u003e returns false","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ChillinRage"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withRole(VALID_ROLE_BOB).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ChillinRage"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_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":"ChillinRage"},"content":" // different course -\u003e returns false","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"ChillinRage"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withCourse(VALID_COURSE_BOB).build();","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"ChillinRage"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":71,"author":{"gitId":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":75,"author":{"gitId":"ChillinRage"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName()","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"ChillinRage"},"content":" + \"{name\u003d\" + editPersonDescriptor.getName().orElse(null)","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"ChillinRage"},"content":" + \", phone\u003d\" + editPersonDescriptor.getPhone().orElse(null)","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"ChillinRage"},"content":" + \", email\u003d\" + editPersonDescriptor.getEmail().orElse(null)","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"ChillinRage"},"content":" + \", role\u003d\" + editPersonDescriptor.getRole().orElse(null)","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"ChillinRage"},"content":" + \", address\u003d\" + editPersonDescriptor.getAddress().orElse(null)","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"ChillinRage"},"content":" + \", course\u003d\" + editPersonDescriptor.getCourse().orElse(null)","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"ChillinRage"},"content":" + \", tags\u003d\" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2024-03-16"},{"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":{"reetmitra":2,"-":65,"ChillinRage":18}},{"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":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.COURSE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.COURSE_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_COURSE_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ROLE_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"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":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":28,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_COURSE_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":32,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSE;","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":46,"author":{"gitId":"reetmitra"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":52,"author":{"gitId":"ChillinRage"},"content":"import seedu.address.model.person.Course;","lastModifiedDate":"2024-03-21"},{"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":"ChillinRage"},"content":"import seedu.address.model.person.Role;","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15"},{"lineNumber":59,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"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":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":69,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"ChillinRage"},"content":" assertParseSuccess(","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"ChillinRage"},"content":" PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"ChillinRage"},"content":" + ROLE_DESC_BOB + ADDRESS_DESC_BOB + COURSE_DESC_BOB + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"ChillinRage"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15"},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25"},{"lineNumber":78,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25"},{"lineNumber":79,"author":{"gitId":"ChillinRage"},"content":" assertParseSuccess(","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ROLE_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"ChillinRage"},"content":" + ADDRESS_DESC_BOB + COURSE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","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":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + 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":"ChillinRage"},"content":" // multiple roles","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(parser, ROLE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"ChillinRage"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ROLE));","lastModifiedDate":"2024-03-21"},{"lineNumber":107,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + 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":"ChillinRage"},"content":" // multiple courses","lastModifiedDate":"2024-03-21"},{"lineNumber":113,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(parser, COURSE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-21"},{"lineNumber":114,"author":{"gitId":"ChillinRage"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_COURSE));","lastModifiedDate":"2024-03-21"},{"lineNumber":115,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":116,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":118,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":119,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":120,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":132,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":134,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":136,"author":{"gitId":"ChillinRage"},"content":" // invalid role","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(parser, INVALID_ROLE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"ChillinRage"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ROLE));","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"ChillinRage"},"content":" // invalid course","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(parser, INVALID_COURSE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"ChillinRage"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_COURSE));","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":150,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":152,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":160,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":162,"author":{"gitId":"ChillinRage"},"content":" // invalid role","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ROLE_DESC,","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"ChillinRage"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ROLE));","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":166,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":170,"author":{"gitId":"ChillinRage"},"content":" // invalid course","lastModifiedDate":"2024-03-21"},{"lineNumber":171,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_COURSE_DESC,","lastModifiedDate":"2024-03-21"},{"lineNumber":172,"author":{"gitId":"ChillinRage"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_COURSE));","lastModifiedDate":"2024-03-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":175,"author":{"gitId":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":178,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23"},{"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_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":186,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":189,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":190,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":191,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":192,"author":{"gitId":"ChillinRage"},"content":" + ROLE_DESC_BOB + ADDRESS_DESC_BOB + COURSE_DESC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":193,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"ChillinRage"},"content":" // missing email prefix","lastModifiedDate":"2024-03-21"},{"lineNumber":196,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":197,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":198,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":199,"author":{"gitId":"ChillinRage"},"content":" + ROLE_DESC_BOB + ADDRESS_DESC_BOB + COURSE_DESC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":200,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":202,"author":{"gitId":"ChillinRage"},"content":" // missing role prefix","lastModifiedDate":"2024-03-21"},{"lineNumber":203,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":204,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":205,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":206,"author":{"gitId":"ChillinRage"},"content":" + VALID_ROLE_BOB + ADDRESS_DESC_BOB + COURSE_DESC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":207,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":209,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":211,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":212,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":213,"author":{"gitId":"ChillinRage"},"content":" + ROLE_DESC_BOB + VALID_ADDRESS_BOB + COURSE_DESC_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":214,"author":{"gitId":"ChillinRage"},"content":" expectedMessage);","lastModifiedDate":"2024-03-21"},{"lineNumber":215,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":216,"author":{"gitId":"ChillinRage"},"content":" // missing course prefix","lastModifiedDate":"2024-03-21"},{"lineNumber":217,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":218,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":219,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":220,"author":{"gitId":"ChillinRage"},"content":" + ROLE_DESC_BOB + ADDRESS_DESC_BOB + VALID_COURSE_BOB,","lastModifiedDate":"2024-03-21"},{"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":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":225,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":226,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":227,"author":{"gitId":"ChillinRage"},"content":" + VALID_ROLE_BOB + VALID_ADDRESS_BOB + VALID_COURSE_BOB,","lastModifiedDate":"2024-03-21"},{"lineNumber":228,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":231,"author":{"gitId":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"lineNumber":232,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":233,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":234,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":235,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":236,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":237,"author":{"gitId":"ChillinRage"},"content":" INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ROLE_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":238,"author":{"gitId":"ChillinRage"},"content":" + ADDRESS_DESC_BOB + COURSE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":239,"author":{"gitId":"ChillinRage"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":241,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":242,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":243,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":244,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ROLE_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":245,"author":{"gitId":"ChillinRage"},"content":" + ADDRESS_DESC_BOB + COURSE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":246,"author":{"gitId":"ChillinRage"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":248,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":249,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":250,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":251,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ROLE_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":252,"author":{"gitId":"ChillinRage"},"content":" + ADDRESS_DESC_BOB + COURSE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":253,"author":{"gitId":"ChillinRage"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":254,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":255,"author":{"gitId":"ChillinRage"},"content":" // invalid role","lastModifiedDate":"2024-03-21"},{"lineNumber":256,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":257,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":258,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ROLE_DESC","lastModifiedDate":"2024-03-21"},{"lineNumber":259,"author":{"gitId":"ChillinRage"},"content":" + ADDRESS_DESC_BOB + COURSE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":260,"author":{"gitId":"ChillinRage"},"content":" Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":262,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":263,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":264,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":265,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ROLE_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":266,"author":{"gitId":"ChillinRage"},"content":" + INVALID_ADDRESS_DESC + COURSE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":267,"author":{"gitId":"ChillinRage"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":268,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":269,"author":{"gitId":"ChillinRage"},"content":" // invalid course","lastModifiedDate":"2024-03-21"},{"lineNumber":270,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":271,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":272,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ROLE_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":273,"author":{"gitId":"ChillinRage"},"content":" + ADDRESS_DESC_BOB + INVALID_COURSE_DESC + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":274,"author":{"gitId":"ChillinRage"},"content":" Course.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":276,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":277,"author":{"gitId":"ChillinRage"},"content":" assertParseFailure(","lastModifiedDate":"2024-03-21"},{"lineNumber":278,"author":{"gitId":"ChillinRage"},"content":" parser,","lastModifiedDate":"2024-03-21"},{"lineNumber":279,"author":{"gitId":"ChillinRage"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":280,"author":{"gitId":"ChillinRage"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND,","lastModifiedDate":"2024-03-21"},{"lineNumber":281,"author":{"gitId":"ChillinRage"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":283,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":284,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":292,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"reetmitra":5,"-":174,"ChillinRage":113}},{"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":"reetmitra"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27"},{"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":"2017-06-27"},{"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":"-"},"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":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"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":"-"},"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":{"reetmitra":2,"-":101}},{"path":"src/test/java/seedu/address/model/person/CourseTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ChillinRage"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"ChillinRage"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"ChillinRage"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"ChillinRage"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"ChillinRage"},"content":"public class CourseTest {","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"ChillinRage"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"ChillinRage"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"ChillinRage"},"content":" assertThrows(NullPointerException.class, () -\u003e new Course(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"ChillinRage"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"ChillinRage"},"content":" public void constructor_invalidCourse_throwsIllegalArgumentException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"ChillinRage"},"content":" String invalidCourse \u003d \"12CS20S\";","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"ChillinRage"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Course(invalidCourse));","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"ChillinRage"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"ChillinRage"},"content":" public void isValidCourse() {","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"ChillinRage"},"content":" // null course","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"ChillinRage"},"content":" assertThrows(NullPointerException.class, () -\u003e Course.isValidCourse(null));","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"ChillinRage"},"content":" // blank course","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"\")); // empty string","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\" \")); // spaces only","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"ChillinRage"},"content":" // missing parts","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"1234\")); // missing alphabet prefix","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"CS\")); // missing digits","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"ChillinRage"},"content":" // invalid courses","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"C1231\")); // at least 2 alphabet prefix","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"CS123\")); // cannot have less than 4 digits","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"CS12345\")); // cannot have more than 4 digits","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"CS1231CS\")); // at most 1 alphabet postfix","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"CS123S1\")); // no mixing of digits and alphabets","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"CS0123\")); // first digit cannot be less than 1","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"CS9123\")); // first digit cannot be more than 8","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"CS-1123\")); // no invalid character \"-\"","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ChillinRage"},"content":" assertFalse(Course.isValidCourse(\"CS11 23\")); // no whitespaces in-between characters","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"ChillinRage"},"content":" // valid courses","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ChillinRage"},"content":" assertTrue(Course.isValidCourse(\"CS1234\")); // no alphabet postfix","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"ChillinRage"},"content":" assertTrue(Course.isValidCourse(\"CS1231S\")); // 1 alphabet postfix","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"ChillinRage"},"content":" assertTrue(Course.isValidCourse(\"CS1111\")); // digits all equal","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ChillinRage"},"content":" assertTrue(Course.isValidCourse(\"PLS8002B\")); // first digit is 8","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ChillinRage"},"content":" assertTrue(Course.isValidCourse(\" CS1234 \")); // leading and trailing whitespaces","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"ChillinRage"},"content":" assertTrue(Course.isValidCourse(\"cS1234s\")); // small letters","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ChillinRage"},"content":" assertTrue(Course.isValidCourse(\"CS1999\")); // last 3 digits greater than 8","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"ChillinRage"},"content":" assertTrue(Course.isValidCourse(\" Cs8970s \")); // mixed of above properties","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"ChillinRage"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"ChillinRage"},"content":" public void equal() {","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"ChillinRage"},"content":" Course course \u003d new Course(\"CS2103T\");","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"ChillinRage"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"ChillinRage"},"content":" assertTrue(course.equals(new Course(\"CS2103T\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"ChillinRage"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"ChillinRage"},"content":" assertTrue(course.equals(course));","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"ChillinRage"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"ChillinRage"},"content":" assertFalse(course.equals(null));","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"ChillinRage"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"ChillinRage"},"content":" assertFalse(course.equals(\"CS2103T\"));","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"ChillinRage"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"ChillinRage"},"content":" assertFalse(course.equals(new Course(\"CS2103\")));","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"ChillinRage"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"ChillinRage":76}},{"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":"reetmitra"},"content":"import org.junit.jupiter.api.Disabled;","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":"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":"-"},"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":"-"},"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":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2019-02-23"},{"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":{"reetmitra":2,"-":99}},{"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":"ChillinRage"},"content":"import seedu.address.model.person.Course;","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":20,"author":{"gitId":"Hibeom0929"},"content":"import seedu.address.model.person.Role;","lastModifiedDate":"2024-03-16"},{"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":"ChillinRage"},"content":" private static final String INVALID_COURSE \u003d \"1231S\";","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"Hibeom0929"},"content":" private static final String INVALID_ROLE \u003d \"sTuDennt\";","lastModifiedDate":"2024-03-16"},{"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":"E0735389"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().get().toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":34,"author":{"gitId":"Hibeom0929"},"content":" private static final String VALID_ROLE \u003d BENSON.getRole().toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"ChillinRage"},"content":" private static final String VALID_COURSE \u003d BENSON.getCourse().toString();","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ChillinRage"},"content":" INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, VALID_COURSE, VALID_TAGS);","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":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"ChillinRage"},"content":" null, VALID_PHONE, VALID_EMAIL, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, VALID_COURSE, VALID_TAGS);","lastModifiedDate":"2024-03-16"},{"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":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, VALID_COURSE, VALID_TAGS);","lastModifiedDate":"2024-03-20"},{"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_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, VALID_COURSE, VALID_TAGS);","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, VALID_PHONE, null, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, VALID_COURSE, VALID_TAGS);","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","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":"Hibeom0929"},"content":" public void toModelType_invalidRole_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, VALID_COURSE, VALID_TAGS);","lastModifiedDate":"2024-03-20"},{"lineNumber":97,"author":{"gitId":"Hibeom0929"},"content":" String expectedMessage \u003d Role.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"Hibeom0929"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"Hibeom0929"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"Hibeom0929"},"content":" public void toModelType_nullRole_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-20"},{"lineNumber":105,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, VALID_COURSE, VALID_TAGS);","lastModifiedDate":"2024-03-20"},{"lineNumber":106,"author":{"gitId":"Hibeom0929"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Role.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"ChillinRage"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"ChillinRage"},"content":" public void toModelType_invalidCourse_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, INVALID_COURSE, VALID_TAGS);","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"ChillinRage"},"content":" String expectedMessage \u003d Course.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"ChillinRage"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"ChillinRage"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":120,"author":{"gitId":"ChillinRage"},"content":" public void toModelType_nullCourse_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":121,"author":{"gitId":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-16"},{"lineNumber":122,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, null, VALID_TAGS);","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"ChillinRage"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Course.class.getSimpleName());","lastModifiedDate":"2024-03-16"},{"lineNumber":125,"author":{"gitId":"ChillinRage"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":126,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":127,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":130,"author":{"gitId":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":131,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":132,"author":{"gitId":"ChillinRage"},"content":" INVALID_ADDRESS, VALID_COURSE, VALID_TAGS);","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":139,"author":{"gitId":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-16"},{"lineNumber":140,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":141,"author":{"gitId":"ChillinRage"},"content":" null, VALID_COURSE, VALID_TAGS);","lastModifiedDate":"2024-03-20"},{"lineNumber":142,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, 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":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":148,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":149,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":150,"author":{"gitId":"ChillinRage"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(","lastModifiedDate":"2024-03-20"},{"lineNumber":151,"author":{"gitId":"ChillinRage"},"content":" VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ROLE,","lastModifiedDate":"2024-03-20"},{"lineNumber":152,"author":{"gitId":"ChillinRage"},"content":" VALID_ADDRESS, VALID_COURSE, invalidTags);","lastModifiedDate":"2024-03-20"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"Hibeom0929":11,"E0735389":1,"-":93,"ChillinRage":51}},{"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":"reetmitra"},"content":"import org.junit.jupiter.api.Disabled;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"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.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13"},{"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":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":24,"author":{"gitId":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"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":"reetmitra"},"content":" @Disabled","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13"},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"reetmitra":3,"-":47}},{"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":"E0735389"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23"},{"lineNumber":10,"author":{"gitId":"ChillinRage"},"content":"import seedu.address.model.person.Course;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"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":"ChillinRage"},"content":"import seedu.address.model.person.Role;","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":" descriptor.setRole(person.getRole());","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":43,"author":{"gitId":"ChillinRage"},"content":" descriptor.setCourse(person.getCourse());","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"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":"E0735389"},"content":" descriptor.setPhone(Optional.of(new Phone(phone)));","lastModifiedDate":"2024-03-19"},{"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":"ChillinRage"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"ChillinRage"},"content":" * Sets the {@code Course} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"ChillinRage"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"ChillinRage"},"content":" public EditPersonDescriptorBuilder withRole(String role) {","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"ChillinRage"},"content":" descriptor.setRole(new Role(role));","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"ChillinRage"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":87,"author":{"gitId":"ChillinRage"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"ChillinRage"},"content":" * Sets the {@code Course} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"ChillinRage"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"ChillinRage"},"content":" public EditPersonDescriptorBuilder withCourse(String course) {","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"ChillinRage"},"content":" descriptor.setCourse(new Course(course));","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"ChillinRage"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":96,"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":97,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":99,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":100,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23"},{"lineNumber":101,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":105,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"E0735389":2,"-":86,"ChillinRage":20}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20"},{"lineNumber":4,"author":{"gitId":"E0735389"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"ChillinRage"},"content":"import seedu.address.model.person.Course;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"Hibeom0929"},"content":"import seedu.address.model.person.Role;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03"},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18"},{"lineNumber":25,"author":{"gitId":"Hibeom0929"},"content":" public static final String DEFAULT_ROLE \u003d \"STUDENT\";","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"lineNumber":27,"author":{"gitId":"ChillinRage"},"content":" public static final String DEFAULT_COURSE \u003d \"CS2103T\";","lastModifiedDate":"2024-03-16"},{"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":"E0735389"},"content":" private Optional\u003cPhone\u003e phone;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":32,"author":{"gitId":"Hibeom0929"},"content":" private Role role;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":34,"author":{"gitId":"ChillinRage"},"content":" private Course course;","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20"},{"lineNumber":42,"author":{"gitId":"E0735389"},"content":" phone \u003d Optional.of(new Phone(DEFAULT_PHONE));","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20"},{"lineNumber":44,"author":{"gitId":"Hibeom0929"},"content":" role \u003d new Role(DEFAULT_ROLE);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":46,"author":{"gitId":"ChillinRage"},"content":" course \u003d new Course(DEFAULT_COURSE);","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11"},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11"},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20"},{"lineNumber":56,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20"},{"lineNumber":57,"author":{"gitId":"Hibeom0929"},"content":" role \u003d personToCopy.getRole();","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":59,"author":{"gitId":"ChillinRage"},"content":" course \u003d personToCopy.getCourse();","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11"},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15"},{"lineNumber":75,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the {@code Address} 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 withAddress(String address) {","lastModifiedDate":"2017-08-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","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 Phone} 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 withPhone(String phone) {","lastModifiedDate":"2017-08-15"},{"lineNumber":91,"author":{"gitId":"E0735389"},"content":" this.phone \u003d Optional.of(new Phone(phone));","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26"},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15"},{"lineNumber":99,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20"},{"lineNumber":100,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":103,"author":{"gitId":"Hibeom0929"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"Hibeom0929"},"content":" * Sets the {@code Role} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"Hibeom0929"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"Hibeom0929"},"content":" public PersonBuilder withRole(String role) {","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"Hibeom0929"},"content":" this.role \u003d new Role(role);","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"Hibeom0929"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"Hibeom0929"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"Hibeom0929"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"ChillinRage"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"ChillinRage"},"content":" * Sets the {@code Course} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"ChillinRage"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"ChillinRage"},"content":" public PersonBuilder withCourse(String course) {","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"ChillinRage"},"content":" this.course \u003d new Course(course);","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"ChillinRage"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"ChillinRage"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":120,"author":{"gitId":"ChillinRage"},"content":" return new Person(name, phone, email, role, address, course, tags);","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"Hibeom0929":13,"E0735389":4,"-":92,"ChillinRage":14}},{"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":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_COURSE;","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-03-20"},{"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":"-"},"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":"E0735389"},"content":" sb.append(person.getPhone().map(x -\u003e PREFIX_PHONE + x.value + \" \").orElse(\"\"));","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":38,"author":{"gitId":"ChillinRage"},"content":" sb.append(PREFIX_ROLE + person.getRole().role.name() + \" \");","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"ChillinRage"},"content":" sb.append(PREFIX_COURSE + person.getCourse().value + \" \");","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09"},{"lineNumber":43,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26"},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26"},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":53,"author":{"gitId":"E0735389"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE)","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"E0735389"},"content":" .append(phone.map(x -\u003e x.value).orElse(\"\")).append(\" \"));","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"ChillinRage"},"content":" descriptor.getRole().ifPresent(role -\u003e sb.append(PREFIX_ROLE).append(role.role.name()).append(\" \"));","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":58,"author":{"gitId":"ChillinRage"},"content":" descriptor.getCourse().ifPresent(course -\u003e sb.append(PREFIX_COURSE).append(course.value).append(\" \"));","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ChillinRage"},"content":" System.out.println(sb.toString());","lastModifiedDate":"2024-03-20"},{"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":{"E0735389":3,"-":60,"ChillinRage":9}},{"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":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_COURSE_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_COURSE_BOB;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"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":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_AMY;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"ChillinRage"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_BOB;","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":" .withPhone(\"94351253\").withCourse(\"IS2218\").withRole(\"TA\")","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":" .withCourse(\"IS2218\").withRole(\"STUDENT\")","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"ChillinRage"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"ChillinRage"},"content":" .withCourse(\"HSI1000\").withRole(\"PROFESSOR\").build();","lastModifiedDate":"2024-03-20"},{"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":"ChillinRage"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"ChillinRage"},"content":" .withCourse(\"CS2030S\").withRole(\"TA\").withTags(\"friends\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"ChillinRage"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"ChillinRage"},"content":" .withCourse(\"CS2040S\").withRole(\"TA\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":49,"author":{"gitId":"ChillinRage"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"ChillinRage"},"content":" .withCourse(\"MDG5102\").withRole(\"PROFESSOR\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"ChillinRage"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"ChillinRage"},"content":" .withCourse(\"ME2115\").withRole(\"STUDENT\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"ChillinRage"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"ChillinRage"},"content":" .withCourse(\"CS2103T\").withRole(\"STUDENT\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":60,"author":{"gitId":"ChillinRage"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"ChillinRage"},"content":" .withCourse(\"CS2103T\").withRole(\"TA\").build();","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":65,"author":{"gitId":"ChillinRage"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"ChillinRage"},"content":" .withCourse(VALID_COURSE_AMY).withRole(VALID_ROLE_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":68,"author":{"gitId":"ChillinRage"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"ChillinRage"},"content":" .withCourse(VALID_COURSE_BOB).withRole(VALID_ROLE_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"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":{"-":66,"ChillinRage":24}}] diff --git a/AY2324S2-CS2103T-T11-2_tp_master/commits.json b/AY2324S2-CS2103T-T11-2_tp_master/commits.json index dc5d59a7..2a73517d 100644 --- a/AY2324S2-CS2103T-T11-2_tp_master/commits.json +++ b/AY2324S2-CS2103T-T11-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"LargeCrowd":[{"date":"2024-03-07","commitResults":[{"hash":"78f0e6517babc94f40af97c948c5612eb5b10115","isMergeCommit":false,"messageTitle":"Update User Stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":8}}},{"hash":"d3e076dfad43eeb7206632fb98de2f690de32781","isMergeCommit":false,"messageTitle":"Update Use Cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":42,"deletions":7}}},{"hash":"faef8d909490981c9a28374a026a6c77a2a37ee7","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":12}}}]},{"date":"2024-03-17","commitResults":[{"hash":"7ad6ab0a33be72f844fa80ac94c6934d8ba69ecd","isMergeCommit":true,"messageTitle":"Merge pull request #29 from ChillinRage/jar-filename","messageBody":"Update file names","fileTypesAndContributionMap":{}},{"hash":"adcd48e022fbb8b162bea0a17840757dd1eb845e","isMergeCommit":false,"messageTitle":"Minor naming fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"503a7398f382adcdc0d7d1df8e1fc8f05470815c","isMergeCommit":false,"messageTitle":"Update sample data with relevant data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":16}}}]},{"date":"2024-03-21","commitResults":[{"hash":"e0f2d82649012ba47caac5e403939ae1999f0c12","isMergeCommit":false,"messageTitle":"Minor sample data update","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1d2ed25ec82ab2161e9cca8c69a00603278caa1e","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into update-relevant-sample-data","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9c9f48966e32fb852c91b4a9082053ff35868839","isMergeCommit":false,"messageTitle":"Remove trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"9172944b04c481dc873e9dc89a5d9cb6f668bcd4","isMergeCommit":false,"messageTitle":"Add sample addresses for all sample persons","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}}]}],"Hibeom0929":[{"date":"2024-03-07","commitResults":[{"hash":"6789c64d3d22c6f2c260e7e0cf94d96ecfb36c22","isMergeCommit":false,"messageTitle":"Update DG target profile and value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}}]},{"date":"2024-03-14","commitResults":[{"hash":"976dc11c300587536c93dc422748ded87eb28121","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S2-CS2103T-T11-2/master","messageBody":"Pull v1.1","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"f473d5e979c5d4628a0cfc21c603f923249c1135","isMergeCommit":false,"messageTitle":"Add role.java and role section to person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":80,"deletions":3}}},{"hash":"29b8d820756f8abf08b626550999eccead9c1833","isMergeCommit":false,"messageTitle":"Edit command, util, and parser to have the role section for a person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":7}}},{"hash":"38f2e3f64371f29495be6df1d081b5d76ccdfaae","isMergeCommit":false,"messageTitle":"Edit the message to show the information about the role and add the role to the person card to show the role in the UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}}]},{"date":"2024-03-16","commitResults":[{"hash":"84c3ed675a4dba83911a9a91adf5ac030a59d724","isMergeCommit":false,"messageTitle":"Adjust minor issues for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":4}}},{"hash":"22509a47298665f219da2263f59f460d46d98734","isMergeCommit":false,"messageTitle":"adjust a minor issue for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"7ae7de4c40215e558521b87c19b5a4c720dae906","isMergeCommit":false,"messageTitle":"Revert \"adjust a minor issue for checkstyle\"","messageBody":"This reverts commit 22509a47298665f219da2263f59f460d46d98734.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3}}},{"hash":"4c714bcdb56d547a89a80da22863fb305ea66f80","isMergeCommit":false,"messageTitle":"Adjust a minor issue for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"defa138f04a52a1b7435a229f99c07b46380ba0c","isMergeCommit":false,"messageTitle":"Update Role.java to use enumeration for valid roles and edit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":14},"test-code":{"insertions":41,"deletions":10}}},{"hash":"6291850adc0b50615cc0f45f9f63910628dda779","isMergeCommit":false,"messageTitle":"Update javadoc in Role.java to solve checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"884d374951a0d5f44c3ea0fc1df52d52e50aff20","isMergeCommit":false,"messageTitle":"Edit JsonAdaptedPersonTest to solve minor checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":6}}}]},{"date":"2024-03-21","commitResults":[{"hash":"ede76d0765c9dd76eb2e3587b088ad05b609c3a6","isMergeCommit":false,"messageTitle":"Update UG to fit v1.2","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":16}}},{"hash":"cb651620ed690a1a27cadfdaa8bc30ba6c6858a2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-ug","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"93b2e4b350e6a9476a7e5c510c0ceb227cc3c438","isMergeCommit":false,"messageTitle":"Update the address to fit the university context","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":12}}},{"hash":"717c2cfd3e9d23a09a8c017ff0b06377edf09be7","isMergeCommit":true,"messageTitle":"Merge pull request #63 from Hibeom0929/update-ug","messageBody":"Update UG to fit v1.2","fileTypesAndContributionMap":{}}]}],"E0735389":[{"date":"2024-03-07","commitResults":[{"hash":"ff49101c91daade683692b9afd09a79bcd5ab1f7","isMergeCommit":true,"messageTitle":"Merge pull request #12 from LargeCrowd/update-dg","messageBody":"Update DG (User Stories, Use Cases)","fileTypesAndContributionMap":{}},{"hash":"230176e548a5e8bcba1fbc79d778d04f072a33e7","isMergeCommit":true,"messageTitle":"Merge pull request #14 from ChillinRage/update-dg-nfr","messageBody":"Update DG non-functional requirements","fileTypesAndContributionMap":{}},{"hash":"80e8b7ca1b270cd0e535da19b106689053e71b7b","isMergeCommit":true,"messageTitle":"Merge pull request #15 from Hibeom0929/update-dg","messageBody":"Update DG target profile and value proposition","fileTypesAndContributionMap":{}},{"hash":"ef7dc353d21acfc218290219209305b4b28e6d47","isMergeCommit":false,"messageTitle":"Fix a typo in AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d0d498f2638791fb4e22831c55d06c9d1647bb42","isMergeCommit":false,"messageTitle":"Restore Jekyll front matter","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"2df6d1cdebab940bde7031313147f927fd9ffc6e","isMergeCommit":false,"messageTitle":"Add acknowledgement of AB3 to README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"eface06c98e99218e6cfe4c11bbe12c29ead1081","isMergeCommit":true,"messageTitle":"Merge pull request #17 from E0735389/update-aboutus-and-readme","messageBody":"Update AboutUs and README","fileTypesAndContributionMap":{}},{"hash":"3a2b3956d4b71dc2dac2cd6c4358eb8fb9c6686e","isMergeCommit":true,"messageTitle":"Merge pull request #18 from E0735389/update-jekyll-config","messageBody":"Update Jekyll configuration","fileTypesAndContributionMap":{}},{"hash":"76f3793381e46d17c14e9485181e61df737494a9","isMergeCommit":false,"messageTitle":"Update UserGuide partially to change program name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"47b67ce8c8cc2b0f9f060f585f22980b5348b3fb","isMergeCommit":false,"messageTitle":"Update website homepage","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"eb051928decbd958f1074499d80e95c85fcbf8da","isMergeCommit":true,"messageTitle":"Merge pull request #19 from E0735389/update-website","messageBody":"Update website","fileTypesAndContributionMap":{}},{"hash":"0b590f2d21f16c972e7258c39f33031127ac79c5","isMergeCommit":false,"messageTitle":"Update the CodeCov and Java CI badges","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-08","commitResults":[{"hash":"5cd62d69f993c2ae4afe13456a2f9ee9dd1fbe10","isMergeCommit":true,"messageTitle":"Merge pull request #20 from E0735389/update-badges","messageBody":"Update the CodeCov and Java CI badges","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"5465f9966f6959fdbb56573fc605af25db890cac","isMergeCommit":true,"messageTitle":"Merge pull request #26 from reetmitra/update-responsibilities","messageBody":"Update AboutUs.md for responsibilities","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"a049f01e3446e45a3ab2e76b1b3cd0aa549a7f68","isMergeCommit":true,"messageTitle":"Merge pull request #27 from ChillinRage/main-window","messageBody":"Rename main window title","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"18905363bd6d9cb14ff91b3604727209e8c22e67","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Hibeom0929/add-role-to-person","messageBody":"Add role to person","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"9d1f40820ed0eaa4474439074048d3b394f25e9c","isMergeCommit":false,"messageTitle":"Fix sample address book generation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"77f405cdcdb094bf6fcffe3a235c92c417e8e37f","isMergeCommit":false,"messageTitle":"Modify help message to suit the project","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"030f2b24f67df2bc239f6f5fb42e2b78c02d609b","isMergeCommit":false,"messageTitle":"Make phone field optional for add command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":25}}},{"hash":"6ec5dd03b58ab0154ceafbb24bd6de081a8e45e6","isMergeCommit":false,"messageTitle":"Update the user guide to mention phone is optional","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":5}}},{"hash":"f44c88b29fc9c6af5e95e4d8ff678aef48508ed6","isMergeCommit":true,"messageTitle":"Merge pull request #36 from E0735389/fix-sample-addressbook","messageBody":"Fix sample address book generation","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"1d548c9a68faa883b689ba5dc9b536852f9e24c0","isMergeCommit":true,"messageTitle":"Merge pull request #38 from E0735389/modify-help-message","messageBody":"Modify help message to suit the project","fileTypesAndContributionMap":{}},{"hash":"98bea91fcbab57948add581d5db7a3164e10bb6a","isMergeCommit":true,"messageTitle":"Merge pull request #49 from reetmitra/fix-tests","messageBody":"Disable and skip failing tests until later","fileTypesAndContributionMap":{}},{"hash":"dba5c42b27795c9764d5db2730bb8250df77c6cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into make-phone-optional","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"739b93d03dcb17b76ffcb6a401efdfbf6708891d","isMergeCommit":false,"messageTitle":"Explain difference with t/ in user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"a2ec5c2412eb2e8dceb34af336ed2d05754c37a7","isMergeCommit":false,"messageTitle":"Fix code styling issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"4b9fe4901fb26e824240cc069278e14913059ed7","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":15}}},{"hash":"7d45023c0d48e74f388c6543ec056a5e3fa31531","isMergeCommit":true,"messageTitle":"Merge pull request #43 from E0735389/make-phone-optional","messageBody":"Make phone field optional for add command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"b16a48170a88a6857ef4485da0abe11b06468e7c","isMergeCommit":false,"messageTitle":"Fix javadoc errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"106e907f5eb981d607e7c1f9aa454ecb442a8545","isMergeCommit":true,"messageTitle":"Merge pull request #52 from E0735389/fix-javadoc","messageBody":"Fix javadoc errors","fileTypesAndContributionMap":{}},{"hash":"5f11d7ff7cfbf1b6229e9cea64d4723150870e92","isMergeCommit":false,"messageTitle":"Add javadoc to gradle check command","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":0}}},{"hash":"4ec00d2702d881358af0e72a40ee84ef233f06cd","isMergeCommit":true,"messageTitle":"Merge pull request #53 from E0735389/add-javadoc-to-ci","messageBody":"Add javadoc to Java CI workflow","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"552b4e109bdf749d3e87b190615de333b2c07d39","isMergeCommit":true,"messageTitle":"Merge pull request #55 from ChillinRage/course-tag","messageBody":"Add Course tag to person","fileTypesAndContributionMap":{}},{"hash":"7a0d8a30bcd14bcae3ddb710adf5c76f538f6cad","isMergeCommit":true,"messageTitle":"Merge pull request #57 from LargeCrowd/update-relevant-sample-data","messageBody":"Update unrealistic sample data with more relevant data","fileTypesAndContributionMap":{}},{"hash":"4e87b9ea067f3c6c2d6a4a67c2dfb8a23effc08e","isMergeCommit":false,"messageTitle":"Update README to link to project website","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":49}}},{"hash":"3db8fc7f439ab4fe81e3d7d44c9174f1d43d8b14","isMergeCommit":true,"messageTitle":"Merge pull request #67 from E0735389/update-readme-link-to-ug","messageBody":"Update README to link to project website","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"reetmitra":[{"date":"2024-03-07","commitResults":[{"hash":"779314b5f3873060e1bdf113d45ea6e77e46395a","isMergeCommit":false,"messageTitle":"Update \u0027About Us\u0027 page with new team member profiles and photos","messageBody":"- Add profiles for the new team members, including their roles and\n github links.\n- Update existing team member profiles with current project roles and\n recent achievements.\n- Replace outdated team photos with recent ones.\n","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":28}}},{"hash":"b9cc98a6c1949211a1d1b255817be078815fb514","isMergeCommit":false,"messageTitle":"Update README with UI screenshot and project-specific contents","messageBody":"- Add a new screenshot of the project\u0027s UI to give newcomers a visual\n introduction to our interface. This should help in providing a\n clearer idea of what to expect before diving into the details or\n installation process.\n\n- Update all sections of the README to align with our project\u0027s\n specific features, usage instructions, and contribution guidelines.\n This ensures that the documentation is not only up-to-date but also\n relevant to our project\u0027s current version.\n\n- Revise the installation and setup instructions to reflect any recent\n changes in the process, ensure that users can get up and running\n with minimal confusion.\n","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":10}}}]},{"date":"2024-03-11","commitResults":[{"hash":"41d110c5ce7b61c48531755c7e130a66c63f17d7","isMergeCommit":false,"messageTitle":"Update AboutUs.md for responsibilities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-03-19","commitResults":[{"hash":"be742f77ba3adc378595d2886324989aee9e8f43","isMergeCommit":false,"messageTitle":"Disable and skip failing tests until later","messageBody":"Temporarily disable and mark specific tests as skipped to ensure build\nstability. Related issues : #39\n- Disable failing tests in mutliple test files\n","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}}]}],"ChillinRage":[{"date":"2024-03-07","commitResults":[{"hash":"358b6d4eaef20d125df48773d8f1b3ed3bb5dc88","isMergeCommit":false,"messageTitle":"Add points to non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":1}}},{"hash":"cd82ed1e5bc7f37247ec750ecc5915bf9d4ceb40","isMergeCommit":false,"messageTitle":"Update DG non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-12","commitResults":[{"hash":"2c60fa6e9483c264655a5ce8fb931ce3837d994d","isMergeCommit":false,"messageTitle":"Rename main window title","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"fcd3fdbf3d22298b5435acd19f6ae00be57771ac","isMergeCommit":false,"messageTitle":"Rename jar and log files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-15","commitResults":[{"hash":"69b522e5b49ae6025b188fddf543af243042e23d","isMergeCommit":false,"messageTitle":"Update file names in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-16","commitResults":[{"hash":"86cad6ed6ace79bcc3b7a0215c83b2f45c867adc","isMergeCommit":false,"messageTitle":"Add Course to Person","messageBody":"Add Course class to person package.\n\nModify parser to check for mandatory course tag for add and edit\ncommands\n\nMain window now also display contacts\u0027 course code.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":156,"deletions":15},"test-code":{"insertions":92,"deletions":18}}}]},{"date":"2024-03-19","commitResults":[{"hash":"9ccd18fc084d0e1cd1b46dadd74a42c1c95f4e15","isMergeCommit":false,"messageTitle":"Remove trailing whitespaces","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9},"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"2a11fee3fde6a5d6943c63e87fcc7057724bd325","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into course-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2db9dc86f0eba69b484394ca5945ff7ff7f59844","isMergeCommit":false,"messageTitle":"Remove trailing whitespaces","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":4,"deletions":4}}},{"hash":"d7776ec71cbbd381b0c56105a2225541c18d8b55","isMergeCommit":false,"messageTitle":"Reduce length of code lines","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3}}},{"hash":"7a27586dab4a32a27ce0cb170ebe17e673a92dc3","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"49fd231109b55a2353918f38f38311d258e7579c","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"ca04562053a63672d4c0eb0634998f7e07da8b88","isMergeCommit":false,"messageTitle":"Fix tests to include Course and Role tags","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":4}}},{"hash":"3ac949a823450ea4d65bfc2814597596a8c70ae2","isMergeCommit":false,"messageTitle":"Fix string formatting","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"76dc5aae1f50f9c5460c69a7dba21201d48e6809","isMergeCommit":false,"messageTitle":"Add Course and Role tags to TypicalPersons","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":24,"deletions":10}}},{"hash":"a4464799b366e725242f33b3c453cfa722522746","isMergeCommit":false,"messageTitle":"Update test files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":4},"test-code":{"insertions":9,"deletions":0}}},{"hash":"204759907d0d0d3e93dc0160bc900fc7d8a56a9f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into course-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"36c1a90f7938d508a96845110c9d3f42468617f2","isMergeCommit":false,"messageTitle":"Add unit test for Course","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4},"test-code":{"insertions":56,"deletions":0}}},{"hash":"8ebf923ad85aa78d9a84a47dd038e7eb74177379","isMergeCommit":true,"messageTitle":"Merge branch \u0027course-tag\u0027 of https://github.com/ChillinRage/tp into course-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"09f659c446441b0df8337d05d70dc756172ac1df","isMergeCommit":false,"messageTitle":"Remove whitespaces","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"cc0c1bfccd8251b8d1ba8133b1d9d3388ddd11e1","isMergeCommit":false,"messageTitle":"Update UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"35237afdbc8dd978dc165c9a6d6cccaed8beefa9","isMergeCommit":false,"messageTitle":"remove vscode file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"308bb9f2899ce4718ab0a08ec405ad7fa56ef490","isMergeCommit":false,"messageTitle":"Update AddCommandParserTest for Course and Role","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":133,"deletions":22}}}]}]},"authorFileTypeContributionMap":{"LargeCrowd":{"docs":69,"functional-code":18,"test-code":0},"Hibeom0929":{"docs":20,"functional-code":138,"test-code":24},"E0735389":{"docs":25,"functional-code":55,"test-code":10,"other":2},"reetmitra":{"docs":25,"functional-code":0,"test-code":17},"ChillinRage":{"docs":9,"functional-code":187,"test-code":341,"other":1}},"authorContributionVariance":{"LargeCrowd":442.5867,"Hibeom0929":1442.6018,"E0735389":559.31635,"reetmitra":429.63785,"ChillinRage":4643.7446},"authorDisplayNameMap":{"LargeCrowd":"CS2103T-T11-2 TIMO..SONG","Hibeom0929":"CS2103T-T11-2 YANG..BEOM","E0735389":"CS2103T-T11-2 BUI .. DUC","reetmitra":"CS2103T-T11-2 MITR..REET","ChillinRage":"CS2103T-T11-2 CHON.. HOW"}} +{"authorDailyContributionsMap":{"LargeCrowd":[{"date":"2024-03-07","commitResults":[{"hash":"78f0e6517babc94f40af97c948c5612eb5b10115","isMergeCommit":false,"messageTitle":"Update User Stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":8}}},{"hash":"d3e076dfad43eeb7206632fb98de2f690de32781","isMergeCommit":false,"messageTitle":"Update Use Cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":42,"deletions":7}}},{"hash":"faef8d909490981c9a28374a026a6c77a2a37ee7","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":30,"deletions":12}}}]},{"date":"2024-03-17","commitResults":[{"hash":"7ad6ab0a33be72f844fa80ac94c6934d8ba69ecd","isMergeCommit":true,"messageTitle":"Merge pull request #29 from ChillinRage/jar-filename","messageBody":"Update file names","fileTypesAndContributionMap":{}},{"hash":"adcd48e022fbb8b162bea0a17840757dd1eb845e","isMergeCommit":false,"messageTitle":"Minor naming fix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"503a7398f382adcdc0d7d1df8e1fc8f05470815c","isMergeCommit":false,"messageTitle":"Update sample data with relevant data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":16}}}]},{"date":"2024-03-21","commitResults":[{"hash":"e0f2d82649012ba47caac5e403939ae1999f0c12","isMergeCommit":false,"messageTitle":"Minor sample data update","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"1d2ed25ec82ab2161e9cca8c69a00603278caa1e","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into update-relevant-sample-data","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9c9f48966e32fb852c91b4a9082053ff35868839","isMergeCommit":false,"messageTitle":"Remove trailing whitespace","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"9172944b04c481dc873e9dc89a5d9cb6f668bcd4","isMergeCommit":false,"messageTitle":"Add sample addresses for all sample persons","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}}]}],"Hibeom0929":[{"date":"2024-03-07","commitResults":[{"hash":"6789c64d3d22c6f2c260e7e0cf94d96ecfb36c22","isMergeCommit":false,"messageTitle":"Update DG target profile and value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}}]},{"date":"2024-03-14","commitResults":[{"hash":"976dc11c300587536c93dc422748ded87eb28121","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2324S2-CS2103T-T11-2/master","messageBody":"Pull v1.1","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"f473d5e979c5d4628a0cfc21c603f923249c1135","isMergeCommit":false,"messageTitle":"Add role.java and role section to person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":80,"deletions":3}}},{"hash":"29b8d820756f8abf08b626550999eccead9c1833","isMergeCommit":false,"messageTitle":"Edit command, util, and parser to have the role section for a person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":7}}},{"hash":"38f2e3f64371f29495be6df1d081b5d76ccdfaae","isMergeCommit":false,"messageTitle":"Edit the message to show the information about the role and add the role to the person card to show the role in the UI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}}]},{"date":"2024-03-16","commitResults":[{"hash":"84c3ed675a4dba83911a9a91adf5ac030a59d724","isMergeCommit":false,"messageTitle":"Adjust minor issues for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":4}}},{"hash":"22509a47298665f219da2263f59f460d46d98734","isMergeCommit":false,"messageTitle":"adjust a minor issue for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"7ae7de4c40215e558521b87c19b5a4c720dae906","isMergeCommit":false,"messageTitle":"Revert \"adjust a minor issue for checkstyle\"","messageBody":"This reverts commit 22509a47298665f219da2263f59f460d46d98734.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":3}}},{"hash":"4c714bcdb56d547a89a80da22863fb305ea66f80","isMergeCommit":false,"messageTitle":"Adjust a minor issue for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"defa138f04a52a1b7435a229f99c07b46380ba0c","isMergeCommit":false,"messageTitle":"Update Role.java to use enumeration for valid roles and edit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":14},"test-code":{"insertions":41,"deletions":10}}},{"hash":"6291850adc0b50615cc0f45f9f63910628dda779","isMergeCommit":false,"messageTitle":"Update javadoc in Role.java to solve checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"884d374951a0d5f44c3ea0fc1df52d52e50aff20","isMergeCommit":false,"messageTitle":"Edit JsonAdaptedPersonTest to solve minor checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":12,"deletions":6}}}]},{"date":"2024-03-21","commitResults":[{"hash":"ede76d0765c9dd76eb2e3587b088ad05b609c3a6","isMergeCommit":false,"messageTitle":"Update UG to fit v1.2","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":16}}},{"hash":"cb651620ed690a1a27cadfdaa8bc30ba6c6858a2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-ug","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"93b2e4b350e6a9476a7e5c510c0ceb227cc3c438","isMergeCommit":false,"messageTitle":"Update the address to fit the university context","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":12}}},{"hash":"717c2cfd3e9d23a09a8c017ff0b06377edf09be7","isMergeCommit":true,"messageTitle":"Merge pull request #63 from Hibeom0929/update-ug","messageBody":"Update UG to fit v1.2","fileTypesAndContributionMap":{}}]}],"E0735389":[{"date":"2024-03-07","commitResults":[{"hash":"ff49101c91daade683692b9afd09a79bcd5ab1f7","isMergeCommit":true,"messageTitle":"Merge pull request #12 from LargeCrowd/update-dg","messageBody":"Update DG (User Stories, Use Cases)","fileTypesAndContributionMap":{}},{"hash":"230176e548a5e8bcba1fbc79d778d04f072a33e7","isMergeCommit":true,"messageTitle":"Merge pull request #14 from ChillinRage/update-dg-nfr","messageBody":"Update DG non-functional requirements","fileTypesAndContributionMap":{}},{"hash":"80e8b7ca1b270cd0e535da19b106689053e71b7b","isMergeCommit":true,"messageTitle":"Merge pull request #15 from Hibeom0929/update-dg","messageBody":"Update DG target profile and value proposition","fileTypesAndContributionMap":{}},{"hash":"ef7dc353d21acfc218290219209305b4b28e6d47","isMergeCommit":false,"messageTitle":"Fix a typo in AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d0d498f2638791fb4e22831c55d06c9d1647bb42","isMergeCommit":false,"messageTitle":"Restore Jekyll front matter","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"2df6d1cdebab940bde7031313147f927fd9ffc6e","isMergeCommit":false,"messageTitle":"Add acknowledgement of AB3 to README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"eface06c98e99218e6cfe4c11bbe12c29ead1081","isMergeCommit":true,"messageTitle":"Merge pull request #17 from E0735389/update-aboutus-and-readme","messageBody":"Update AboutUs and README","fileTypesAndContributionMap":{}},{"hash":"3a2b3956d4b71dc2dac2cd6c4358eb8fb9c6686e","isMergeCommit":true,"messageTitle":"Merge pull request #18 from E0735389/update-jekyll-config","messageBody":"Update Jekyll configuration","fileTypesAndContributionMap":{}},{"hash":"76f3793381e46d17c14e9485181e61df737494a9","isMergeCommit":false,"messageTitle":"Update UserGuide partially to change program name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"47b67ce8c8cc2b0f9f060f585f22980b5348b3fb","isMergeCommit":false,"messageTitle":"Update website homepage","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"eb051928decbd958f1074499d80e95c85fcbf8da","isMergeCommit":true,"messageTitle":"Merge pull request #19 from E0735389/update-website","messageBody":"Update website","fileTypesAndContributionMap":{}},{"hash":"0b590f2d21f16c972e7258c39f33031127ac79c5","isMergeCommit":false,"messageTitle":"Update the CodeCov and Java CI badges","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-03-08","commitResults":[{"hash":"5cd62d69f993c2ae4afe13456a2f9ee9dd1fbe10","isMergeCommit":true,"messageTitle":"Merge pull request #20 from E0735389/update-badges","messageBody":"Update the CodeCov and Java CI badges","fileTypesAndContributionMap":{}}]},{"date":"2024-03-11","commitResults":[{"hash":"5465f9966f6959fdbb56573fc605af25db890cac","isMergeCommit":true,"messageTitle":"Merge pull request #26 from reetmitra/update-responsibilities","messageBody":"Update AboutUs.md for responsibilities","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"a049f01e3446e45a3ab2e76b1b3cd0aa549a7f68","isMergeCommit":true,"messageTitle":"Merge pull request #27 from ChillinRage/main-window","messageBody":"Rename main window title","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"18905363bd6d9cb14ff91b3604727209e8c22e67","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Hibeom0929/add-role-to-person","messageBody":"Add role to person","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"9d1f40820ed0eaa4474439074048d3b394f25e9c","isMergeCommit":false,"messageTitle":"Fix sample address book generation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4}}},{"hash":"77f405cdcdb094bf6fcffe3a235c92c417e8e37f","isMergeCommit":false,"messageTitle":"Modify help message to suit the project","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"030f2b24f67df2bc239f6f5fb42e2b78c02d609b","isMergeCommit":false,"messageTitle":"Make phone field optional for add command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":25}}},{"hash":"6ec5dd03b58ab0154ceafbb24bd6de081a8e45e6","isMergeCommit":false,"messageTitle":"Update the user guide to mention phone is optional","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":5}}},{"hash":"f44c88b29fc9c6af5e95e4d8ff678aef48508ed6","isMergeCommit":true,"messageTitle":"Merge pull request #36 from E0735389/fix-sample-addressbook","messageBody":"Fix sample address book generation","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"1d548c9a68faa883b689ba5dc9b536852f9e24c0","isMergeCommit":true,"messageTitle":"Merge pull request #38 from E0735389/modify-help-message","messageBody":"Modify help message to suit the project","fileTypesAndContributionMap":{}},{"hash":"98bea91fcbab57948add581d5db7a3164e10bb6a","isMergeCommit":true,"messageTitle":"Merge pull request #49 from reetmitra/fix-tests","messageBody":"Disable and skip failing tests until later","fileTypesAndContributionMap":{}},{"hash":"dba5c42b27795c9764d5db2730bb8250df77c6cb","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into make-phone-optional","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"739b93d03dcb17b76ffcb6a401efdfbf6708891d","isMergeCommit":false,"messageTitle":"Explain difference with t/ in user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"a2ec5c2412eb2e8dceb34af336ed2d05754c37a7","isMergeCommit":false,"messageTitle":"Fix code styling issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"4b9fe4901fb26e824240cc069278e14913059ed7","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":15}}},{"hash":"7d45023c0d48e74f388c6543ec056a5e3fa31531","isMergeCommit":true,"messageTitle":"Merge pull request #43 from E0735389/make-phone-optional","messageBody":"Make phone field optional for add command","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"b16a48170a88a6857ef4485da0abe11b06468e7c","isMergeCommit":false,"messageTitle":"Fix javadoc errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"106e907f5eb981d607e7c1f9aa454ecb442a8545","isMergeCommit":true,"messageTitle":"Merge pull request #52 from E0735389/fix-javadoc","messageBody":"Fix javadoc errors","fileTypesAndContributionMap":{}},{"hash":"5f11d7ff7cfbf1b6229e9cea64d4723150870e92","isMergeCommit":false,"messageTitle":"Add javadoc to gradle check command","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":0}}},{"hash":"4ec00d2702d881358af0e72a40ee84ef233f06cd","isMergeCommit":true,"messageTitle":"Merge pull request #53 from E0735389/add-javadoc-to-ci","messageBody":"Add javadoc to Java CI workflow","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"552b4e109bdf749d3e87b190615de333b2c07d39","isMergeCommit":true,"messageTitle":"Merge pull request #55 from ChillinRage/course-tag","messageBody":"Add Course tag to person","fileTypesAndContributionMap":{}},{"hash":"7a0d8a30bcd14bcae3ddb710adf5c76f538f6cad","isMergeCommit":true,"messageTitle":"Merge pull request #57 from LargeCrowd/update-relevant-sample-data","messageBody":"Update unrealistic sample data with more relevant data","fileTypesAndContributionMap":{}},{"hash":"4e87b9ea067f3c6c2d6a4a67c2dfb8a23effc08e","isMergeCommit":false,"messageTitle":"Update README to link to project website","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":49}}},{"hash":"3db8fc7f439ab4fe81e3d7d44c9174f1d43d8b14","isMergeCommit":true,"messageTitle":"Merge pull request #67 from E0735389/update-readme-link-to-ug","messageBody":"Update README to link to project website","tags":["v1.2"],"fileTypesAndContributionMap":{}}]}],"reetmitra":[{"date":"2024-03-07","commitResults":[{"hash":"779314b5f3873060e1bdf113d45ea6e77e46395a","isMergeCommit":false,"messageTitle":"Update \u0027About Us\u0027 page with new team member profiles and photos","messageBody":"- Add profiles for the new team members, including their roles and\n github links.\n- Update existing team member profiles with current project roles and\n recent achievements.\n- Replace outdated team photos with recent ones.\n","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":28}}},{"hash":"b9cc98a6c1949211a1d1b255817be078815fb514","isMergeCommit":false,"messageTitle":"Update README with UI screenshot and project-specific contents","messageBody":"- Add a new screenshot of the project\u0027s UI to give newcomers a visual\n introduction to our interface. This should help in providing a\n clearer idea of what to expect before diving into the details or\n installation process.\n\n- Update all sections of the README to align with our project\u0027s\n specific features, usage instructions, and contribution guidelines.\n This ensures that the documentation is not only up-to-date but also\n relevant to our project\u0027s current version.\n\n- Revise the installation and setup instructions to reflect any recent\n changes in the process, ensure that users can get up and running\n with minimal confusion.\n","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":10}}}]},{"date":"2024-03-11","commitResults":[{"hash":"41d110c5ce7b61c48531755c7e130a66c63f17d7","isMergeCommit":false,"messageTitle":"Update AboutUs.md for responsibilities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-03-19","commitResults":[{"hash":"be742f77ba3adc378595d2886324989aee9e8f43","isMergeCommit":false,"messageTitle":"Disable and skip failing tests until later","messageBody":"Temporarily disable and mark specific tests as skipped to ensure build\nstability. Related issues : #39\n- Disable failing tests in mutliple test files\n","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}}]},{"date":"2024-03-24","commitResults":[{"hash":"ad22d92e8c1e883d104e58493faca70a552d07b9","isMergeCommit":false,"messageTitle":"Update ModelClassDiagram to include \"Role\"","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":0}}},{"hash":"fa8fc89ffa4a99413d685de3be62b86b022c6349","isMergeCommit":false,"messageTitle":"Update BetterModelClassDiagram to inlcude \"Role\"","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]}],"ChillinRage":[{"date":"2024-03-07","commitResults":[{"hash":"358b6d4eaef20d125df48773d8f1b3ed3bb5dc88","isMergeCommit":false,"messageTitle":"Add points to non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":1}}},{"hash":"cd82ed1e5bc7f37247ec750ecc5915bf9d4ceb40","isMergeCommit":false,"messageTitle":"Update DG non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-12","commitResults":[{"hash":"2c60fa6e9483c264655a5ce8fb931ce3837d994d","isMergeCommit":false,"messageTitle":"Rename main window title","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"fcd3fdbf3d22298b5435acd19f6ae00be57771ac","isMergeCommit":false,"messageTitle":"Rename jar and log files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-15","commitResults":[{"hash":"69b522e5b49ae6025b188fddf543af243042e23d","isMergeCommit":false,"messageTitle":"Update file names in User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-16","commitResults":[{"hash":"86cad6ed6ace79bcc3b7a0215c83b2f45c867adc","isMergeCommit":false,"messageTitle":"Add Course to Person","messageBody":"Add Course class to person package.\n\nModify parser to check for mandatory course tag for add and edit\ncommands\n\nMain window now also display contacts\u0027 course code.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":156,"deletions":15},"test-code":{"insertions":92,"deletions":18}}}]},{"date":"2024-03-19","commitResults":[{"hash":"9ccd18fc084d0e1cd1b46dadd74a42c1c95f4e15","isMergeCommit":false,"messageTitle":"Remove trailing whitespaces","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":9},"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"2a11fee3fde6a5d6943c63e87fcc7057724bd325","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into course-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2db9dc86f0eba69b484394ca5945ff7ff7f59844","isMergeCommit":false,"messageTitle":"Remove trailing whitespaces","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":4,"deletions":4}}},{"hash":"d7776ec71cbbd381b0c56105a2225541c18d8b55","isMergeCommit":false,"messageTitle":"Reduce length of code lines","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":3}}},{"hash":"7a27586dab4a32a27ce0cb170ebe17e673a92dc3","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"49fd231109b55a2353918f38f38311d258e7579c","isMergeCommit":false,"messageTitle":"Improve code quality","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"ca04562053a63672d4c0eb0634998f7e07da8b88","isMergeCommit":false,"messageTitle":"Fix tests to include Course and Role tags","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":4}}},{"hash":"3ac949a823450ea4d65bfc2814597596a8c70ae2","isMergeCommit":false,"messageTitle":"Fix string formatting","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"76dc5aae1f50f9c5460c69a7dba21201d48e6809","isMergeCommit":false,"messageTitle":"Add Course and Role tags to TypicalPersons","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":24,"deletions":10}}},{"hash":"a4464799b366e725242f33b3c453cfa722522746","isMergeCommit":false,"messageTitle":"Update test files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":4},"test-code":{"insertions":9,"deletions":0}}},{"hash":"204759907d0d0d3e93dc0160bc900fc7d8a56a9f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into course-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"36c1a90f7938d508a96845110c9d3f42468617f2","isMergeCommit":false,"messageTitle":"Add unit test for Course","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4},"test-code":{"insertions":56,"deletions":0}}},{"hash":"8ebf923ad85aa78d9a84a47dd038e7eb74177379","isMergeCommit":true,"messageTitle":"Merge branch \u0027course-tag\u0027 of https://github.com/ChillinRage/tp into course-tag","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"09f659c446441b0df8337d05d70dc756172ac1df","isMergeCommit":false,"messageTitle":"Remove whitespaces","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"cc0c1bfccd8251b8d1ba8133b1d9d3388ddd11e1","isMergeCommit":false,"messageTitle":"Update UserGuide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"35237afdbc8dd978dc165c9a6d6cccaed8beefa9","isMergeCommit":false,"messageTitle":"remove vscode file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-21","commitResults":[{"hash":"308bb9f2899ce4718ab0a08ec405ad7fa56ef490","isMergeCommit":false,"messageTitle":"Update AddCommandParserTest for Course and Role","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":133,"deletions":22}}}]},{"date":"2024-03-24","commitResults":[{"hash":"bc0e8f20df0428b6614c503fbaddb0a05cdadd49","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-uml-diagram","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-25","commitResults":[{"hash":"41b6efaf47bdb8579ea434212b3b25cf7d5e1374","isMergeCommit":true,"messageTitle":"Merge pull request #72 from reetmitra/update-uml-diagram","messageBody":"Update ModelClassDiagram to include \"Role\"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"LargeCrowd":{"docs":69,"functional-code":18,"test-code":0},"Hibeom0929":{"docs":20,"functional-code":138,"test-code":24},"E0735389":{"docs":25,"functional-code":55,"test-code":10,"other":2},"reetmitra":{"docs":30,"functional-code":0,"test-code":17},"ChillinRage":{"docs":9,"functional-code":187,"test-code":341,"other":1}},"authorContributionVariance":{"LargeCrowd":390.7461,"Hibeom0929":1279.1719,"E0735389":497.4375,"reetmitra":377.99902,"ChillinRage":4129.3125},"authorDisplayNameMap":{"LargeCrowd":"CS2103T-T11-2 TIMO..SONG","Hibeom0929":"CS2103T-T11-2 YANG..BEOM","E0735389":"CS2103T-T11-2 BUI .. DUC","reetmitra":"CS2103T-T11-2 MITR..REET","ChillinRage":"CS2103T-T11-2 CHON.. HOW"}} diff --git a/AY2324S2-CS2103T-T15-3_tp_master/authorship.json b/AY2324S2-CS2103T-T15-3_tp_master/authorship.json index 61eab09e..3a83c844 100644 --- a/AY2324S2-CS2103T-T15-3_tp_master/authorship.json +++ b/AY2324S2-CS2103T-T15-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"triciiaaa"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T15-3/tp/actions)","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"triciiaaa"},"content":"# BandBook","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"triciiaaa"},"content":"BandBook is your all-in-one software designed to streamline the management of band members\u0027 contact details and ","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"triciiaaa"},"content":"information. It offers a user-friendly platform to **create, edit and delete** members\u0027 contact information, ","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"triciiaaa"},"content":"along with optional fields such as tag and birthday information. ","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"triciiaaa"},"content":"Moreover, you can **indicate and view** the attendance history of your members, ensuring that they stay on track ","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"triciiaaa"},"content":"with the band\u0027s activities. Optimised for use via a Command Line Interface (CLI), BandBook can assist you in ","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"triciiaaa"},"content":"managing your members\u0027 details faster than traditional GUI apps.","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"triciiaaa"},"content":"\u003cp align\u003d\"center\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"triciiaaa"},"content":" \u003cimg src\u003d\"docs/images/Ui.png\" alt\u003d\"Description of the image\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"triciiaaa"},"content":"\u003c/p\u003e ","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"triciiaaa"},"content":"## Features","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"triciiaaa"},"content":"### Creating Contact Information","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"triciiaaa"},"content":"Creates and adds a band member\u0027s contact into the list of contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"triciiaaa"},"content":"Command Syntax: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG] [b/BIRTHDAY] ...`","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"triciiaaa"},"content":"Examples:","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"triciiaaa"},"content":"- `add n/John Doe p/98765432 e/johnd@example.com a/John Street, block 123, #01-01`","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"triciiaaa"},"content":"- `add n/Sally Smith p/92716291 e/sallys@example.com a/Sally Street, block 221, #12-25 b/2000-01-01`","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"triciiaaa"},"content":"### Updating Contact Information","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"triciiaaa"},"content":"Updates a band member\u0027s contact with newly provided information.","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"triciiaaa"},"content":"Command Syntax: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG] [b/BIRTHDAY] ...`","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"triciiaaa"},"content":"Examples:","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"triciiaaa"},"content":"- `edit 1 p/91234567 e/johndoe@example.com `","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"triciiaaa"},"content":"- `edit 2 p/92712213 b/2001-02-03`","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"triciiaaa"},"content":"### Deleting Contact Information","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"triciiaaa"},"content":"Deletes a band member\u0027s contact from the list of contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"triciiaaa"},"content":"Command Syntax: `delete INDEX`","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"triciiaaa"},"content":"Examples:","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"triciiaaa"},"content":"- `delete 2` deletes the user with id \u003d 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"triciiaaa"},"content":"### Viewing Upcoming Birthdays","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"triciiaaa"},"content":"Displays X number of upcoming birthdays.","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"triciiaaa"},"content":"Command Syntax: `bd NUM`","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"triciiaaa"},"content":"Examples:","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"triciiaaa"},"content":"- `bd 3` displays the 3 upcoming birthdays from today\u0027s date.","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"triciiaaa"},"content":"### Updating Attendance History","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"triciiaaa"},"content":"Adds the date of session attended by a band member to his/her attendance list.","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"triciiaaa"},"content":"Command Syntax: `att mark INDEX d/DATE`","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"triciiaaa"},"content":"Examples:","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"triciiaaa"},"content":"- `att mark 2 d/2024-10-19`","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"triciiaaa"},"content":"### Viewing Attendance History","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"triciiaaa"},"content":"Displays the attendance history of a specific band member.","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"triciiaaa"},"content":"Command Syntax: `att view INDEX`","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"triciiaaa"},"content":"Examples:","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"triciiaaa"},"content":"- `att view 2`","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"triciiaaa"},"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":{"triciiaaa":69}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":" title: \"About Us\"","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"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":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"triciiaaa"},"content":"## Project Team","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"triciiaaa"},"content":"### Brenna Tan","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"triciiaaa"},"content":"\u003cimg src\u003d\"images/brennalaurentan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"triciiaaa"},"content":"[[github](http://github.com/brennalaurentan)]","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"triciiaaa"},"content":"* Responsibilities: Backend for Birthday information","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"triciiaaa"},"content":"### Shaun Lai","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"triciiaaa"},"content":"\u003cimg src\u003d\"images/casaarlai.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"triciiaaa"},"content":"[[github](http://github.com/casaarlai)]","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"triciiaaa"},"content":"* Responsibilities: Backend for Attendance feature","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"triciiaaa"},"content":"### Tricia Ang","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"triciiaaa"},"content":"\u003cimg src\u003d\"images/triciiaaa.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"triciiaaa"},"content":"[[github](http://github.com/triciiaaa)]","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"triciiaaa"},"content":"* Responsibilities: UI Design","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"triciiaaa":13,"-":25,"brennalaurentan":1}},{"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":"brennalaurentan"},"content":"### Edit feature","lastModifiedDate":"2024-03-22"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"brennalaurentan"},"content":"#### Implementation","lastModifiedDate":"2024-03-22"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"brennalaurentan"},"content":"The implementation of the edit feature which allows users to change various fields of an existing contact can be seen","lastModifiedDate":"2024-03-22"},{"lineNumber":166,"author":{"gitId":"brennalaurentan"},"content":"in the UML sequence diagram below.","lastModifiedDate":"2024-03-22"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"brennalaurentan"},"content":"\u003cpuml src\u003d\"diagrams/EditUser.puml\"/\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"brennalaurentan"},"content":"Note: The activation bars for :Ui and logicManager:LogicManager are meant to be deactivated after and within the","lastModifiedDate":"2024-03-22"},{"lineNumber":170,"author":{"gitId":"brennalaurentan"},"content":"reference frame respectively. Due to a PlantUML bug, this is unable to be reflected accurately in the diagram.","lastModifiedDate":"2024-03-22"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":179,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":180,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":181,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"**Value proposition**: manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"|----------|--------------------------------------------|------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"-"},"content":"| `* * *` | user | add a new person | |","lastModifiedDate":"2024-03-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2024-03-13"},{"lineNumber":209,"author":{"gitId":"-"},"content":"| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list |","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2024-03-13"},{"lineNumber":211,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2024-03-13"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2024-03-13"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-13"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2024-03-13"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2024-03-13"},{"lineNumber":224,"author":{"gitId":"-"},"content":"2. AddressBook shows a list of persons","lastModifiedDate":"2024-03-13"},{"lineNumber":225,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2024-03-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":"4. AddressBook deletes the person","lastModifiedDate":"2024-03-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-13"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2024-03-13"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"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":247,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-13"},{"lineNumber":248,"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":"2024-03-13"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":250,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2024-03-13"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":255,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"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: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":265,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":266,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"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":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"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":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"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":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"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":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"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":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"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":300,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":303,"brennalaurentan":7}},{"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":"brennalaurentan"},"content":"# BandBook User Guide","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":"BandBook is your all-in-one software designed to streamline the management of band members\u0027 contact details and information. It offers a user-friendly platform to **create, edit and delete members\u0027 contact information**, along with optional fields such as **tag and birthday information**.","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":"Moreover, you can **indicate and view the attendance history of your members**, ensuring that they stay on track with the band\u0027s activities. Optimised for use via a Command Line Interface (CLI), BandBook can assist you in managing your members\u0027 details faster than traditional GUI apps.","lastModifiedDate":"2024-03-07"},{"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":"triciiaaa"},"content":"1. Download the latest `bandbook.jar` from [here](https://github.com/AY2324S2-CS2103T-T15-3/tp/releases).","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"triciiaaa"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your Band Book.","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"triciiaaa"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar bandbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-15"},{"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":"triciiaaa"},"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 Band Book.","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"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":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"Format: `help`","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":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"triciiaaa"},"content":"Adds a person to Band Book.","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12"},{"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":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"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":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":"triciiaaa"},"content":"Shows a list of all persons in Band Book.","lastModifiedDate":"2024-03-15"},{"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":"triciiaaa"},"content":"Edits an existing person in Band Book.","lastModifiedDate":"2024-03-15"},{"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":"-"},"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":111,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"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":116,"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":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"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 the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"triciiaaa"},"content":"Deletes the specified person from Band Book.","lastModifiedDate":"2024-03-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"triciiaaa"},"content":"* `list` followed by `delete 2` deletes the 2nd person in Band Book.","lastModifiedDate":"2024-03-15"},{"lineNumber":148,"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":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"triciiaaa"},"content":"Clears all entries from Band Book.","lastModifiedDate":"2024-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"triciiaaa"},"content":"Band Book 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-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":168,"author":{"gitId":"triciiaaa"},"content":"Band Book data are saved automatically as a JSON file `[JAR file location]/data/bandbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":173,"author":{"gitId":"triciiaaa"},"content":"If your changes to the data file makes its format invalid, Band Book 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-15"},{"lineNumber":174,"author":{"gitId":"triciiaaa"},"content":"Furthermore, certain edits can cause the Band Book 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-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"triciiaaa"},"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 Band Book home folder.","lastModifiedDate":"2024-03-15"},{"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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":192,"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":193,"author":{"gitId":"-"},"content":"","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":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":200,"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":201,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"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":204,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"triciiaaa":15,"-":187,"brennalaurentan":4}},{"path":"docs/diagrams/EditUser.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"!include style.puml","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"triciiaaa"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"Participant \":Ui\" as ui UI_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"Participant \"logicManager:LogicManager\" as logicManager LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"Participant \"addressBookParser:AddressBookParser\" as addressBookParser MODEL_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":"Participant \":EditCommandParser\" as editCommandParser STORAGE_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":"Participant \":EditCommand\" as editCommand UI_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":"Participant \":CommandResult\" as commandResult LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"triciiaaa"},"content":"user -[USER_COLOR]\u003e ui : \"edit 1 b/2000-01-01\"","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":"activate ui UI_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"triciiaaa"},"content":"ref over logicManager, ui : process user input","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":"activate logicManager LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":"logicManager -[USER_COLOR]\u003e addressBookParser : parseCommand(\"edit 1 b/2000-01-01\")","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":"activate addressBookParser MODEL_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":"addressBookParser -[USER_COLOR]\u003e editCommandParser ** : EditCommandParser()","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":"activate editCommandParser STORAGE_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":"editCommandParser -[USER_COLOR]\u003e editCommandParser : parse(...)","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":"activate editCommandParser STORAGE_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":"editCommandParser -[USER_COLOR]\u003e editCommand ** : EditCommand(...)","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":"activate editCommand UI_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":"editCommand -[USER_COLOR]-\u003e editCommandParser : :EditCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":"deactivate editCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":"editCommandParser -[USER_COLOR]-\u003e editCommandParser : :EditCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":"deactivate editCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":"editCommandParser -[USER_COLOR]-\u003e addressBookParser : :EditCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":"deactivate editCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":"addressBookParser -[USER_COLOR]-\u003e logicManager : :EditCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":"deactivate addressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":"logicManager -[USER_COLOR]\u003e editCommand : execute(...)","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":"activate editCommand UI_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":"editCommand -[USER_COLOR]\u003e commandResult ** : CommandResult()","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":"activate commandResult LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":"commandResult -[USER_COLOR]-\u003e editCommand : :CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":"deactivate commandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":"editCommand -[USER_COLOR]-\u003e logicManager: :CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"brennalaurentan"},"content":"deactivate editCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"brennalaurentan"},"content":"ref over logicManager, ui : process command result","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"brennalaurentan"},"content":"deactivate logicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"triciiaaa"},"content":"ui -[USER_COLOR]-\u003e user : \"Edited Person: ...\"","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"brennalaurentan"},"content":"deactivate ui","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"brennalaurentan"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"triciiaaa":4,"brennalaurentan":57}},{"path":"src/main/java/seedu/address/Main.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2019-02-08"},{"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":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * The main entry point to the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * This is a workaround for the following error when MainApp is made the","lastModifiedDate":"2019-02-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * entry point of the application:","lastModifiedDate":"2019-02-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Error: JavaFX runtime components are missing, and are required to run this application","lastModifiedDate":"2019-02-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * The reason is that MainApp extends Application. In that case, the","lastModifiedDate":"2019-02-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * LauncherHelper will check for the javafx.graphics module to be present","lastModifiedDate":"2019-02-08"},{"lineNumber":19,"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":20,"author":{"gitId":"-"},"content":" * find the javafx.graphics module, and so the launch is aborted.","lastModifiedDate":"2019-02-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * By having a separate main class (Main) that doesn\u0027t extend Application","lastModifiedDate":"2019-02-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * to be the entry point of the application, we avoid this issue.","lastModifiedDate":"2019-02-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class Main {","lastModifiedDate":"2019-02-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static Logger logger \u003d LogsCenter.getLogger(Main.class);","lastModifiedDate":"2023-07-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-02-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // As per https://github.com/openjdk/jfx/blob/master/doc-files/release-notes-16.md","lastModifiedDate":"2023-07-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // JavaFX 16 (or later) runtime logs a warning at startup if JavaFX classes are loaded from","lastModifiedDate":"2023-07-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // the classpath instead of a module.","lastModifiedDate":"2023-07-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Our application does not use Java modules yet. Even if it did, modules are ignored when","lastModifiedDate":"2023-07-27"},{"lineNumber":34,"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":35,"author":{"gitId":"-"},"content":" // The warning however, can be safely ignored. Thus, the following log informs","lastModifiedDate":"2023-07-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // the user (if looking at the log output) that the said warning appearing in the log","lastModifiedDate":"2023-07-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // can be ignored.","lastModifiedDate":"2023-07-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" logger.warning(\"The warning about Unsupported JavaFX configuration below can be ignored.\");","lastModifiedDate":"2023-07-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Application.launch(MainApp.class, args);","lastModifiedDate":"2019-02-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-08"}],"authorContributionMap":{"-":41,"brennalaurentan":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":"-"},"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":"brennalaurentan"},"content":" .append(\"; Birthday: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" .append(person.getBirthday())","lastModifiedDate":"2024-03-20"},{"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":{"-":51,"brennalaurentan":2}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY_DATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" + \"[\" + PREFIX_BIRTHDAY_DATE + \"BIRTHDAY] \"","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" + PREFIX_BIRTHDAY_DATE + \"2000-01-02 \"","lastModifiedDate":"2024-03-20"},{"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":"-"},"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":{"-":84,"brennalaurentan":3}},{"path":"src/main/java/seedu/address/logic/commands/AttendanceCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"casaarlai"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"casaarlai"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"casaarlai"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"casaarlai"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"casaarlai"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"casaarlai"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"casaarlai"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"casaarlai"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"casaarlai"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"casaarlai"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"casaarlai"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"casaarlai"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"casaarlai"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"casaarlai"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"casaarlai"},"content":" * Marks a person\u0027s attendance in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"casaarlai"},"content":"public class AttendanceCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"casaarlai"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Indexes: %1$d, Date: %2$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"casaarlai"},"content":" public static final String COMMAND_WORD \u003d \"att\";","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"casaarlai"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"casaarlai"},"content":" + \": Adds the attendance date to the persons identified \"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"casaarlai"},"content":" + \"by the index numbers used in the last person listing. \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"casaarlai"},"content":" + \"Parameters: INDEXES (must be positive integers separated by a whitespace) \"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"casaarlai"},"content":" + \"d/ [DATE]\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"casaarlai"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2 \"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"casaarlai"},"content":" + \"d/ 2024-02-02\";","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"casaarlai"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Persons: %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"casaarlai"},"content":" public static final String MESSAGE_DUPLICATE_ATTENDANCE \u003d \"This attendance has already been marked for %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"casaarlai"},"content":" private final Set\u003cIndex\u003e indexes;","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"casaarlai"},"content":" private final LocalDate date;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"casaarlai"},"content":" * Creates an AttendanceCommand to add the specified {@code date} to the persons identified by {@code indexes}","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"casaarlai"},"content":" public AttendanceCommand(Set\u003cIndex\u003e indexes, LocalDate date) {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"casaarlai"},"content":" requireAllNonNull(indexes, date);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"casaarlai"},"content":" this.indexes \u003d indexes;","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"casaarlai"},"content":" this.date \u003d date;","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"casaarlai"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"casaarlai"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"casaarlai"},"content":" Set\u003cName\u003e editedNames \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"casaarlai"},"content":" for (Index index : this.indexes) {","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"casaarlai"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"casaarlai"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"casaarlai"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"casaarlai"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"casaarlai"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"casaarlai"},"content":" Attendance attendance \u003d new Attendance(date);","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"casaarlai"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, attendance);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"casaarlai"},"content":" editedNames.add(editedPerson.getName());","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"casaarlai"},"content":" if (personToEdit.getAttendances().contains(attendance)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"casaarlai"},"content":" throw new CommandException(String.format(MESSAGE_DUPLICATE_ATTENDANCE, personToEdit.getName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"casaarlai"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"casaarlai"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"casaarlai"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedNames));","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"casaarlai"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"casaarlai"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"casaarlai"},"content":" private static Person createEditedPerson(Person personToEdit, Attendance attendance) {","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"casaarlai"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"casaarlai"},"content":" Name updatedName \u003d personToEdit.getName();","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"casaarlai"},"content":" Phone updatedPhone \u003d personToEdit.getPhone();","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"casaarlai"},"content":" Email updatedEmail \u003d personToEdit.getEmail();","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"casaarlai"},"content":" Address updatedAddress \u003d personToEdit.getAddress();","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"brennalaurentan"},"content":" Birthday updatedBirthday \u003d personToEdit.getBirthday();","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"casaarlai"},"content":" Set\u003cTag\u003e updatedTags \u003d personToEdit.getTags();","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"casaarlai"},"content":" Set\u003cAttendance\u003e updatedAttendances \u003d new HashSet\u003c\u003e(personToEdit.getAttendances());","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"casaarlai"},"content":" updatedAttendances.add(attendance);","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"brennalaurentan"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"brennalaurentan"},"content":" updatedBirthday, updatedTags, updatedAttendances);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"casaarlai"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"casaarlai"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"casaarlai"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"casaarlai"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"casaarlai"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"casaarlai"},"content":" if (!(other instanceof AttendanceCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"casaarlai"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"casaarlai"},"content":" AttendanceCommand e \u003d (AttendanceCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"casaarlai"},"content":" return indexes.equals(e.indexes)","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"casaarlai"},"content":" \u0026\u0026 date.equals(e.date);","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"casaarlai"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"casaarlai":110,"brennalaurentan":9}},{"path":"src/main/java/seedu/address/logic/commands/BirthdayCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" * Adds the birthday to a new contact in the address book, or","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" * Changes the birthday of an existing person in the address book","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":"public class BirthdayCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":" public static final String COMMAND_WORD \u003d \"birthday\";","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Birthday: %2$s\";","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" + \"Existing birthday date will be overwritten by the input.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":" + \"b/[BIRTHDAY in YYYY-MM-DD]\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":" + \"b/2000-02-02\";","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" public static final String MESSAGE_ADD_BIRTHDAY_SUCCESS \u003d \"Added birthday to Person: %1$s\";","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" public static final String MESSAGE_DELETE_BIRTHDAY_SUCCESS \u003d \"Removed birthday from Person: %1$s\";","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" private final Index index;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" private final Birthday birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" * @param birthday of the person to be updated to","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":" public BirthdayCommand(Index index, Birthday birthday) {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":" requireAllNonNull(index, birthday);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"brennalaurentan"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":" this.birthday \u003d birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"brennalaurentan"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"brennalaurentan"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"brennalaurentan"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"brennalaurentan"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"brennalaurentan"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"brennalaurentan"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"brennalaurentan"},"content":" personToEdit.getAddress(), personToEdit.getBirthday(), personToEdit.getTags(),","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"brennalaurentan"},"content":" personToEdit.getAttendances());","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"brennalaurentan"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"brennalaurentan"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"brennalaurentan"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"brennalaurentan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"brennalaurentan"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"brennalaurentan"},"content":" * the remark is added to or removed from","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"brennalaurentan"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"brennalaurentan"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"brennalaurentan"},"content":" String message \u003d !birthday.value.isEmpty() ? MESSAGE_ADD_BIRTHDAY_SUCCESS : MESSAGE_DELETE_BIRTHDAY_SUCCESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"brennalaurentan"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"brennalaurentan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"brennalaurentan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"brennalaurentan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"brennalaurentan"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"brennalaurentan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"brennalaurentan"},"content":" if (!(other instanceof BirthdayCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"brennalaurentan"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"brennalaurentan"},"content":" BirthdayCommand e \u003d (BirthdayCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"brennalaurentan"},"content":" return index.equals(e.index)","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"brennalaurentan"},"content":" \u0026\u0026 birthday.equals(e.birthday);","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"brennalaurentan":95}},{"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":"brennalaurentan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY_DATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-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":"-"},"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":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"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":"brennalaurentan"},"content":" + \"[\" + PREFIX_BIRTHDAY_DATE + \"BIRTHDAY] \"","lastModifiedDate":"2024-03-20"},{"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":"2017-06-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":106,"author":{"gitId":"brennalaurentan"},"content":" //Birthday updatedBirthday \u003d personToEdit.getBirthday(); // edit command does not allow editing birthday ?","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"brennalaurentan"},"content":" Birthday updatedBirthday \u003d editPersonDescriptor.getBirthday().orElse(personToEdit.getBirthday());","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":109,"author":{"gitId":"casaarlai"},"content":" Set\u003cAttendance\u003e updatedAttendances \u003d editPersonDescriptor.getAttendances().orElse(","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"casaarlai"},"content":" personToEdit.getAttendances());","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"brennalaurentan"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"brennalaurentan"},"content":" updatedBirthday, updatedTags, updatedAttendances);","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" private Birthday birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"casaarlai"},"content":" private Set\u003cAttendance\u003e attendances;","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" setBirthday(toCopy.birthday);","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":166,"author":{"gitId":"casaarlai"},"content":" setAttendances(toCopy.attendances);","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, birthday, tags);","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" public void setBirthday(Birthday birthday) {","lastModifiedDate":"2024-03-20"},{"lineNumber":208,"author":{"gitId":"brennalaurentan"},"content":" this.birthday \u003d birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":209,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"brennalaurentan"},"content":" public Optional\u003cBirthday\u003e getBirthday() {","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"brennalaurentan"},"content":" return Optional.ofNullable(birthday);","lastModifiedDate":"2024-03-20"},{"lineNumber":212,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":215,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":216,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":217,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":218,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":219,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":222,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":223,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":224,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":226,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":227,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":228,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":231,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":232,"author":{"gitId":"casaarlai"},"content":" * Sets {@code attendances} to this object\u0027s {@code attendances}.","lastModifiedDate":"2024-03-16"},{"lineNumber":233,"author":{"gitId":"casaarlai"},"content":" * A defensive copy of {@code attendances} is used internally.","lastModifiedDate":"2024-03-16"},{"lineNumber":234,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":235,"author":{"gitId":"casaarlai"},"content":" public void setAttendances(Set\u003cAttendance\u003e attendances) {","lastModifiedDate":"2024-03-16"},{"lineNumber":236,"author":{"gitId":"casaarlai"},"content":" this.attendances \u003d (attendances !\u003d null) ? new HashSet\u003c\u003e(attendances) : null;","lastModifiedDate":"2024-03-16"},{"lineNumber":237,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":238,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":239,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":240,"author":{"gitId":"casaarlai"},"content":" * Returns an unmodifiable attendance set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-16"},{"lineNumber":241,"author":{"gitId":"casaarlai"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-16"},{"lineNumber":242,"author":{"gitId":"casaarlai"},"content":" * Returns {@code Optional#empty()} if {@code attendances} is null.","lastModifiedDate":"2024-03-16"},{"lineNumber":243,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":244,"author":{"gitId":"casaarlai"},"content":" public Optional\u003cSet\u003cAttendance\u003e\u003e getAttendances() {","lastModifiedDate":"2024-03-16"},{"lineNumber":245,"author":{"gitId":"casaarlai"},"content":" return (attendances !\u003d null) ? Optional.of(Collections.unmodifiableSet(attendances)) : Optional.empty();","lastModifiedDate":"2024-03-16"},{"lineNumber":246,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":247,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":248,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":250,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":251,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":256,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":259,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":260,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":261,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":262,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":263,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":264,"author":{"gitId":"brennalaurentan"},"content":" \u0026\u0026 Objects.equals(birthday, otherEditPersonDescriptor.birthday)","lastModifiedDate":"2024-03-20"},{"lineNumber":265,"author":{"gitId":"casaarlai"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-03-16"},{"lineNumber":266,"author":{"gitId":"casaarlai"},"content":" \u0026\u0026 Objects.equals(attendances, otherEditPersonDescriptor.attendances);","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":276,"author":{"gitId":"brennalaurentan"},"content":" .add(\"birthday\", birthday)","lastModifiedDate":"2024-03-20"},{"lineNumber":277,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":278,"author":{"gitId":"casaarlai"},"content":" .add(\"attendances\", attendances)","lastModifiedDate":"2024-03-16"},{"lineNumber":279,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"casaarlai":25,"-":239,"brennalaurentan":18}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"casaarlai"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ATTENDANCE;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY_DATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"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":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"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":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" PREFIX_ADDRESS, PREFIX_BIRTHDAY_DATE, PREFIX_TAG);","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" PREFIX_ADDRESS, PREFIX_BIRTHDAY_DATE);","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":" Birthday birthday \u003d ParserUtil.parseBirthday(argMultimap.getOptionalBirthday(PREFIX_BIRTHDAY_DATE).get());","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"casaarlai"},"content":" Set\u003cAttendance\u003e attendances \u003d ParserUtil.parseAttendances(argMultimap.getAllValues(PREFIX_ATTENDANCE));","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"brennalaurentan"},"content":" Person person \u003d new Person(name, phone, email, address, birthday, tagList, attendances);","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-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":{"casaarlai":3,"-":58,"brennalaurentan":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":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.logic.commands.AttendanceCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.logic.commands.BirthdayCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","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":"-"},"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":"casaarlai"},"content":" case AttendanceCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"casaarlai"},"content":" return new AttendanceCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"brennalaurentan"},"content":" case BirthdayCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"brennalaurentan"},"content":" return new BirthdayCommandParser().parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"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":{"casaarlai":3,"-":86,"brennalaurentan":5}},{"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":"brennalaurentan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" public Optional\u003cString\u003e getOptionalBirthday(Prefix prefix) {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"brennalaurentan"},"content":" return values.isEmpty() ? Optional.of(\"9999-99-99\") : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","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":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"-":78,"brennalaurentan":8}},{"path":"src/main/java/seedu/address/logic/parser/AttendanceCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"casaarlai"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"casaarlai"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"casaarlai"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"casaarlai"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ATTENDANCE_DATE;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"casaarlai"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"casaarlai"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"casaarlai"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"casaarlai"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"casaarlai"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"casaarlai"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"casaarlai"},"content":"import seedu.address.logic.commands.AttendanceCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"casaarlai"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"casaarlai"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"casaarlai"},"content":" * Parses input arguments and creates a new AttendanceCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"casaarlai"},"content":"public class AttendanceCommandParser implements Parser\u003cAttendanceCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"casaarlai"},"content":" * Parses the given {@code String} of arguments in the context of the AttendanceCommand","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"casaarlai"},"content":" * and returns a AttendanceCommand object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"casaarlai"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"casaarlai"},"content":" public AttendanceCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"casaarlai"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"casaarlai"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"casaarlai"},"content":" PREFIX_ATTENDANCE_DATE);","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"casaarlai"},"content":" Set\u003cIndex\u003e indexes;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"casaarlai"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"casaarlai"},"content":" indexes \u003d ParserUtil.parseIndexes(List.of(argMultimap.getPreamble().split(\" \")));","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"casaarlai"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"casaarlai"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"casaarlai"},"content":" AttendanceCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"casaarlai"},"content":" LocalDate date \u003d LocalDate.parse(argMultimap.getValue(PREFIX_ATTENDANCE_DATE).orElse(\"\"),","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"casaarlai"},"content":" DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"casaarlai"},"content":" return new AttendanceCommand(indexes, date);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"casaarlai"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"casaarlai":47}},{"path":"src/main/java/seedu/address/logic/parser/BirthdayCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY_DATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.logic.commands.BirthdayCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" * Parses input arguments and creates a new BirthdayCommand object","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":"public class BirthdayCommandParser implements Parser\u003cBirthdayCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" * Parses the given {@code String} of arguments in the context of the {@code BirthdayCommand}","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":" * and returns a {@code BirthdayCommand} object for execution.","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" public BirthdayCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":" PREFIX_BIRTHDAY_DATE);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" Index index;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" BirthdayCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" String birthday \u003d argMultimap.getValue(PREFIX_BIRTHDAY_DATE).orElse(\"\");","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":" return new BirthdayCommand(index, new Birthday(birthday));","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"brennalaurentan":39}},{"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":"casaarlai"},"content":" public static final Prefix PREFIX_ATTENDANCE \u003d new Prefix(\"att/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"casaarlai"},"content":" public static final Prefix PREFIX_ATTENDANCE_DATE \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" public static final Prefix PREFIX_BIRTHDAY_DATE \u003d new Prefix(\"b/\");","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"casaarlai":2,"-":15,"brennalaurentan":1}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ATTENDANCE;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY_DATE;","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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-20"},{"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":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"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":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":38,"author":{"gitId":"casaarlai"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" PREFIX_BIRTHDAY_DATE, PREFIX_TAG, PREFIX_ATTENDANCE);","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":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"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":"brennalaurentan"},"content":" if (argMultimap.getValue(PREFIX_BIRTHDAY_DATE).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"brennalaurentan"},"content":" editPersonDescriptor.setBirthday(ParserUtil.parseBirthday(argMultimap","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"brennalaurentan"},"content":" .getValue(PREFIX_BIRTHDAY_DATE).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":70,"author":{"gitId":"casaarlai"},"content":" parseAttendancesForEdit(argMultimap.getAllValues(PREFIX_ATTENDANCE))","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"casaarlai"},"content":" .ifPresent(editPersonDescriptor::setAttendances);","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"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":82,"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":83,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"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":92,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"casaarlai"},"content":" * Parses {@code Collection\u003cString\u003e attendances} into a {@code Set\u003cAttendance\u003e} if {@code attendances} is non-empty.","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"casaarlai"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"casaarlai"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"casaarlai"},"content":" private Optional\u003cSet\u003cAttendance\u003e\u003e parseAttendancesForEdit(Collection\u003cString\u003e attendances) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"casaarlai"},"content":" assert attendances !\u003d null;","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"casaarlai"},"content":" if (attendances.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"casaarlai"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"casaarlai"},"content":" Collection\u003cString\u003e attendanceSet \u003d attendances.size() \u003d\u003d 1 \u0026\u0026 attendances.contains(\"\") ? Collections.emptySet()","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"casaarlai"},"content":" : attendances;","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"casaarlai"},"content":" return Optional.of(ParserUtil.parseAttendances(attendanceSet));","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"casaarlai":19,"-":84,"brennalaurentan":7}},{"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":"casaarlai"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":13,"author":{"gitId":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","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.Phone;","lastModifiedDate":"2024-03-20"},{"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":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"casaarlai"},"content":" * Parses {@code indexes} into a {@code Set\u003cIndex\u003e} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"casaarlai"},"content":" * trimmed.","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"casaarlai"},"content":" * @throws ParseException if the specified indexes are invalid (not non-zero unsigned integer).","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"casaarlai"},"content":" public static Set\u003cIndex\u003e parseIndexes(Collection\u003cString\u003e indexes) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"casaarlai"},"content":" requireNonNull(indexes);","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"casaarlai"},"content":" final Set\u003cIndex\u003e indexSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"casaarlai"},"content":" for (String index : indexes) {","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"casaarlai"},"content":" indexSet.add(parseIndex(index));","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"casaarlai"},"content":" return indexSet;","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","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 phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","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 address} into an {@code Address}.","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 address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","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 email} into an {@code Email}.","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 email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"brennalaurentan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"brennalaurentan"},"content":" * Parses a {@code String birthday} into an {@code Birthday}.","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"brennalaurentan"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"brennalaurentan"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"brennalaurentan"},"content":" * @throws ParseException if the given {@code birthday} is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"brennalaurentan"},"content":" public static Birthday parseBirthday(String birthday) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"brennalaurentan"},"content":" requireNonNull(birthday);","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"brennalaurentan"},"content":" String trimmedBirthday \u003d birthday.trim();","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"brennalaurentan"},"content":" if (!Birthday.isValidBirthday(trimmedBirthday)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"brennalaurentan"},"content":" throw new ParseException(Birthday.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"brennalaurentan"},"content":" return new Birthday(trimmedBirthday);","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"casaarlai"},"content":" * Parses a {@code String attendance} into an {@code Attendance}.","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"casaarlai"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-16"},{"lineNumber":160,"author":{"gitId":"casaarlai"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":161,"author":{"gitId":"casaarlai"},"content":" * @throws ParseException if the given {@code attendance} is invalid.","lastModifiedDate":"2024-03-16"},{"lineNumber":162,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":163,"author":{"gitId":"casaarlai"},"content":" public static Attendance parseAttendance(String attendance) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":164,"author":{"gitId":"casaarlai"},"content":" requireNonNull(attendance);","lastModifiedDate":"2024-03-16"},{"lineNumber":165,"author":{"gitId":"casaarlai"},"content":" String trimmedAttendance \u003d attendance.trim();","lastModifiedDate":"2024-03-16"},{"lineNumber":166,"author":{"gitId":"casaarlai"},"content":" if (!Attendance.isValidAttendanceDate(trimmedAttendance)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":167,"author":{"gitId":"casaarlai"},"content":" throw new ParseException(Attendance.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":168,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":169,"author":{"gitId":"casaarlai"},"content":" return new Attendance(LocalDate.parse(trimmedAttendance));","lastModifiedDate":"2024-03-16"},{"lineNumber":170,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":171,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":172,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":173,"author":{"gitId":"casaarlai"},"content":" * Parses {@code Collection\u003cString\u003e attendances} into a {@code Set\u003cAttendance\u003e}.","lastModifiedDate":"2024-03-16"},{"lineNumber":174,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":175,"author":{"gitId":"casaarlai"},"content":" public static Set\u003cAttendance\u003e parseAttendances(Collection\u003cString\u003e attendances) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":176,"author":{"gitId":"casaarlai"},"content":" requireNonNull(attendances);","lastModifiedDate":"2024-03-16"},{"lineNumber":177,"author":{"gitId":"casaarlai"},"content":" final Set\u003cAttendance\u003e attendanceSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-16"},{"lineNumber":178,"author":{"gitId":"casaarlai"},"content":" for (String attendance : attendances) {","lastModifiedDate":"2024-03-16"},{"lineNumber":179,"author":{"gitId":"casaarlai"},"content":" attendanceSet.add(parseAttendance(attendance));","lastModifiedDate":"2024-03-16"},{"lineNumber":180,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":181,"author":{"gitId":"casaarlai"},"content":" return attendanceSet;","lastModifiedDate":"2024-03-16"},{"lineNumber":182,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"casaarlai":43,"-":124,"brennalaurentan":16}},{"path":"src/main/java/seedu/address/model/attendance/Attendance.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"casaarlai"},"content":"package seedu.address.model.attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"casaarlai"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"casaarlai"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"casaarlai"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"casaarlai"},"content":" * Represents an attendance entry in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"casaarlai"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"casaarlai"},"content":"public class Attendance {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"casaarlai"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Attendance entry should follow the format YYYY-MM-DD\";","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"casaarlai"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"casaarlai"},"content":" public final LocalDate attendanceDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"casaarlai"},"content":" * Constructs a {@code Attendance}.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"casaarlai"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"casaarlai"},"content":" * @param attendanceDate A valid attendance date.","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"casaarlai"},"content":" public Attendance(LocalDate attendanceDate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"casaarlai"},"content":" requireNonNull(attendanceDate);","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"casaarlai"},"content":" this.attendanceDate \u003d attendanceDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"casaarlai"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"casaarlai"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"casaarlai"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"casaarlai"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"casaarlai"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"casaarlai"},"content":" if (!(other instanceof Attendance)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"casaarlai"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"casaarlai"},"content":" Attendance otherAttendance \u003d (Attendance) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"casaarlai"},"content":" return attendanceDate.equals(otherAttendance.attendanceDate);","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"casaarlai"},"content":" * Returns true if a given string is a valid attendance date.","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"casaarlai"},"content":" public static boolean isValidAttendanceDate(String test) {","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"casaarlai"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"casaarlai"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"casaarlai"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"casaarlai"},"content":" return attendanceDate.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"casaarlai"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"casaarlai"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"casaarlai"},"content":" return \u0027[\u0027 + attendanceDate.toString() + \u0027]\u0027;","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"casaarlai"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"casaarlai":62}},{"path":"src/main/java/seedu/address/model/person/Birthday.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":" * Represents a Person\u0027s birthday in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":"public class Birthday {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":" \"Birthday should be in YYYY-MM-DD format\";","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" public final String value;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" * Constructs a {@code Birthday}.","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":" * @param birthday A valid birthday.","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":" public Birthday(String birthday) {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" requireNonNull(birthday);","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" checkArgument(isValidBirthday(birthday), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" this.value \u003d birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" * Returns true if a given string is a valid birthday.","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" public static boolean isValidBirthday(String test) {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" return value;","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":" || (other instanceof Birthday // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":" \u0026\u0026 value.equals(((Birthday) other).value)); // state check","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"brennalaurentan":50}},{"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":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" private final Birthday birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":29,"author":{"gitId":"casaarlai"},"content":" private final Set\u003cAttendance\u003e attendances \u003d new HashSet\u003c\u003e();","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":"brennalaurentan"},"content":" public Person(Name name, Phone phone, Email email, Address address, Birthday birthday,","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" Set\u003cTag\u003e tags, Set\u003cAttendance\u003e attendances) {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" requireAllNonNull(name, phone, email, address, birthday, tags, attendances);","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" this.birthday \u003d birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"casaarlai"},"content":" this.attendances.addAll(attendances);","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":"-"},"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":"brennalaurentan"},"content":" public Birthday getBirthday() {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"brennalaurentan"},"content":" return birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"casaarlai"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"casaarlai"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"casaarlai"},"content":" public Set\u003cAttendance\u003e getAttendances() {","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"casaarlai"},"content":" return Collections.unmodifiableSet(attendances);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"brennalaurentan"},"content":" \u0026\u0026 birthday.equals(otherPerson.birthday)","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"casaarlai"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"casaarlai"},"content":" \u0026\u0026 attendances.equals(otherPerson.attendances);","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":"brennalaurentan"},"content":" return Objects.hash(name, phone, email, address, birthday, tags, attendances);","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"brennalaurentan"},"content":" .add(\"birthday\", birthday)","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"casaarlai"},"content":" .add(\"attendances\", attendances)","lastModifiedDate":"2024-03-16"},{"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":{"casaarlai":15,"-":113,"brennalaurentan":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":"casaarlai"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"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":"-"},"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":"brennalaurentan"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), new Birthday(\"2000-02-02\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"casaarlai"},"content":" getTagSet(\"friends\"), getAttendanceSet()),","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new Birthday(\"2000-02-02\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"casaarlai"},"content":" getTagSet(\"colleagues\", \"friends\"), getAttendanceSet()),","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new Birthday(\"2000-02-02\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"casaarlai"},"content":" getTagSet(\"neighbours\"), getAttendanceSet()),","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new Birthday(\"2000-02-02\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"casaarlai"},"content":" getTagSet(\"family\"), getAttendanceSet()),","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), new Birthday(\"2000-02-02\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"casaarlai"},"content":" getTagSet(\"classmates\"), getAttendanceSet()),","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new Birthday(\"2000-02-02\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"casaarlai"},"content":" getTagSet(\"colleagues\"), getAttendanceSet())","lastModifiedDate":"2024-03-16"},{"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":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"casaarlai"},"content":" * Returns an attendance set containing the list of strings given.","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"casaarlai"},"content":" public static Set\u003cAttendance\u003e getAttendanceSet(String... strings) {","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"casaarlai"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"casaarlai"},"content":" .map(LocalDate::parse)","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"casaarlai"},"content":" .map(Attendance::new)","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"casaarlai"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"casaarlai":17,"-":48,"brennalaurentan":7}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedAttendance.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"casaarlai"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"casaarlai"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"casaarlai"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"casaarlai"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"casaarlai"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"casaarlai"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"casaarlai"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"casaarlai"},"content":" * Jackson-friendly version of {@link Tag}.","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"casaarlai"},"content":"class JsonAdaptedAttendance {","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"casaarlai"},"content":" private final String attendanceDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"casaarlai"},"content":" * Constructs a {@code JsonAdaptedAttendance} with the given {@code attendanceDate}.","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"casaarlai"},"content":" @JsonCreator","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"casaarlai"},"content":" public JsonAdaptedAttendance(String attendanceDate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"casaarlai"},"content":" this.attendanceDate \u003d attendanceDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"casaarlai"},"content":" * Converts a given {@code Attendance} into this class for Jackson use.","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"casaarlai"},"content":" public JsonAdaptedAttendance(Attendance source) {","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"casaarlai"},"content":" attendanceDate \u003d source.attendanceDate.toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"casaarlai"},"content":" @JsonValue","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"casaarlai"},"content":" public String getAttendanceDate() {","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"casaarlai"},"content":" return attendanceDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"casaarlai"},"content":" * Converts this Jackson-friendly adapted attendance object into the model\u0027s {@code Attendance} object.","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"casaarlai"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"casaarlai"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"casaarlai"},"content":" public Attendance toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"casaarlai"},"content":" if (!Attendance.isValidAttendanceDate(attendanceDate)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"casaarlai"},"content":" throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"casaarlai"},"content":" return new Attendance(LocalDate.parse(attendanceDate));","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"casaarlai"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"casaarlai":52}},{"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":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-15"},{"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":"brennalaurentan"},"content":" private final String birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":35,"author":{"gitId":"casaarlai"},"content":" private final List\u003cJsonAdaptedAttendance\u003e attendances \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" @JsonProperty(\"birthday\") String birthday,","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"casaarlai"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"casaarlai"},"content":" @JsonProperty(\"attendances\") List\u003cJsonAdaptedAttendance\u003e attendances) {","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" this.birthday \u003d birthday;","lastModifiedDate":"2024-03-20"},{"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":"casaarlai"},"content":" if (attendances !\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"casaarlai"},"content":" this.attendances.addAll(attendances);","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"brennalaurentan"},"content":" birthday \u003d source.getBirthday().value;","lastModifiedDate":"2024-03-20"},{"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":"casaarlai"},"content":" attendances.addAll(source.getAttendances().stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"casaarlai"},"content":" .map(JsonAdaptedAttendance::new)","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"casaarlai"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-16"},{"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":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","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":"casaarlai"},"content":" final List\u003cAttendance\u003e personAttendances \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"casaarlai"},"content":" for (JsonAdaptedAttendance attendance : attendances) {","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"casaarlai"},"content":" personAttendances.add(attendance.toModelType());","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"brennalaurentan"},"content":" if (birthday \u003d\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"brennalaurentan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"brennalaurentan"},"content":" Birthday.class.getSimpleName()));","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"brennalaurentan"},"content":" final Birthday modelBirthday \u003d new Birthday(birthday);","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"casaarlai"},"content":" final Set\u003cAttendance\u003e modelAttendances \u003d new HashSet\u003c\u003e(personAttendances);","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"brennalaurentan"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelBirthday, modelTags, modelAttendances);","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"casaarlai":16,"-":107,"brennalaurentan":12}},{"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":"triciiaaa"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-t15-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":{"triciiaaa":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":"casaarlai"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"triciiaaa"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"triciiaaa"},"content":"import java.util.Map;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"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":"brennalaurentan"},"content":" * A UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-03-13"},{"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":"triciiaaa"},"content":" private static final Map\u003cInteger, String\u003e tagMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"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":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" @FXML","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":" private Label remark;","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"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":"brennalaurentan"},"content":" private Label birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":51,"author":{"gitId":"casaarlai"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"casaarlai"},"content":" private FlowPane attendances;","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":60,"author":{"gitId":"triciiaaa"},"content":" id.setText(displayedIndex + \"\");","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"brennalaurentan"},"content":" birthday.setText(person.getBirthday().value);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":68,"author":{"gitId":"triciiaaa"},"content":" .forEach(tag -\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"triciiaaa"},"content":" Label label \u003d new Label(tag.tagName);","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"triciiaaa"},"content":" label.getStyleClass().add(getStyleClassForTag(tag.tagName));","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"triciiaaa"},"content":" tags.getChildren().add(label);","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"triciiaaa"},"content":" });","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"casaarlai"},"content":" person.getAttendances().stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"casaarlai"},"content":" .sorted(Comparator.comparing(attendance -\u003e attendance.attendanceDate))","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"casaarlai"},"content":" .forEach(attendance -\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"casaarlai"},"content":" String formattedDate \u003d attendance.attendanceDate.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"casaarlai"},"content":" attendances.getChildren().add(new Label(formattedDate));","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"casaarlai"},"content":" });","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"triciiaaa"},"content":" // set a custom tag list to follow style class","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"triciiaaa"},"content":" static {","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"triciiaaa"},"content":" tagMap.put(0, \"tag1\");","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"triciiaaa"},"content":" tagMap.put(1, \"tag2\");","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"triciiaaa"},"content":" tagMap.put(2, \"tag3\");","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"triciiaaa"},"content":" tagMap.put(3, \"tag4\");","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"triciiaaa"},"content":" tagMap.put(4, \"tag5\");","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"triciiaaa"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"triciiaaa"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"triciiaaa"},"content":" * Retrieves and returns the tag name for custom tag colour.","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"triciiaaa"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"triciiaaa"},"content":" * @param tagName The name of the tag assigned to the Person.","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"triciiaaa"},"content":" * @return String representation of the hashed tag.","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"triciiaaa"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"triciiaaa"},"content":" private String getStyleClassForTag(String tagName) {","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"triciiaaa"},"content":" int hash \u003d Math.abs(tagName.hashCode()) % 5;","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"triciiaaa"},"content":" return tagMap.get(hash);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"casaarlai":9,"triciiaaa":28,"-":57,"brennalaurentan":6}},{"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":"triciiaaa"},"content":" private static final String ICON_APPLICATION \u003d \"/images/bandbook_single_logo.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":{"triciiaaa":1,"-":87}},{"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":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"triciiaaa"},"content":" background-color: white; /* 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":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"triciiaaa"},"content":" -fx-font-family: \"Product Sans Medium\";","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"triciiaaa"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-font-family: \"Product Sans Medium\";","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-font-family: \"Product Sans\";","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"triciiaaa"},"content":" -fx-font-family: \"Product Sans\";","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"triciiaaa"},"content":" -fx-base: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"triciiaaa"},"content":" -fx-control-inner-background: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-font-family: \"Product Sans Light\";","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: #F8F8F8;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: #F9FDFF;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-border-color: #89C1DD;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-font-family: \"Product Sans Medium\";","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-font-family: \"Product Sans\";","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: #F8F8F8;","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"triciiaaa"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"triciiaaa"},"content":" -fx-border-color: white;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: #ECF7FF;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: #ECF7FF;","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"triciiaaa"},"content":" -fx-font-family: \"Product Sans Light\";","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"triciiaaa"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"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":"triciiaaa"},"content":" -fx-font-family: \"Product Sans Light\";","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"triciiaaa"},"content":" -fx-border-color: white;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"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":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":180,"author":{"gitId":"triciiaaa"},"content":" -fx-border-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":181,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":185,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #F8F8F8;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"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":"-"},"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":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-font-family: \"Product Sans Light\";","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":".menu:hover,","lastModifiedDate":"2024-03-18"},{"lineNumber":208,"author":{"gitId":"triciiaaa"},"content":".menu:pressed,","lastModifiedDate":"2024-03-18"},{"lineNumber":209,"author":{"gitId":"triciiaaa"},"content":".menu:selected {","lastModifiedDate":"2024-03-18"},{"lineNumber":210,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #C7C7C7;","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"triciiaaa"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"triciiaaa"},"content":".menu-item:hover,","lastModifiedDate":"2024-03-18"},{"lineNumber":214,"author":{"gitId":"triciiaaa"},"content":".menu-item:pressed,","lastModifiedDate":"2024-03-18"},{"lineNumber":215,"author":{"gitId":"triciiaaa"},"content":".menu-item:selected {","lastModifiedDate":"2024-03-18"},{"lineNumber":216,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #C7C7C7;","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"triciiaaa"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":218,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"triciiaaa"},"content":" -fx-border-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":231,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":234,"author":{"gitId":"triciiaaa"},"content":" -fx-font-family: \"Product Sans\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2024-03-18"},{"lineNumber":235,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: #F8F8F8;","lastModifiedDate":"2024-03-18"},{"lineNumber":247,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":266,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":274,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":288,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":298,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #C7C7C7;","lastModifiedDate":"2024-03-18"},{"lineNumber":299,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":301,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":302,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #595959;","lastModifiedDate":"2024-03-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":308,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":309,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":317,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":319,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":320,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":321,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":323,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":330,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":333,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":334,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: transparent white transparent white;","lastModifiedDate":"2024-03-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"triciiaaa"},"content":" -fx-font-family: \"Product Sans\";","lastModifiedDate":"2024-03-18"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: #595959;","lastModifiedDate":"2024-03-18"},{"lineNumber":339,"author":{"gitId":"triciiaaa"},"content":" -fx-padding: 15 15 15 15; /* top, right, bottom, left */","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-effect: innershadow(gaussian, white, 10, 0, 0, 0);","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: #ECF7FF;","lastModifiedDate":"2024-03-18"},{"lineNumber":348,"author":{"gitId":"triciiaaa"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":".tag1 { /*green*/","lastModifiedDate":"2024-03-18"},{"lineNumber":357,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: #52723E;","lastModifiedDate":"2024-03-18"},{"lineNumber":358,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #E7F4DF;","lastModifiedDate":"2024-03-18"},{"lineNumber":359,"author":{"gitId":"triciiaaa"},"content":" -fx-padding: 3 10 3 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":360,"author":{"gitId":"triciiaaa"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":361,"author":{"gitId":"triciiaaa"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":362,"author":{"gitId":"triciiaaa"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-18"},{"lineNumber":363,"author":{"gitId":"triciiaaa"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":364,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":365,"author":{"gitId":"triciiaaa"},"content":".tag2 { /*purple*/","lastModifiedDate":"2024-03-18"},{"lineNumber":366,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: #553B7E;","lastModifiedDate":"2024-03-18"},{"lineNumber":367,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #EFE9FA;","lastModifiedDate":"2024-03-18"},{"lineNumber":368,"author":{"gitId":"triciiaaa"},"content":" -fx-padding: 3 10 3 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":369,"author":{"gitId":"triciiaaa"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":370,"author":{"gitId":"triciiaaa"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":371,"author":{"gitId":"triciiaaa"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-18"},{"lineNumber":372,"author":{"gitId":"triciiaaa"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":373,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":374,"author":{"gitId":"triciiaaa"},"content":".tag3 { /*yellow*/","lastModifiedDate":"2024-03-18"},{"lineNumber":375,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: #7A6D44;","lastModifiedDate":"2024-03-18"},{"lineNumber":376,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #FFF4E4;","lastModifiedDate":"2024-03-18"},{"lineNumber":377,"author":{"gitId":"triciiaaa"},"content":" -fx-padding: 3 10 3 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":378,"author":{"gitId":"triciiaaa"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":379,"author":{"gitId":"triciiaaa"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":380,"author":{"gitId":"triciiaaa"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-18"},{"lineNumber":381,"author":{"gitId":"triciiaaa"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":382,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":383,"author":{"gitId":"triciiaaa"},"content":".tag4 { /*red*/","lastModifiedDate":"2024-03-18"},{"lineNumber":384,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: #5A2121;","lastModifiedDate":"2024-03-18"},{"lineNumber":385,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #FFEAEA;","lastModifiedDate":"2024-03-18"},{"lineNumber":386,"author":{"gitId":"triciiaaa"},"content":" -fx-padding: 3 10 3 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":387,"author":{"gitId":"triciiaaa"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":388,"author":{"gitId":"triciiaaa"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":389,"author":{"gitId":"triciiaaa"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-18"},{"lineNumber":390,"author":{"gitId":"triciiaaa"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":391,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":392,"author":{"gitId":"triciiaaa"},"content":".tag5 { /*blue*/","lastModifiedDate":"2024-03-18"},{"lineNumber":393,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: #1A5F68;","lastModifiedDate":"2024-03-18"},{"lineNumber":394,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #D8EEF1;","lastModifiedDate":"2024-03-18"},{"lineNumber":395,"author":{"gitId":"triciiaaa"},"content":" -fx-padding: 3 10 3 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":396,"author":{"gitId":"triciiaaa"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":397,"author":{"gitId":"triciiaaa"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":398,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":399,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":400,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":401,"author":{"gitId":"casaarlai"},"content":"#attendances {","lastModifiedDate":"2024-03-16"},{"lineNumber":402,"author":{"gitId":"casaarlai"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-16"},{"lineNumber":403,"author":{"gitId":"casaarlai"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-16"},{"lineNumber":404,"author":{"gitId":"casaarlai"},"content":"}","lastModifiedDate":"2024-03-16"},{"lineNumber":405,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":406,"author":{"gitId":"casaarlai"},"content":"#attendances .label {","lastModifiedDate":"2024-03-16"},{"lineNumber":407,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-16"},{"lineNumber":408,"author":{"gitId":"casaarlai"},"content":" -fx-background-color: #3e7ee1;","lastModifiedDate":"2024-03-16"},{"lineNumber":409,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-03-16"},{"lineNumber":410,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-03-16"},{"lineNumber":411,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-03-16"},{"lineNumber":412,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-16"},{"lineNumber":413,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-16"},{"lineNumber":414,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":415,"author":{"gitId":"triciiaaa"},"content":".justify-space-between \u003e Label {","lastModifiedDate":"2024-03-18"},{"lineNumber":416,"author":{"gitId":"triciiaaa"},"content":" -fx-alignment: baseline-left; /* Align label to the left */","lastModifiedDate":"2024-03-18"},{"lineNumber":417,"author":{"gitId":"triciiaaa"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":418,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":419,"author":{"gitId":"triciiaaa"},"content":".justify-space-between \u003e FlowPane {","lastModifiedDate":"2024-03-18"},{"lineNumber":420,"author":{"gitId":"triciiaaa"},"content":" -fx-alignment: baseline-right; /* Align flow pane to the right */","lastModifiedDate":"2024-03-18"},{"lineNumber":421,"author":{"gitId":"triciiaaa"},"content":" -fx-hgrow: ALWAYS;","lastModifiedDate":"2024-03-18"},{"lineNumber":422,"author":{"gitId":"triciiaaa"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"casaarlai":8,"triciiaaa":129,"-":285}},{"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":"triciiaaa"},"content":" -fx-background: white;","lastModifiedDate":"2024-03-18"},{"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":{"triciiaaa":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":"triciiaaa"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"triciiaaa"},"content":" -fx-font-family: \"Product Sans\";","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: #1A5F68;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":7,"author":{"gitId":"-"},"content":"#copyButton {","lastModifiedDate":"2022-01-02"},{"lineNumber":8,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #D8EEF1;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":11,"author":{"gitId":"-"},"content":"#copyButton:hover {","lastModifiedDate":"2022-01-02"},{"lineNumber":12,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #CCE4E8;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":15,"author":{"gitId":"-"},"content":"#copyButton:armed {","lastModifiedDate":"2022-01-02"},{"lineNumber":16,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #A7D3D9;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":19,"author":{"gitId":"-"},"content":"#helpMessageContainer {","lastModifiedDate":"2022-01-02"},{"lineNumber":20,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"triciiaaa"},"content":" -fx-padding: 15 30 15 30;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"triciiaaa"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"triciiaaa"},"content":"#helpMessageContainer \u003e Label {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"triciiaaa"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"triciiaaa"},"content":" -fx-font-family: \"Product Sans\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-08-28"}],"authorContributionMap":{"triciiaaa":14,"-":14}},{"path":"src/main/resources/view/HelpWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cfx:root resizable\u003d\"false\" title\u003d\"Help\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cHBox alignment\u003d\"CENTER\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2022-01-02"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cchildren\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"helpMessage\" text\u003d\"Label\"\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"triciiaaa"},"content":" \u003cInsets right\u003d\"10.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"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":{"triciiaaa":1,"-":43}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"triciiaaa"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" title\u003d\"Band Book\" 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":"triciiaaa"},"content":" \u003cImage url\u003d\"@/images/bandbook_single_logo.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":"triciiaaa"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"logoPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"triciiaaa"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"triciiaaa"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"triciiaaa"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"triciiaaa"},"content":" \u003cImageView fitWidth\u003d\"140\" fitHeight\u003d\"40\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"triciiaaa"},"content":" \u003cImage url\u003d\"@/images/bandbook_full_logo.png\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"triciiaaa"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"triciiaaa"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"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":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":59,"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":60,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"triciiaaa":12,"-":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":"-"},"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":"triciiaaa"},"content":" \u003cInsets top\u003d\"20\" right\u003d\"20\" bottom\u003d\"20\" left\u003d\"40\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"triciiaaa"},"content":" \u003cHBox spacing\u003d\"50\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" \u003cVBox spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"triciiaaa"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"10\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"triciiaaa"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"triciiaaa"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"triciiaaa"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"triciiaaa"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"triciiaaa"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"triciiaaa"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":37,"author":{"gitId":"triciiaaa"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"triciiaaa"},"content":" \u003cVBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":" \u003cLabel fx:id\u003d\"birthday\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$birthday\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"triciiaaa"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"triciiaaa"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"triciiaaa"},"content":" \u003cVBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"triciiaaa"},"content":" \u003cFlowPane fx:id\u003d\"attendances\" prefWrapLength\u003d\"400\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"triciiaaa"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"triciiaaa":17,"-":33,"brennalaurentan":1}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BIRTHDAY_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"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":"brennalaurentan"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2024-03-21"},{"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":"brennalaurentan"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + BIRTHDAY_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"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":{"-":173,"brennalaurentan":4}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY_DATE;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"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":"brennalaurentan"},"content":" public static final String VALID_BIRTHDAY_AMY \u003d \"2000-01-01\";","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" public static final String VALID_BIRTHDAY_BOB \u003d \"2001-02-02\";","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":"brennalaurentan"},"content":" public static final String DEFAULT_BIRTHDAY \u003d \"9999-99-99\";","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":"","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":"-"},"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":"brennalaurentan"},"content":" public static final String BIRTHDAY_DESC_AMY \u003d \" \" + PREFIX_BIRTHDAY_DATE + VALID_BIRTHDAY_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"brennalaurentan"},"content":" public static final String BIRTHDAY_DESC_BOB \u003d \" \" + PREFIX_BIRTHDAY_DATE + VALID_BIRTHDAY_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"brennalaurentan"},"content":" public static final String INVALID_BIRTHDAY_DESC \u003d \" \" + PREFIX_BIRTHDAY_DATE + \"a\"; // wrong format for birthday","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"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":{"-":128,"brennalaurentan":8}},{"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":"brennalaurentan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BIRTHDAY_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"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":"brennalaurentan"},"content":" // different birthday -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"brennalaurentan"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withBirthday(VALID_BIRTHDAY_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"brennalaurentan"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"brennalaurentan"},"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":"brennalaurentan"},"content":" + editPersonDescriptor.getBirthday().orElse(null) + \", birthday\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"casaarlai"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", attendances\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"casaarlai"},"content":" + editPersonDescriptor.getAttendances().orElse(null) + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"casaarlai":2,"-":70,"brennalaurentan":6}},{"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":"brennalaurentan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BIRTHDAY_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BIRTHDAY_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DEFAULT_BIRTHDAY;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_BIRTHDAY_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"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":"brennalaurentan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY_DATE;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.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":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"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":"-"},"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":"brennalaurentan"},"content":" + ADDRESS_DESC_BOB + BIRTHDAY_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-21"},{"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":"brennalaurentan"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + BIRTHDAY_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"brennalaurentan"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"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":"brennalaurentan"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"brennalaurentan"},"content":" + BIRTHDAY_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-21"},{"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":"brennalaurentan"},"content":" // multiple birthdays","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"brennalaurentan"},"content":" assertParseFailure(parser, BIRTHDAY_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"brennalaurentan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_BIRTHDAY_DATE));","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"brennalaurentan"},"content":" + BIRTHDAY_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"brennalaurentan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"brennalaurentan"},"content":" PREFIX_BIRTHDAY_DATE));","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // invalid value followed by valid 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, INVALID_NAME_DESC + validExpectedPersonString,","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, INVALID_EMAIL_DESC + validExpectedPersonString,","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, INVALID_PHONE_DESC + validExpectedPersonString,","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, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"brennalaurentan"},"content":" // invalid birthday","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"brennalaurentan"},"content":" assertParseFailure(parser, INVALID_BIRTHDAY_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"brennalaurentan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_BIRTHDAY_DATE));","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // valid value followed by invalid 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, validExpectedPersonString + INVALID_NAME_DESC,","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, validExpectedPersonString + INVALID_EMAIL_DESC,","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":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"brennalaurentan"},"content":" // invalid birthday","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"brennalaurentan"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_BIRTHDAY_DESC,","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"brennalaurentan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_BIRTHDAY_DATE));","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":154,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"brennalaurentan"},"content":" Person expectedPersonNoTag \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"brennalaurentan"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"brennalaurentan"},"content":" + BIRTHDAY_DESC_AMY, new AddCommand(expectedPersonNoTag));","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"brennalaurentan"},"content":" // zero birthday","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"brennalaurentan"},"content":" Person expectedPersonNoBirthday \u003d new PersonBuilder(AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"brennalaurentan"},"content":" .withBirthday(DEFAULT_BIRTHDAY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"brennalaurentan"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"brennalaurentan"},"content":" + TAG_DESC_FRIEND, new AddCommand(expectedPersonNoBirthday));","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"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 phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":206,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":207,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"brennalaurentan"},"content":" // invalid birthday","lastModifiedDate":"2024-03-21"},{"lineNumber":211,"author":{"gitId":"brennalaurentan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":212,"author":{"gitId":"brennalaurentan"},"content":" + INVALID_BIRTHDAY_DESC + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Birthday.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":213,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":214,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":215,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":218,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":219,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":227,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"-":187,"brennalaurentan":40}},{"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":"brennalaurentan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BIRTHDAY_BOB;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"brennalaurentan"},"content":" // different birthday -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"brennalaurentan"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withBirthday(VALID_BIRTHDAY_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"brennalaurentan"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"brennalaurentan"},"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":"brennalaurentan"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"brennalaurentan"},"content":" + \", birthday\u003d\" + ALICE.getBirthday() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"casaarlai"},"content":" + \", attendances\u003d\" + ALICE.getAttendances() + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"casaarlai":1,"-":98,"brennalaurentan":7}},{"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":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"casaarlai"},"content":" private static final String INVALID_ATTENDANCE \u003d \"202-01-01\";","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" private static final String INVALID_BIRTHDAY \u003d \"24th of April\";","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" private static final String VALID_BIRTHDAY \u003d BENSON.getBirthday().toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"casaarlai"},"content":" private static final List\u003cJsonAdaptedAttendance\u003e VALID_ATTENDANCES \u003d BENSON.getAttendances().stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"casaarlai"},"content":" .map(JsonAdaptedAttendance::new)","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"casaarlai"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_BIRTHDAY,","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":" VALID_TAGS, VALID_ATTENDANCES);","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":"brennalaurentan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"brennalaurentan"},"content":" VALID_BIRTHDAY, VALID_TAGS, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_BIRTHDAY,","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"brennalaurentan"},"content":" VALID_TAGS, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"brennalaurentan"},"content":" VALID_BIRTHDAY, VALID_TAGS, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"brennalaurentan"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_BIRTHDAY,","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"brennalaurentan"},"content":" VALID_TAGS, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"brennalaurentan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"brennalaurentan"},"content":" VALID_BIRTHDAY, VALID_TAGS, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"brennalaurentan"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_BIRTHDAY,","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"brennalaurentan"},"content":" VALID_TAGS, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"brennalaurentan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"brennalaurentan"},"content":" VALID_BIRTHDAY, VALID_TAGS, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"brennalaurentan"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"brennalaurentan"},"content":" public void toModelType_invalidBirthday_throwsIllegalValueException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"brennalaurentan"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"brennalaurentan"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, INVALID_BIRTHDAY,","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"brennalaurentan"},"content":" VALID_TAGS, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"brennalaurentan"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"brennalaurentan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"brennalaurentan"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"brennalaurentan"},"content":" public void toModelType_nullBirthday_throwsIllegalValueException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"brennalaurentan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"brennalaurentan"},"content":" null, VALID_TAGS, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"brennalaurentan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Birthday.class.getSimpleName());","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"brennalaurentan"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_BIRTHDAY,","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"brennalaurentan"},"content":" invalidTags, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, 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":"casaarlai"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"casaarlai"},"content":" public void toModelType_invalidAttendances_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"casaarlai"},"content":" List\u003cJsonAdaptedAttendance\u003e invalidAttendances \u003d new ArrayList\u003c\u003e(VALID_ATTENDANCES);","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"casaarlai"},"content":" invalidAttendances.add(new JsonAdaptedAttendance(INVALID_ATTENDANCE));","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"casaarlai"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"brennalaurentan"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_BIRTHDAY,","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"brennalaurentan"},"content":" VALID_TAGS, invalidAttendances);","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"casaarlai"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"casaarlai":11,"-":104,"brennalaurentan":37}},{"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":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"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":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" descriptor.setBirthday(person.getBirthday());","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"casaarlai"},"content":" descriptor.setAttendances(person.getAttendances());","lastModifiedDate":"2024-03-16"},{"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":"-"},"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":"brennalaurentan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"brennalaurentan"},"content":" * Sets the {@code Birthday} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"brennalaurentan"},"content":" public EditPersonDescriptorBuilder withBirthday(String birthday) {","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"brennalaurentan"},"content":" descriptor.setBirthday(new Birthday(birthday));","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"brennalaurentan"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"brennalaurentan"},"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":{"casaarlai":1,"-":87,"brennalaurentan":10}},{"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":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"-"},"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":"brennalaurentan"},"content":" public static final String DEFAULT_BIRTHDAY \u003d \"2000-01-01\";","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" private Birthday birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"casaarlai"},"content":" private Set\u003cAttendance\u003e attendances;","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" birthday \u003d new Birthday(DEFAULT_BIRTHDAY);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"casaarlai"},"content":" attendances \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" birthday \u003d personToCopy.getBirthday();","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"casaarlai"},"content":" attendances \u003d new HashSet\u003c\u003e(personToCopy.getAttendances());","lastModifiedDate":"2024-03-16"},{"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":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"casaarlai"},"content":" * Parses the {@code attendances} into a {@code Set\u003cAttendance\u003e} and set it to the {@code Person} that we are","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"casaarlai"},"content":" * building.","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"casaarlai"},"content":" public PersonBuilder withAttendances(String ... attendances) {","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"casaarlai"},"content":" this.attendances \u003d SampleDataUtil.getAttendanceSet(attendances);","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"casaarlai"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"brennalaurentan"},"content":" * Sets the {@code Birthday} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"brennalaurentan"},"content":" public PersonBuilder withBirthday(String birthday) {","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"brennalaurentan"},"content":" this.birthday \u003d new Birthday(birthday);","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"brennalaurentan"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":119,"author":{"gitId":"brennalaurentan"},"content":" return new Person(name, phone, email, address, birthday, tags, attendances);","lastModifiedDate":"2024-03-20"},{"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":{"casaarlai":13,"-":95,"brennalaurentan":14}},{"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":"casaarlai"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ATTENDANCE;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY_DATE;","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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":15,"author":{"gitId":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"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":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" sb.append(PREFIX_BIRTHDAY_DATE + person.getBirthday().value + \" \");","lastModifiedDate":"2024-03-21"},{"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":"casaarlai"},"content":" person.getAttendances().stream().forEach(","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"casaarlai"},"content":" s -\u003e sb.append(PREFIX_ATTENDANCE + s.attendanceDate.toString() + \" \")","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"casaarlai"},"content":" );","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"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":"brennalaurentan"},"content":" descriptor.getBirthday().ifPresent(birthday -\u003e sb.append(PREFIX_BIRTHDAY_DATE)","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"brennalaurentan"},"content":" .append(birthday.value).append(\" \"));","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"casaarlai"},"content":" sb.append(PREFIX_TAG).append(\" \");","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"casaarlai"},"content":" if (descriptor.getAttendances().isPresent()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"casaarlai"},"content":" Set\u003cAttendance\u003e attendances \u003d descriptor.getAttendances().get();","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"casaarlai"},"content":" if (attendances.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"casaarlai"},"content":" sb.append(PREFIX_ATTENDANCE);","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"casaarlai"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"casaarlai"},"content":" attendances.forEach(s -\u003e sb.append(PREFIX_ATTENDANCE).append(s.attendanceDate).append(\" \"));","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"casaarlai":14,"-":61,"brennalaurentan":4}},{"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":"brennalaurentan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BIRTHDAY_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BIRTHDAY_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"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":"brennalaurentan"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withBirthday(\"2000-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" .withEmail(\"alice@example.com\").withPhone(\"94351253\")","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"casaarlai"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"casaarlai"},"content":" .withAttendances(\"2024-01-01\", \"2024-01-10\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\").withBirthday(\"2001-02-02\")","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"casaarlai"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"casaarlai"},"content":" .withAttendances(\"2024-01-01\", \"2024-01-10\").build();","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withBirthday(\"2000-03-03\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withBirthday(\"2000-04-04\")","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withBirthday(\"2000-05-05\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withBirthday(\"2000-06-06\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withBirthday(\"2000-07-07\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"brennalaurentan"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withBirthday(VALID_BIRTHDAY_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"brennalaurentan"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-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":"brennalaurentan"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withBirthday(VALID_BIRTHDAY_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"brennalaurentan"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-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":{"casaarlai":4,"-":63,"brennalaurentan":15}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"triciiaaa"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-T15-3/tp/actions)","lastModifiedDate":"2024-03-04"},{"lineNumber":2,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":3,"author":{"gitId":"triciiaaa"},"content":"# BandBook","lastModifiedDate":"2024-03-04"},{"lineNumber":4,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":5,"author":{"gitId":"triciiaaa"},"content":"BandBook is your all-in-one software designed to streamline the management of band members\u0027 contact details and ","lastModifiedDate":"2024-03-04"},{"lineNumber":6,"author":{"gitId":"triciiaaa"},"content":"information. It offers a user-friendly platform to **create, edit and delete** members\u0027 contact information, ","lastModifiedDate":"2024-03-04"},{"lineNumber":7,"author":{"gitId":"triciiaaa"},"content":"along with optional fields such as tag and birthday information. ","lastModifiedDate":"2024-03-04"},{"lineNumber":8,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":9,"author":{"gitId":"triciiaaa"},"content":"Moreover, you can **indicate and view** the attendance history of your members, ensuring that they stay on track ","lastModifiedDate":"2024-03-04"},{"lineNumber":10,"author":{"gitId":"triciiaaa"},"content":"with the band\u0027s activities. Optimised for use via a Command Line Interface (CLI), BandBook can assist you in ","lastModifiedDate":"2024-03-04"},{"lineNumber":11,"author":{"gitId":"triciiaaa"},"content":"managing your members\u0027 details faster than traditional GUI apps.","lastModifiedDate":"2024-03-04"},{"lineNumber":12,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"triciiaaa"},"content":"\u003cp align\u003d\"center\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":14,"author":{"gitId":"triciiaaa"},"content":" \u003cimg src\u003d\"docs/images/Ui.png\" alt\u003d\"Description of the image\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"triciiaaa"},"content":"\u003c/p\u003e ","lastModifiedDate":"2024-03-04"},{"lineNumber":16,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"triciiaaa"},"content":"## Features","lastModifiedDate":"2024-03-04"},{"lineNumber":18,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"triciiaaa"},"content":"### Creating Contact Information","lastModifiedDate":"2024-03-04"},{"lineNumber":20,"author":{"gitId":"triciiaaa"},"content":"Creates and adds a band member\u0027s contact into the list of contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":21,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"triciiaaa"},"content":"Command Syntax: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG] [b/BIRTHDAY] ...`","lastModifiedDate":"2024-03-04"},{"lineNumber":23,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"triciiaaa"},"content":"Examples:","lastModifiedDate":"2024-03-04"},{"lineNumber":25,"author":{"gitId":"triciiaaa"},"content":"- `add n/John Doe p/98765432 e/johnd@example.com a/John Street, block 123, #01-01`","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"triciiaaa"},"content":"- `add n/Sally Smith p/92716291 e/sallys@example.com a/Sally Street, block 221, #12-25 b/2000-01-01`","lastModifiedDate":"2024-03-04"},{"lineNumber":27,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"triciiaaa"},"content":"### Updating Contact Information","lastModifiedDate":"2024-03-04"},{"lineNumber":29,"author":{"gitId":"triciiaaa"},"content":"Updates a band member\u0027s contact with newly provided information.","lastModifiedDate":"2024-03-04"},{"lineNumber":30,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"triciiaaa"},"content":"Command Syntax: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG] [b/BIRTHDAY] ...`","lastModifiedDate":"2024-03-04"},{"lineNumber":32,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"triciiaaa"},"content":"Examples:","lastModifiedDate":"2024-03-04"},{"lineNumber":34,"author":{"gitId":"triciiaaa"},"content":"- `edit 1 p/91234567 e/johndoe@example.com `","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"triciiaaa"},"content":"- `edit 2 p/92712213 b/2001-02-03`","lastModifiedDate":"2024-03-04"},{"lineNumber":36,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"triciiaaa"},"content":"### Deleting Contact Information","lastModifiedDate":"2024-03-04"},{"lineNumber":38,"author":{"gitId":"triciiaaa"},"content":"Deletes a band member\u0027s contact from the list of contacts.","lastModifiedDate":"2024-03-04"},{"lineNumber":39,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":40,"author":{"gitId":"triciiaaa"},"content":"Command Syntax: `delete INDEX`","lastModifiedDate":"2024-03-04"},{"lineNumber":41,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":42,"author":{"gitId":"triciiaaa"},"content":"Examples:","lastModifiedDate":"2024-03-04"},{"lineNumber":43,"author":{"gitId":"triciiaaa"},"content":"- `delete 2` deletes the user with id \u003d 2.","lastModifiedDate":"2024-03-04"},{"lineNumber":44,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":45,"author":{"gitId":"triciiaaa"},"content":"### Viewing Upcoming Birthdays","lastModifiedDate":"2024-03-04"},{"lineNumber":46,"author":{"gitId":"triciiaaa"},"content":"Displays X number of upcoming birthdays.","lastModifiedDate":"2024-03-04"},{"lineNumber":47,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":48,"author":{"gitId":"triciiaaa"},"content":"Command Syntax: `bd NUM`","lastModifiedDate":"2024-03-04"},{"lineNumber":49,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":50,"author":{"gitId":"triciiaaa"},"content":"Examples:","lastModifiedDate":"2024-03-04"},{"lineNumber":51,"author":{"gitId":"triciiaaa"},"content":"- `bd 3` displays the 3 upcoming birthdays from today\u0027s date.","lastModifiedDate":"2024-03-04"},{"lineNumber":52,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":53,"author":{"gitId":"triciiaaa"},"content":"### Updating Attendance History","lastModifiedDate":"2024-03-04"},{"lineNumber":54,"author":{"gitId":"triciiaaa"},"content":"Adds the date of session attended by a band member to his/her attendance list.","lastModifiedDate":"2024-03-04"},{"lineNumber":55,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":56,"author":{"gitId":"triciiaaa"},"content":"Command Syntax: `att mark INDEX d/DATE`","lastModifiedDate":"2024-03-04"},{"lineNumber":57,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":58,"author":{"gitId":"triciiaaa"},"content":"Examples:","lastModifiedDate":"2024-03-04"},{"lineNumber":59,"author":{"gitId":"triciiaaa"},"content":"- `att mark 2 d/2024-10-19`","lastModifiedDate":"2024-03-04"},{"lineNumber":60,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":61,"author":{"gitId":"triciiaaa"},"content":"### Viewing Attendance History","lastModifiedDate":"2024-03-04"},{"lineNumber":62,"author":{"gitId":"triciiaaa"},"content":"Displays the attendance history of a specific band member.","lastModifiedDate":"2024-03-04"},{"lineNumber":63,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":64,"author":{"gitId":"triciiaaa"},"content":"Command Syntax: `att view INDEX`","lastModifiedDate":"2024-03-04"},{"lineNumber":65,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":66,"author":{"gitId":"triciiaaa"},"content":"Examples:","lastModifiedDate":"2024-03-04"},{"lineNumber":67,"author":{"gitId":"triciiaaa"},"content":"- `att view 2`","lastModifiedDate":"2024-03-04"},{"lineNumber":68,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-04"},{"lineNumber":69,"author":{"gitId":"triciiaaa"},"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":{"triciiaaa":69}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":" title: \"About Us\"","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"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":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"triciiaaa"},"content":"## Project Team","lastModifiedDate":"2024-03-04"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":14,"author":{"gitId":"triciiaaa"},"content":"### Brenna Tan","lastModifiedDate":"2024-03-04"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"triciiaaa"},"content":"\u003cimg src\u003d\"images/brennalaurentan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"triciiaaa"},"content":"[[github](http://github.com/brennalaurentan)]","lastModifiedDate":"2024-03-04"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"triciiaaa"},"content":"* Responsibilities: Backend for Birthday information","lastModifiedDate":"2024-03-04"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":23,"author":{"gitId":"triciiaaa"},"content":"### Shaun Lai","lastModifiedDate":"2024-03-04"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":25,"author":{"gitId":"triciiaaa"},"content":"\u003cimg src\u003d\"images/casaarlai.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":27,"author":{"gitId":"triciiaaa"},"content":"[[github](http://github.com/casaarlai)]","lastModifiedDate":"2024-03-04"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"triciiaaa"},"content":"* Responsibilities: Backend for Attendance feature","lastModifiedDate":"2024-03-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"triciiaaa"},"content":"### Tricia Ang","lastModifiedDate":"2024-03-04"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"triciiaaa"},"content":"\u003cimg src\u003d\"images/triciiaaa.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"triciiaaa"},"content":"[[github](http://github.com/triciiaaa)]","lastModifiedDate":"2024-03-04"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"triciiaaa"},"content":"* Responsibilities: UI Design","lastModifiedDate":"2024-03-04"}],"authorContributionMap":{"triciiaaa":13,"-":25,"brennalaurentan":1}},{"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":"brennalaurentan"},"content":"### Edit feature","lastModifiedDate":"2024-03-22"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"brennalaurentan"},"content":"#### Implementation","lastModifiedDate":"2024-03-22"},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":165,"author":{"gitId":"brennalaurentan"},"content":"The implementation of the edit feature which allows users to change various fields of an existing contact can be seen","lastModifiedDate":"2024-03-22"},{"lineNumber":166,"author":{"gitId":"brennalaurentan"},"content":"in the UML sequence diagram below.","lastModifiedDate":"2024-03-22"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":168,"author":{"gitId":"brennalaurentan"},"content":"\u003cpuml src\u003d\"diagrams/EditUser.puml\"/\u003e","lastModifiedDate":"2024-03-22"},{"lineNumber":169,"author":{"gitId":"brennalaurentan"},"content":"Note: The activation bars for :Ui and logicManager:LogicManager are meant to be deactivated after and within the","lastModifiedDate":"2024-03-22"},{"lineNumber":170,"author":{"gitId":"brennalaurentan"},"content":"reference frame respectively. Due to a PlantUML bug, this is unable to be reflected accurately in the diagram.","lastModifiedDate":"2024-03-22"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":173,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":175,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":178,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":179,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":180,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07"},{"lineNumber":181,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07"},{"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":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2024-03-13"},{"lineNumber":192,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23"},{"lineNumber":193,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23"},{"lineNumber":194,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26"},{"lineNumber":195,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"**Value proposition**: manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-03-13"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"|----------|--------------------------------------------|------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"-"},"content":"| `* * *` | user | add a new person | |","lastModifiedDate":"2024-03-13"},{"lineNumber":208,"author":{"gitId":"-"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2024-03-13"},{"lineNumber":209,"author":{"gitId":"-"},"content":"| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list |","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2024-03-13"},{"lineNumber":211,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2024-03-13"},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2024-03-13"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07"},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":217,"author":{"gitId":"-"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-03-13"},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":219,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2024-03-13"},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2024-03-13"},{"lineNumber":224,"author":{"gitId":"-"},"content":"2. AddressBook shows a list of persons","lastModifiedDate":"2024-03-13"},{"lineNumber":225,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2024-03-13"},{"lineNumber":226,"author":{"gitId":"-"},"content":"4. AddressBook deletes the person","lastModifiedDate":"2024-03-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":230,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":234,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":236,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":238,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2024-03-13"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2024-03-13"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":244,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"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":247,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-13"},{"lineNumber":248,"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":"2024-03-13"},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":250,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2024-03-13"},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":252,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":254,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":255,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23"},{"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: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":261,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":263,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":265,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":266,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"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":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":272,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":274,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":276,"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":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":278,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":280,"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":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":282,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":283,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":287,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":289,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":291,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":293,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":294,"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":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":296,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":297,"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":298,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":299,"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":300,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":302,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":304,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"-":303,"brennalaurentan":7}},{"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":"brennalaurentan"},"content":"# BandBook User Guide","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":"BandBook is your all-in-one software designed to streamline the management of band members\u0027 contact details and information. It offers a user-friendly platform to **create, edit and delete members\u0027 contact information**, along with optional fields such as **tag and birthday information**.","lastModifiedDate":"2024-03-07"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":"Moreover, you can **indicate and view the attendance history of your members**, ensuring that they stay on track with the band\u0027s activities. Optimised for use via a Command Line Interface (CLI), BandBook can assist you in managing your members\u0027 details faster than traditional GUI apps.","lastModifiedDate":"2024-03-07"},{"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":"triciiaaa"},"content":"1. Download the latest `bandbook.jar` from [here](https://github.com/AY2324S2-CS2103T-T15-3/tp/releases).","lastModifiedDate":"2024-03-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"triciiaaa"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your Band Book.","lastModifiedDate":"2024-03-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"triciiaaa"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar bandbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-03-15"},{"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":"triciiaaa"},"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 Band Book.","lastModifiedDate":"2024-03-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01"},{"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":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"Format: `help`","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":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"triciiaaa"},"content":"Adds a person to Band Book.","lastModifiedDate":"2024-03-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12"},{"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":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"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":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":"triciiaaa"},"content":"Shows a list of all persons in Band Book.","lastModifiedDate":"2024-03-15"},{"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":"triciiaaa"},"content":"Edits an existing person in Band Book.","lastModifiedDate":"2024-03-15"},{"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":"-"},"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":111,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"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":116,"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":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"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 the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"triciiaaa"},"content":"Deletes the specified person from Band Book.","lastModifiedDate":"2024-03-15"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"triciiaaa"},"content":"* `list` followed by `delete 2` deletes the 2nd person in Band Book.","lastModifiedDate":"2024-03-15"},{"lineNumber":148,"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":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"triciiaaa"},"content":"Clears all entries from Band Book.","lastModifiedDate":"2024-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":160,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":164,"author":{"gitId":"triciiaaa"},"content":"Band Book 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-15"},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":166,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":168,"author":{"gitId":"triciiaaa"},"content":"Band Book data are saved automatically as a JSON file `[JAR file location]/data/bandbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-03-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":170,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":172,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":173,"author":{"gitId":"triciiaaa"},"content":"If your changes to the data file makes its format invalid, Band Book 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-15"},{"lineNumber":174,"author":{"gitId":"triciiaaa"},"content":"Furthermore, certain edits can cause the Band Book 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-15"},{"lineNumber":175,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":177,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":183,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":186,"author":{"gitId":"triciiaaa"},"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 Band Book home folder.","lastModifiedDate":"2024-03-15"},{"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":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":192,"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":193,"author":{"gitId":"-"},"content":"","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":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":198,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":199,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":200,"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":201,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"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":204,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"triciiaaa":15,"-":187,"brennalaurentan":4}},{"path":"docs/diagrams/EditUser.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"@startuml","lastModifiedDate":"2024-03-22"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"!include style.puml","lastModifiedDate":"2024-03-22"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-22"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":5,"author":{"gitId":"triciiaaa"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"Participant \":Ui\" as ui UI_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"Participant \"logicManager:LogicManager\" as logicManager LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"Participant \"addressBookParser:AddressBookParser\" as addressBookParser MODEL_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":"Participant \":EditCommandParser\" as editCommandParser STORAGE_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":"Participant \":EditCommand\" as editCommand UI_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":"Participant \":CommandResult\" as commandResult LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":13,"author":{"gitId":"triciiaaa"},"content":"user -[USER_COLOR]\u003e ui : \"edit 1 b/2000-01-01\"","lastModifiedDate":"2024-03-22"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":"activate ui UI_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":16,"author":{"gitId":"triciiaaa"},"content":"ref over logicManager, ui : process user input","lastModifiedDate":"2024-03-22"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":"activate logicManager LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":"logicManager -[USER_COLOR]\u003e addressBookParser : parseCommand(\"edit 1 b/2000-01-01\")","lastModifiedDate":"2024-03-22"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":"activate addressBookParser MODEL_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":"addressBookParser -[USER_COLOR]\u003e editCommandParser ** : EditCommandParser()","lastModifiedDate":"2024-03-22"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":"activate editCommandParser STORAGE_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":"editCommandParser -[USER_COLOR]\u003e editCommandParser : parse(...)","lastModifiedDate":"2024-03-22"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":"activate editCommandParser STORAGE_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":"editCommandParser -[USER_COLOR]\u003e editCommand ** : EditCommand(...)","lastModifiedDate":"2024-03-22"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":"activate editCommand UI_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":"editCommand -[USER_COLOR]-\u003e editCommandParser : :EditCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":"deactivate editCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":"editCommandParser -[USER_COLOR]-\u003e editCommandParser : :EditCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":"deactivate editCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":"editCommandParser -[USER_COLOR]-\u003e addressBookParser : :EditCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":"deactivate editCommandParser","lastModifiedDate":"2024-03-22"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":"addressBookParser -[USER_COLOR]-\u003e logicManager : :EditCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":"deactivate addressBookParser","lastModifiedDate":"2024-03-22"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":"logicManager -[USER_COLOR]\u003e editCommand : execute(...)","lastModifiedDate":"2024-03-22"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":"activate editCommand UI_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":45,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":"editCommand -[USER_COLOR]\u003e commandResult ** : CommandResult()","lastModifiedDate":"2024-03-22"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":"activate commandResult LOGIC_COLOR","lastModifiedDate":"2024-03-22"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":"commandResult -[USER_COLOR]-\u003e editCommand : :CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":"deactivate commandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":51,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":"editCommand -[USER_COLOR]-\u003e logicManager: :CommandResult","lastModifiedDate":"2024-03-22"},{"lineNumber":53,"author":{"gitId":"brennalaurentan"},"content":"deactivate editCommand","lastModifiedDate":"2024-03-22"},{"lineNumber":54,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":55,"author":{"gitId":"brennalaurentan"},"content":"ref over logicManager, ui : process command result","lastModifiedDate":"2024-03-22"},{"lineNumber":56,"author":{"gitId":"brennalaurentan"},"content":"deactivate logicManager","lastModifiedDate":"2024-03-22"},{"lineNumber":57,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":58,"author":{"gitId":"triciiaaa"},"content":"ui -[USER_COLOR]-\u003e user : \"Edited Person: ...\"","lastModifiedDate":"2024-03-22"},{"lineNumber":59,"author":{"gitId":"brennalaurentan"},"content":"deactivate ui","lastModifiedDate":"2024-03-22"},{"lineNumber":60,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-22"},{"lineNumber":61,"author":{"gitId":"brennalaurentan"},"content":"@enduml","lastModifiedDate":"2024-03-22"}],"authorContributionMap":{"triciiaaa":4,"brennalaurentan":57}},{"path":"docs/diagrams/MarkAttendance.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"casaarlai"},"content":"@startuml","lastModifiedDate":"2024-03-24"},{"lineNumber":2,"author":{"gitId":"casaarlai"},"content":"!include style.puml","lastModifiedDate":"2024-03-24"},{"lineNumber":3,"author":{"gitId":"casaarlai"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2024-03-24"},{"lineNumber":4,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":5,"author":{"gitId":"casaarlai"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":6,"author":{"gitId":"casaarlai"},"content":"Participant \":Ui\" as ui UI_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":7,"author":{"gitId":"casaarlai"},"content":"Participant \"logicManager:LogicManager\" as logicManager LOGIC_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":8,"author":{"gitId":"casaarlai"},"content":"Participant \"addressBookParser:AddressBookParser\" as addressBookParser MODEL_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":9,"author":{"gitId":"casaarlai"},"content":"Participant \":AttendanceCommandParser\" as attendanceCommandParser STORAGE_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":10,"author":{"gitId":"casaarlai"},"content":"Participant \":AttendanceCommand\" as attendanceCommand UI_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":11,"author":{"gitId":"casaarlai"},"content":"Participant \":CommandResult\" as commandResult LOGIC_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":12,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":13,"author":{"gitId":"casaarlai"},"content":"user -[USER_COLOR]\u003e ui : \"att 1 2 d/2024-02-12\"","lastModifiedDate":"2024-03-24"},{"lineNumber":14,"author":{"gitId":"casaarlai"},"content":"activate ui UI_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":15,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":16,"author":{"gitId":"casaarlai"},"content":"ref over logicManager, ui : process user input","lastModifiedDate":"2024-03-24"},{"lineNumber":17,"author":{"gitId":"casaarlai"},"content":"activate logicManager LOGIC_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":18,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":19,"author":{"gitId":"casaarlai"},"content":"logicManager -[USER_COLOR]\u003e addressBookParser : parseCommand(\"att 1 2 d/2024-02-12\")","lastModifiedDate":"2024-03-24"},{"lineNumber":20,"author":{"gitId":"casaarlai"},"content":"activate addressBookParser MODEL_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":21,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":22,"author":{"gitId":"casaarlai"},"content":"addressBookParser -[USER_COLOR]\u003e attendanceCommandParser ** : AttendanceCommandParser()","lastModifiedDate":"2024-03-24"},{"lineNumber":23,"author":{"gitId":"casaarlai"},"content":"activate attendanceCommandParser STORAGE_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":24,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":25,"author":{"gitId":"casaarlai"},"content":"attendanceCommandParser -[USER_COLOR]\u003e attendanceCommandParser : parse(...)","lastModifiedDate":"2024-03-24"},{"lineNumber":26,"author":{"gitId":"casaarlai"},"content":"activate attendanceCommandParser STORAGE_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":27,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":28,"author":{"gitId":"casaarlai"},"content":"attendanceCommandParser -[USER_COLOR]\u003e attendanceCommand ** : AttendanceCommand(...)","lastModifiedDate":"2024-03-24"},{"lineNumber":29,"author":{"gitId":"casaarlai"},"content":"activate attendanceCommand UI_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":30,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":31,"author":{"gitId":"casaarlai"},"content":"attendanceCommand -[USER_COLOR]-\u003e attendanceCommandParser : :AttendanceCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":32,"author":{"gitId":"casaarlai"},"content":"deactivate attendanceCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":33,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":34,"author":{"gitId":"casaarlai"},"content":"attendanceCommandParser -[USER_COLOR]-\u003e attendanceCommandParser : :AttendanceCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":35,"author":{"gitId":"casaarlai"},"content":"deactivate attendanceCommandParser","lastModifiedDate":"2024-03-24"},{"lineNumber":36,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":37,"author":{"gitId":"casaarlai"},"content":"attendanceCommandParser -[USER_COLOR]-\u003e addressBookParser : :AttendanceCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":38,"author":{"gitId":"casaarlai"},"content":"deactivate attendanceCommandParser","lastModifiedDate":"2024-03-24"},{"lineNumber":39,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":40,"author":{"gitId":"casaarlai"},"content":"addressBookParser -[USER_COLOR]-\u003e logicManager : :AttendanceCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":41,"author":{"gitId":"casaarlai"},"content":"deactivate addressBookParser","lastModifiedDate":"2024-03-24"},{"lineNumber":42,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":43,"author":{"gitId":"casaarlai"},"content":"logicManager -[USER_COLOR]\u003e attendanceCommand : execute(...)","lastModifiedDate":"2024-03-24"},{"lineNumber":44,"author":{"gitId":"casaarlai"},"content":"activate attendanceCommand UI_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":45,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":46,"author":{"gitId":"casaarlai"},"content":"attendanceCommand -[USER_COLOR]\u003e commandResult ** : CommandResult()","lastModifiedDate":"2024-03-24"},{"lineNumber":47,"author":{"gitId":"casaarlai"},"content":"activate commandResult LOGIC_COLOR","lastModifiedDate":"2024-03-24"},{"lineNumber":48,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":49,"author":{"gitId":"casaarlai"},"content":"commandResult -[USER_COLOR]-\u003e attendanceCommand : :CommandResult","lastModifiedDate":"2024-03-24"},{"lineNumber":50,"author":{"gitId":"casaarlai"},"content":"deactivate commandResult","lastModifiedDate":"2024-03-24"},{"lineNumber":51,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":52,"author":{"gitId":"casaarlai"},"content":"attendanceCommand -[USER_COLOR]-\u003e logicManager: :CommandResult","lastModifiedDate":"2024-03-24"},{"lineNumber":53,"author":{"gitId":"casaarlai"},"content":"deactivate attendanceCommand","lastModifiedDate":"2024-03-24"},{"lineNumber":54,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":55,"author":{"gitId":"casaarlai"},"content":"ref over logicManager, ui : process command result","lastModifiedDate":"2024-03-24"},{"lineNumber":56,"author":{"gitId":"casaarlai"},"content":"deactivate logicManager","lastModifiedDate":"2024-03-24"},{"lineNumber":57,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":58,"author":{"gitId":"casaarlai"},"content":"ui -[USER_COLOR]-\u003e user : \"Edited Persons: [...]\"","lastModifiedDate":"2024-03-24"},{"lineNumber":59,"author":{"gitId":"casaarlai"},"content":"deactivate ui","lastModifiedDate":"2024-03-24"},{"lineNumber":60,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-24"},{"lineNumber":61,"author":{"gitId":"casaarlai"},"content":"@enduml","lastModifiedDate":"2024-03-24"}],"authorContributionMap":{"casaarlai":61}},{"path":"src/main/java/seedu/address/Main.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2019-02-08"},{"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":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-27"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2019-02-08"},{"lineNumber":10,"author":{"gitId":"-"},"content":" * The main entry point to the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":11,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * This is a workaround for the following error when MainApp is made the","lastModifiedDate":"2019-02-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" * entry point of the application:","lastModifiedDate":"2019-02-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Error: JavaFX runtime components are missing, and are required to run this application","lastModifiedDate":"2019-02-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" * The reason is that MainApp extends Application. In that case, the","lastModifiedDate":"2019-02-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * LauncherHelper will check for the javafx.graphics module to be present","lastModifiedDate":"2019-02-08"},{"lineNumber":19,"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":20,"author":{"gitId":"-"},"content":" * find the javafx.graphics module, and so the launch is aborted.","lastModifiedDate":"2019-02-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2019-02-08"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * By having a separate main class (Main) that doesn\u0027t extend Application","lastModifiedDate":"2019-02-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":" * to be the entry point of the application, we avoid this issue.","lastModifiedDate":"2019-02-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class Main {","lastModifiedDate":"2019-02-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static Logger logger \u003d LogsCenter.getLogger(Main.class);","lastModifiedDate":"2023-07-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static void main(String[] args) {","lastModifiedDate":"2019-02-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" // As per https://github.com/openjdk/jfx/blob/master/doc-files/release-notes-16.md","lastModifiedDate":"2023-07-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" // JavaFX 16 (or later) runtime logs a warning at startup if JavaFX classes are loaded from","lastModifiedDate":"2023-07-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" // the classpath instead of a module.","lastModifiedDate":"2023-07-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Our application does not use Java modules yet. Even if it did, modules are ignored when","lastModifiedDate":"2023-07-27"},{"lineNumber":34,"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":35,"author":{"gitId":"-"},"content":" // The warning however, can be safely ignored. Thus, the following log informs","lastModifiedDate":"2023-07-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" // the user (if looking at the log output) that the said warning appearing in the log","lastModifiedDate":"2023-07-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" // can be ignored.","lastModifiedDate":"2023-07-27"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":" logger.warning(\"The warning about Unsupported JavaFX configuration below can be ignored.\");","lastModifiedDate":"2023-07-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" Application.launch(MainApp.class, args);","lastModifiedDate":"2019-02-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-02-08"}],"authorContributionMap":{"-":41,"brennalaurentan":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":"-"},"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":"brennalaurentan"},"content":" .append(\"; Birthday: \")","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" .append(person.getBirthday())","lastModifiedDate":"2024-03-20"},{"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":{"-":51,"brennalaurentan":2}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY_DATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" + \"[\" + PREFIX_BIRTHDAY_DATE + \"BIRTHDAY] \"","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" + PREFIX_BIRTHDAY_DATE + \"2000-01-02 \"","lastModifiedDate":"2024-03-20"},{"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":"-"},"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":{"-":84,"brennalaurentan":3}},{"path":"src/main/java/seedu/address/logic/commands/AttendanceCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"casaarlai"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"casaarlai"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"casaarlai"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"casaarlai"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"casaarlai"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"casaarlai"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"casaarlai"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"casaarlai"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"casaarlai"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"casaarlai"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"casaarlai"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"casaarlai"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"casaarlai"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"casaarlai"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"casaarlai"},"content":" * Marks a person\u0027s attendance in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"casaarlai"},"content":"public class AttendanceCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"casaarlai"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Indexes: %1$d, Date: %2$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"casaarlai"},"content":" public static final String COMMAND_WORD \u003d \"att\";","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"casaarlai"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"casaarlai"},"content":" + \": Adds the attendance date to the persons identified \"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"casaarlai"},"content":" + \"by the index numbers used in the last person listing. \\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"casaarlai"},"content":" + \"Parameters: INDEXES (must be positive integers separated by a whitespace) \"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"casaarlai"},"content":" + \"d/ [DATE]\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"casaarlai"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 2 \"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"casaarlai"},"content":" + \"d/ 2024-02-02\";","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"casaarlai"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Persons: %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"casaarlai"},"content":" public static final String MESSAGE_DUPLICATE_ATTENDANCE \u003d \"This attendance has already been marked for %1$s\";","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"casaarlai"},"content":" private final Set\u003cIndex\u003e indexes;","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"casaarlai"},"content":" private final LocalDate date;","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"casaarlai"},"content":" * Creates an AttendanceCommand to add the specified {@code date} to the persons identified by {@code indexes}","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"casaarlai"},"content":" public AttendanceCommand(Set\u003cIndex\u003e indexes, LocalDate date) {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"casaarlai"},"content":" requireAllNonNull(indexes, date);","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"casaarlai"},"content":" this.indexes \u003d indexes;","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"casaarlai"},"content":" this.date \u003d date;","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"casaarlai"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"casaarlai"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"casaarlai"},"content":" Set\u003cName\u003e editedNames \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"casaarlai"},"content":" for (Index index : this.indexes) {","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"casaarlai"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"casaarlai"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-16"},{"lineNumber":63,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"casaarlai"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"casaarlai"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"casaarlai"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"casaarlai"},"content":" Attendance attendance \u003d new Attendance(date);","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"casaarlai"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, attendance);","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"casaarlai"},"content":" editedNames.add(editedPerson.getName());","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"casaarlai"},"content":" if (personToEdit.getAttendances().contains(attendance)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"casaarlai"},"content":" throw new CommandException(String.format(MESSAGE_DUPLICATE_ATTENDANCE, personToEdit.getName()));","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"casaarlai"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"casaarlai"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"casaarlai"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedNames));","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"casaarlai"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"casaarlai"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"casaarlai"},"content":" private static Person createEditedPerson(Person personToEdit, Attendance attendance) {","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"casaarlai"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"casaarlai"},"content":" Name updatedName \u003d personToEdit.getName();","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"casaarlai"},"content":" Phone updatedPhone \u003d personToEdit.getPhone();","lastModifiedDate":"2024-03-16"},{"lineNumber":93,"author":{"gitId":"casaarlai"},"content":" Email updatedEmail \u003d personToEdit.getEmail();","lastModifiedDate":"2024-03-16"},{"lineNumber":94,"author":{"gitId":"casaarlai"},"content":" Address updatedAddress \u003d personToEdit.getAddress();","lastModifiedDate":"2024-03-16"},{"lineNumber":95,"author":{"gitId":"brennalaurentan"},"content":" Birthday updatedBirthday \u003d personToEdit.getBirthday();","lastModifiedDate":"2024-03-20"},{"lineNumber":96,"author":{"gitId":"casaarlai"},"content":" Set\u003cTag\u003e updatedTags \u003d personToEdit.getTags();","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"casaarlai"},"content":" Set\u003cAttendance\u003e updatedAttendances \u003d new HashSet\u003c\u003e(personToEdit.getAttendances());","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"casaarlai"},"content":" updatedAttendances.add(attendance);","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"brennalaurentan"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-20"},{"lineNumber":101,"author":{"gitId":"brennalaurentan"},"content":" updatedBirthday, updatedTags, updatedAttendances);","lastModifiedDate":"2024-03-20"},{"lineNumber":102,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"casaarlai"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"casaarlai"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"casaarlai"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"casaarlai"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"casaarlai"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"casaarlai"},"content":" if (!(other instanceof AttendanceCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":112,"author":{"gitId":"casaarlai"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":113,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":114,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":115,"author":{"gitId":"casaarlai"},"content":" AttendanceCommand e \u003d (AttendanceCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":116,"author":{"gitId":"casaarlai"},"content":" return indexes.equals(e.indexes)","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"casaarlai"},"content":" \u0026\u0026 date.equals(e.date);","lastModifiedDate":"2024-03-16"},{"lineNumber":118,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":119,"author":{"gitId":"casaarlai"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"casaarlai":110,"brennalaurentan":9}},{"path":"src/main/java/seedu/address/logic/commands/BirthdayCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-15"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-15"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"import java.util.List;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":"/**","lastModifiedDate":"2024-03-15"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" * Adds the birthday to a new contact in the address book, or","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" * Changes the birthday of an existing person in the address book","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":"public class BirthdayCommand extends Command {","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":" public static final String COMMAND_WORD \u003d \"birthday\";","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Index: %1$d, Birthday: %2$s\";","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":" + \": Edits the remark of the person identified \"","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" + \"Existing birthday date will be overwritten by the input.\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":" + \"b/[BIRTHDAY in YYYY-MM-DD]\\n\"","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":" + \"b/2000-02-02\";","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" public static final String MESSAGE_ADD_BIRTHDAY_SUCCESS \u003d \"Added birthday to Person: %1$s\";","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" public static final String MESSAGE_DELETE_BIRTHDAY_SUCCESS \u003d \"Removed birthday from Person: %1$s\";","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" private final Index index;","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" private final Birthday birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" * @param index of the person in the filtered person list to edit the remark","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" * @param birthday of the person to be updated to","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":" public BirthdayCommand(Index index, Birthday birthday) {","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":" requireAllNonNull(index, birthday);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"brennalaurentan"},"content":" this.index \u003d index;","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":" this.birthday \u003d birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"brennalaurentan"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"brennalaurentan"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"brennalaurentan"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":55,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":56,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"brennalaurentan"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-03-20"},{"lineNumber":58,"author":{"gitId":"brennalaurentan"},"content":" Person editedPerson \u003d new Person(","lastModifiedDate":"2024-03-20"},{"lineNumber":59,"author":{"gitId":"brennalaurentan"},"content":" personToEdit.getName(), personToEdit.getPhone(), personToEdit.getEmail(),","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"brennalaurentan"},"content":" personToEdit.getAddress(), personToEdit.getBirthday(), personToEdit.getTags(),","lastModifiedDate":"2024-03-20"},{"lineNumber":61,"author":{"gitId":"brennalaurentan"},"content":" personToEdit.getAttendances());","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"brennalaurentan"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"brennalaurentan"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-20"},{"lineNumber":65,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"brennalaurentan"},"content":" return new CommandResult(generateSuccessMessage(editedPerson));","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"brennalaurentan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":70,"author":{"gitId":"brennalaurentan"},"content":" * Generates a command execution success message based on whether","lastModifiedDate":"2024-03-20"},{"lineNumber":71,"author":{"gitId":"brennalaurentan"},"content":" * the remark is added to or removed from","lastModifiedDate":"2024-03-20"},{"lineNumber":72,"author":{"gitId":"brennalaurentan"},"content":" * {@code personToEdit}.","lastModifiedDate":"2024-03-20"},{"lineNumber":73,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":74,"author":{"gitId":"brennalaurentan"},"content":" private String generateSuccessMessage(Person personToEdit) {","lastModifiedDate":"2024-03-20"},{"lineNumber":75,"author":{"gitId":"brennalaurentan"},"content":" String message \u003d !birthday.value.isEmpty() ? MESSAGE_ADD_BIRTHDAY_SUCCESS : MESSAGE_DELETE_BIRTHDAY_SUCCESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":76,"author":{"gitId":"brennalaurentan"},"content":" return String.format(message, personToEdit);","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":79,"author":{"gitId":"brennalaurentan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":80,"author":{"gitId":"brennalaurentan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":81,"author":{"gitId":"brennalaurentan"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-20"},{"lineNumber":82,"author":{"gitId":"brennalaurentan"},"content":" return true;","lastModifiedDate":"2024-03-20"},{"lineNumber":83,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":84,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":85,"author":{"gitId":"brennalaurentan"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"brennalaurentan"},"content":" if (!(other instanceof BirthdayCommand)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"brennalaurentan"},"content":" return false;","lastModifiedDate":"2024-03-20"},{"lineNumber":88,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":89,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":90,"author":{"gitId":"brennalaurentan"},"content":" BirthdayCommand e \u003d (BirthdayCommand) other;","lastModifiedDate":"2024-03-20"},{"lineNumber":91,"author":{"gitId":"brennalaurentan"},"content":" return index.equals(e.index)","lastModifiedDate":"2024-03-20"},{"lineNumber":92,"author":{"gitId":"brennalaurentan"},"content":" \u0026\u0026 birthday.equals(e.birthday);","lastModifiedDate":"2024-03-20"},{"lineNumber":93,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-03-15"}],"authorContributionMap":{"brennalaurentan":95}},{"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":"brennalaurentan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY_DATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-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":"-"},"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":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"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":"brennalaurentan"},"content":" + \"[\" + PREFIX_BIRTHDAY_DATE + \"BIRTHDAY] \"","lastModifiedDate":"2024-03-20"},{"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":"2017-06-21"},{"lineNumber":105,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":106,"author":{"gitId":"brennalaurentan"},"content":" //Birthday updatedBirthday \u003d personToEdit.getBirthday(); // edit command does not allow editing birthday ?","lastModifiedDate":"2024-03-20"},{"lineNumber":107,"author":{"gitId":"brennalaurentan"},"content":" Birthday updatedBirthday \u003d editPersonDescriptor.getBirthday().orElse(personToEdit.getBirthday());","lastModifiedDate":"2024-03-20"},{"lineNumber":108,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":109,"author":{"gitId":"casaarlai"},"content":" Set\u003cAttendance\u003e updatedAttendances \u003d editPersonDescriptor.getAttendances().orElse(","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"casaarlai"},"content":" personToEdit.getAttendances());","lastModifiedDate":"2024-03-16"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":112,"author":{"gitId":"brennalaurentan"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"brennalaurentan"},"content":" updatedBirthday, updatedTags, updatedAttendances);","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" private Birthday birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21"},{"lineNumber":151,"author":{"gitId":"casaarlai"},"content":" private Set\u003cAttendance\u003e attendances;","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" setBirthday(toCopy.birthday);","lastModifiedDate":"2024-03-20"},{"lineNumber":165,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11"},{"lineNumber":166,"author":{"gitId":"casaarlai"},"content":" setAttendances(toCopy.attendances);","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, birthday, tags);","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" public void setBirthday(Birthday birthday) {","lastModifiedDate":"2024-03-20"},{"lineNumber":208,"author":{"gitId":"brennalaurentan"},"content":" this.birthday \u003d birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":209,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":210,"author":{"gitId":"brennalaurentan"},"content":" public Optional\u003cBirthday\u003e getBirthday() {","lastModifiedDate":"2024-03-20"},{"lineNumber":211,"author":{"gitId":"brennalaurentan"},"content":" return Optional.ofNullable(birthday);","lastModifiedDate":"2024-03-20"},{"lineNumber":212,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":214,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":215,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11"},{"lineNumber":216,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11"},{"lineNumber":217,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":218,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21"},{"lineNumber":219,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11"},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":222,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":223,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11"},{"lineNumber":224,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11"},{"lineNumber":226,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11"},{"lineNumber":227,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":228,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11"},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":231,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":232,"author":{"gitId":"casaarlai"},"content":" * Sets {@code attendances} to this object\u0027s {@code attendances}.","lastModifiedDate":"2024-03-16"},{"lineNumber":233,"author":{"gitId":"casaarlai"},"content":" * A defensive copy of {@code attendances} is used internally.","lastModifiedDate":"2024-03-16"},{"lineNumber":234,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":235,"author":{"gitId":"casaarlai"},"content":" public void setAttendances(Set\u003cAttendance\u003e attendances) {","lastModifiedDate":"2024-03-16"},{"lineNumber":236,"author":{"gitId":"casaarlai"},"content":" this.attendances \u003d (attendances !\u003d null) ? new HashSet\u003c\u003e(attendances) : null;","lastModifiedDate":"2024-03-16"},{"lineNumber":237,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":238,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":239,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":240,"author":{"gitId":"casaarlai"},"content":" * Returns an unmodifiable attendance set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-16"},{"lineNumber":241,"author":{"gitId":"casaarlai"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-16"},{"lineNumber":242,"author":{"gitId":"casaarlai"},"content":" * Returns {@code Optional#empty()} if {@code attendances} is null.","lastModifiedDate":"2024-03-16"},{"lineNumber":243,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":244,"author":{"gitId":"casaarlai"},"content":" public Optional\u003cSet\u003cAttendance\u003e\u003e getAttendances() {","lastModifiedDate":"2024-03-16"},{"lineNumber":245,"author":{"gitId":"casaarlai"},"content":" return (attendances !\u003d null) ? Optional.of(Collections.unmodifiableSet(attendances)) : Optional.empty();","lastModifiedDate":"2024-03-16"},{"lineNumber":246,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":247,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":248,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":249,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":250,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":251,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":252,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":254,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":255,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":256,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":259,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":260,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":261,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":262,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":263,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":264,"author":{"gitId":"brennalaurentan"},"content":" \u0026\u0026 Objects.equals(birthday, otherEditPersonDescriptor.birthday)","lastModifiedDate":"2024-03-20"},{"lineNumber":265,"author":{"gitId":"casaarlai"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-03-16"},{"lineNumber":266,"author":{"gitId":"casaarlai"},"content":" \u0026\u0026 Objects.equals(attendances, otherEditPersonDescriptor.attendances);","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":276,"author":{"gitId":"brennalaurentan"},"content":" .add(\"birthday\", birthday)","lastModifiedDate":"2024-03-20"},{"lineNumber":277,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":278,"author":{"gitId":"casaarlai"},"content":" .add(\"attendances\", attendances)","lastModifiedDate":"2024-03-16"},{"lineNumber":279,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"casaarlai":25,"-":239,"brennalaurentan":18}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05"},{"lineNumber":5,"author":{"gitId":"casaarlai"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ATTENDANCE;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY_DATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":13,"author":{"gitId":"-"},"content":"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":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"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":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05"},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05"},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05"},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" PREFIX_ADDRESS, PREFIX_BIRTHDAY_DATE, PREFIX_TAG);","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" PREFIX_ADDRESS, PREFIX_BIRTHDAY_DATE);","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":" Birthday birthday \u003d ParserUtil.parseBirthday(argMultimap.getOptionalBirthday(PREFIX_BIRTHDAY_DATE).get());","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17"},{"lineNumber":54,"author":{"gitId":"casaarlai"},"content":" Set\u003cAttendance\u003e attendances \u003d ParserUtil.parseAttendances(argMultimap.getAllValues(PREFIX_ATTENDANCE));","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":56,"author":{"gitId":"brennalaurentan"},"content":" Person person \u003d new Person(name, phone, email, address, birthday, tagList, attendances);","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-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":{"casaarlai":3,"-":58,"brennalaurentan":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":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.logic.commands.AttendanceCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.logic.commands.BirthdayCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","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":"-"},"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":"casaarlai"},"content":" case AttendanceCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"casaarlai"},"content":" return new AttendanceCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"brennalaurentan"},"content":" case BirthdayCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"brennalaurentan"},"content":" return new BirthdayCommandParser().parse(arguments);","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"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":{"casaarlai":3,"-":86,"brennalaurentan":5}},{"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":"brennalaurentan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" public Optional\u003cString\u003e getOptionalBirthday(Prefix prefix) {","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2024-03-20"},{"lineNumber":51,"author":{"gitId":"brennalaurentan"},"content":" return values.isEmpty() ? Optional.of(\"9999-99-99\") : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":53,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08"},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","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":"}","lastModifiedDate":"2017-03-08"}],"authorContributionMap":{"-":78,"brennalaurentan":8}},{"path":"src/main/java/seedu/address/logic/parser/AttendanceCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"casaarlai"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"casaarlai"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"casaarlai"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"casaarlai"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ATTENDANCE_DATE;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"casaarlai"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"casaarlai"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"casaarlai"},"content":"import java.util.List;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"casaarlai"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"casaarlai"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"casaarlai"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"casaarlai"},"content":"import seedu.address.logic.commands.AttendanceCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"casaarlai"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"casaarlai"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"casaarlai"},"content":" * Parses input arguments and creates a new AttendanceCommand object","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"casaarlai"},"content":"public class AttendanceCommandParser implements Parser\u003cAttendanceCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"casaarlai"},"content":" * Parses the given {@code String} of arguments in the context of the AttendanceCommand","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"casaarlai"},"content":" * and returns a AttendanceCommand object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"casaarlai"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"casaarlai"},"content":" public AttendanceCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"casaarlai"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"casaarlai"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"casaarlai"},"content":" PREFIX_ATTENDANCE_DATE);","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"casaarlai"},"content":" Set\u003cIndex\u003e indexes;","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"casaarlai"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"casaarlai"},"content":" indexes \u003d ParserUtil.parseIndexes(List.of(argMultimap.getPreamble().split(\" \")));","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"casaarlai"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"casaarlai"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"casaarlai"},"content":" AttendanceCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"casaarlai"},"content":" LocalDate date \u003d LocalDate.parse(argMultimap.getValue(PREFIX_ATTENDANCE_DATE).orElse(\"\"),","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"casaarlai"},"content":" DateTimeFormatter.ofPattern(\"yyyy-MM-dd\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"casaarlai"},"content":" return new AttendanceCommand(indexes, date);","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"casaarlai"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"casaarlai":47}},{"path":"src/main/java/seedu/address/logic/parser/BirthdayCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY_DATE;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.logic.commands.BirthdayCommand;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" * Parses input arguments and creates a new BirthdayCommand object","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":"public class BirthdayCommandParser implements Parser\u003cBirthdayCommand\u003e {","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" * Parses the given {@code String} of arguments in the context of the {@code BirthdayCommand}","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":" * and returns a {@code BirthdayCommand} object for execution.","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" public BirthdayCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":" PREFIX_BIRTHDAY_DATE);","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" Index index;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" try {","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" BirthdayCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" String birthday \u003d argMultimap.getValue(PREFIX_BIRTHDAY_DATE).orElse(\"\");","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":" return new BirthdayCommand(index, new Birthday(birthday));","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"brennalaurentan":39}},{"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":"casaarlai"},"content":" public static final Prefix PREFIX_ATTENDANCE \u003d new Prefix(\"att/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"casaarlai"},"content":" public static final Prefix PREFIX_ATTENDANCE_DATE \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" public static final Prefix PREFIX_BIRTHDAY_DATE \u003d new Prefix(\"b/\");","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"casaarlai":2,"-":15,"brennalaurentan":1}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ATTENDANCE;","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY_DATE;","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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-03-20"},{"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":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"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":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":38,"author":{"gitId":"casaarlai"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" PREFIX_BIRTHDAY_DATE, PREFIX_TAG, PREFIX_ATTENDANCE);","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":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"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":"brennalaurentan"},"content":" if (argMultimap.getValue(PREFIX_BIRTHDAY_DATE).isPresent()) {","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"brennalaurentan"},"content":" editPersonDescriptor.setBirthday(ParserUtil.parseBirthday(argMultimap","lastModifiedDate":"2024-03-20"},{"lineNumber":67,"author":{"gitId":"brennalaurentan"},"content":" .getValue(PREFIX_BIRTHDAY_DATE).get()));","lastModifiedDate":"2024-03-20"},{"lineNumber":68,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21"},{"lineNumber":70,"author":{"gitId":"casaarlai"},"content":" parseAttendancesForEdit(argMultimap.getAllValues(PREFIX_ATTENDANCE))","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"casaarlai"},"content":" .ifPresent(editPersonDescriptor::setAttendances);","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26"},{"lineNumber":81,"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":82,"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":83,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07"},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":85,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":91,"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":92,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":95,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":96,"author":{"gitId":"casaarlai"},"content":" * Parses {@code Collection\u003cString\u003e attendances} into a {@code Set\u003cAttendance\u003e} if {@code attendances} is non-empty.","lastModifiedDate":"2024-03-16"},{"lineNumber":97,"author":{"gitId":"casaarlai"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-03-16"},{"lineNumber":98,"author":{"gitId":"casaarlai"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2024-03-16"},{"lineNumber":99,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":100,"author":{"gitId":"casaarlai"},"content":" private Optional\u003cSet\u003cAttendance\u003e\u003e parseAttendancesForEdit(Collection\u003cString\u003e attendances) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":101,"author":{"gitId":"casaarlai"},"content":" assert attendances !\u003d null;","lastModifiedDate":"2024-03-16"},{"lineNumber":102,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":103,"author":{"gitId":"casaarlai"},"content":" if (attendances.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"casaarlai"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-16"},{"lineNumber":105,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":106,"author":{"gitId":"casaarlai"},"content":" Collection\u003cString\u003e attendanceSet \u003d attendances.size() \u003d\u003d 1 \u0026\u0026 attendances.contains(\"\") ? Collections.emptySet()","lastModifiedDate":"2024-03-16"},{"lineNumber":107,"author":{"gitId":"casaarlai"},"content":" : attendances;","lastModifiedDate":"2024-03-16"},{"lineNumber":108,"author":{"gitId":"casaarlai"},"content":" return Optional.of(ParserUtil.parseAttendances(attendanceSet));","lastModifiedDate":"2024-03-16"},{"lineNumber":109,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"casaarlai":19,"-":84,"brennalaurentan":7}},{"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":"casaarlai"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10"},{"lineNumber":13,"author":{"gitId":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","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.Phone;","lastModifiedDate":"2024-03-20"},{"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":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"casaarlai"},"content":" * Parses {@code indexes} into a {@code Set\u003cIndex\u003e} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"casaarlai"},"content":" * trimmed.","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"casaarlai"},"content":" * @throws ParseException if the specified indexes are invalid (not non-zero unsigned integer).","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"casaarlai"},"content":" public static Set\u003cIndex\u003e parseIndexes(Collection\u003cString\u003e indexes) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"casaarlai"},"content":" requireNonNull(indexes);","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"casaarlai"},"content":" final Set\u003cIndex\u003e indexSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"casaarlai"},"content":" for (String index : indexes) {","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"casaarlai"},"content":" indexSet.add(parseIndex(index));","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"casaarlai"},"content":" return indexSet;","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29"},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30"},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","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 phone} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","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 address} into an {@code Address}.","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 address} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","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 email} into an {@code Email}.","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 email} is invalid.","lastModifiedDate":"2018-07-10"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10"},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30"},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30"},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30"},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30"},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","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":"brennalaurentan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"brennalaurentan"},"content":" * Parses a {@code String birthday} into an {@code Birthday}.","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"brennalaurentan"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"brennalaurentan"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"brennalaurentan"},"content":" * @throws ParseException if the given {@code birthday} is invalid.","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"brennalaurentan"},"content":" public static Birthday parseBirthday(String birthday) throws ParseException {","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"brennalaurentan"},"content":" requireNonNull(birthday);","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"brennalaurentan"},"content":" String trimmedBirthday \u003d birthday.trim();","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"brennalaurentan"},"content":" if (!Birthday.isValidBirthday(trimmedBirthday)) {","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"brennalaurentan"},"content":" throw new ParseException(Birthday.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"brennalaurentan"},"content":" return new Birthday(trimmedBirthday);","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"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":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":157,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":158,"author":{"gitId":"casaarlai"},"content":" * Parses a {@code String attendance} into an {@code Attendance}.","lastModifiedDate":"2024-03-16"},{"lineNumber":159,"author":{"gitId":"casaarlai"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-16"},{"lineNumber":160,"author":{"gitId":"casaarlai"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":161,"author":{"gitId":"casaarlai"},"content":" * @throws ParseException if the given {@code attendance} is invalid.","lastModifiedDate":"2024-03-16"},{"lineNumber":162,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":163,"author":{"gitId":"casaarlai"},"content":" public static Attendance parseAttendance(String attendance) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":164,"author":{"gitId":"casaarlai"},"content":" requireNonNull(attendance);","lastModifiedDate":"2024-03-16"},{"lineNumber":165,"author":{"gitId":"casaarlai"},"content":" String trimmedAttendance \u003d attendance.trim();","lastModifiedDate":"2024-03-16"},{"lineNumber":166,"author":{"gitId":"casaarlai"},"content":" if (!Attendance.isValidAttendanceDate(trimmedAttendance)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":167,"author":{"gitId":"casaarlai"},"content":" throw new ParseException(Attendance.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":168,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":169,"author":{"gitId":"casaarlai"},"content":" return new Attendance(LocalDate.parse(trimmedAttendance));","lastModifiedDate":"2024-03-16"},{"lineNumber":170,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":171,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":172,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":173,"author":{"gitId":"casaarlai"},"content":" * Parses {@code Collection\u003cString\u003e attendances} into a {@code Set\u003cAttendance\u003e}.","lastModifiedDate":"2024-03-16"},{"lineNumber":174,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":175,"author":{"gitId":"casaarlai"},"content":" public static Set\u003cAttendance\u003e parseAttendances(Collection\u003cString\u003e attendances) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":176,"author":{"gitId":"casaarlai"},"content":" requireNonNull(attendances);","lastModifiedDate":"2024-03-16"},{"lineNumber":177,"author":{"gitId":"casaarlai"},"content":" final Set\u003cAttendance\u003e attendanceSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-16"},{"lineNumber":178,"author":{"gitId":"casaarlai"},"content":" for (String attendance : attendances) {","lastModifiedDate":"2024-03-16"},{"lineNumber":179,"author":{"gitId":"casaarlai"},"content":" attendanceSet.add(parseAttendance(attendance));","lastModifiedDate":"2024-03-16"},{"lineNumber":180,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":181,"author":{"gitId":"casaarlai"},"content":" return attendanceSet;","lastModifiedDate":"2024-03-16"},{"lineNumber":182,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"casaarlai":43,"-":124,"brennalaurentan":16}},{"path":"src/main/java/seedu/address/model/attendance/Attendance.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"casaarlai"},"content":"package seedu.address.model.attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"casaarlai"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"casaarlai"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"casaarlai"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"casaarlai"},"content":" * Represents an attendance entry in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"casaarlai"},"content":" * Guarantees: immutable;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"casaarlai"},"content":"public class Attendance {","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"casaarlai"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Attendance entry should follow the format YYYY-MM-DD\";","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"casaarlai"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"casaarlai"},"content":" public final LocalDate attendanceDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"casaarlai"},"content":" * Constructs a {@code Attendance}.","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"casaarlai"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"casaarlai"},"content":" * @param attendanceDate A valid attendance date.","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"casaarlai"},"content":" public Attendance(LocalDate attendanceDate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"casaarlai"},"content":" requireNonNull(attendanceDate);","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"casaarlai"},"content":" this.attendanceDate \u003d attendanceDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"casaarlai"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"casaarlai"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"casaarlai"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"casaarlai"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"casaarlai"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"casaarlai"},"content":" if (!(other instanceof Attendance)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"casaarlai"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"casaarlai"},"content":" Attendance otherAttendance \u003d (Attendance) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"casaarlai"},"content":" return attendanceDate.equals(otherAttendance.attendanceDate);","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"casaarlai"},"content":" * Returns true if a given string is a valid attendance date.","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"casaarlai"},"content":" public static boolean isValidAttendanceDate(String test) {","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"casaarlai"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"casaarlai"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"casaarlai"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"casaarlai"},"content":" return attendanceDate.hashCode();","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":54,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"casaarlai"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-03-16"},{"lineNumber":57,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":58,"author":{"gitId":"casaarlai"},"content":" public String toString() {","lastModifiedDate":"2024-03-16"},{"lineNumber":59,"author":{"gitId":"casaarlai"},"content":" return \u0027[\u0027 + attendanceDate.toString() + \u0027]\u0027;","lastModifiedDate":"2024-03-16"},{"lineNumber":60,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":61,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":62,"author":{"gitId":"casaarlai"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"casaarlai":62}},{"path":"src/main/java/seedu/address/model/person/Birthday.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"brennalaurentan"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-03-20"},{"lineNumber":2,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":3,"author":{"gitId":"brennalaurentan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-20"},{"lineNumber":4,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-20"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"/**","lastModifiedDate":"2024-03-20"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":" * Represents a Person\u0027s birthday in the address book.","lastModifiedDate":"2024-03-20"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":10,"author":{"gitId":"brennalaurentan"},"content":"public class Birthday {","lastModifiedDate":"2024-03-20"},{"lineNumber":11,"author":{"gitId":"brennalaurentan"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":" \"Birthday should be in YYYY-MM-DD format\";","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"brennalaurentan"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2}\";","lastModifiedDate":"2024-03-20"},{"lineNumber":14,"author":{"gitId":"brennalaurentan"},"content":" public final String value;","lastModifiedDate":"2024-03-20"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"brennalaurentan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":17,"author":{"gitId":"brennalaurentan"},"content":" * Constructs a {@code Birthday}.","lastModifiedDate":"2024-03-20"},{"lineNumber":18,"author":{"gitId":"brennalaurentan"},"content":" *","lastModifiedDate":"2024-03-20"},{"lineNumber":19,"author":{"gitId":"brennalaurentan"},"content":" * @param birthday A valid birthday.","lastModifiedDate":"2024-03-20"},{"lineNumber":20,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":21,"author":{"gitId":"brennalaurentan"},"content":" public Birthday(String birthday) {","lastModifiedDate":"2024-03-20"},{"lineNumber":22,"author":{"gitId":"brennalaurentan"},"content":" requireNonNull(birthday);","lastModifiedDate":"2024-03-20"},{"lineNumber":23,"author":{"gitId":"brennalaurentan"},"content":" checkArgument(isValidBirthday(birthday), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-20"},{"lineNumber":24,"author":{"gitId":"brennalaurentan"},"content":" this.value \u003d birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":25,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":26,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" * Returns true if a given string is a valid birthday.","lastModifiedDate":"2024-03-20"},{"lineNumber":29,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" public static boolean isValidBirthday(String test) {","lastModifiedDate":"2024-03-20"},{"lineNumber":31,"author":{"gitId":"brennalaurentan"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" public String toString() {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" return value;","lastModifiedDate":"2024-03-20"},{"lineNumber":37,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":38,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-20"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":" return other \u003d\u003d this // short circuit if same object","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":" || (other instanceof Birthday // instanceof handles nulls","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":" \u0026\u0026 value.equals(((Birthday) other).value)); // state check","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":45,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":" @Override","lastModifiedDate":"2024-03-20"},{"lineNumber":47,"author":{"gitId":"brennalaurentan"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-20"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":" return value.hashCode();","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"brennalaurentan"},"content":"}","lastModifiedDate":"2024-03-20"}],"authorContributionMap":{"brennalaurentan":50}},{"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":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20"},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19"},{"lineNumber":27,"author":{"gitId":"brennalaurentan"},"content":" private final Birthday birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":29,"author":{"gitId":"casaarlai"},"content":" private final Set\u003cAttendance\u003e attendances \u003d new HashSet\u003c\u003e();","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":"brennalaurentan"},"content":" public Person(Name name, Phone phone, Email email, Address address, Birthday birthday,","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"brennalaurentan"},"content":" Set\u003cTag\u003e tags, Set\u003cAttendance\u003e attendances) {","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"brennalaurentan"},"content":" requireAllNonNull(name, phone, email, address, birthday, tags, attendances);","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" this.birthday \u003d birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":43,"author":{"gitId":"casaarlai"},"content":" this.attendances.addAll(attendances);","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":"-"},"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":"brennalaurentan"},"content":" public Birthday getBirthday() {","lastModifiedDate":"2024-03-20"},{"lineNumber":62,"author":{"gitId":"brennalaurentan"},"content":" return birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":63,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":73,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"casaarlai"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"casaarlai"},"content":" * if modification is attempted.","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"casaarlai"},"content":" public Set\u003cAttendance\u003e getAttendances() {","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"casaarlai"},"content":" return Collections.unmodifiableSet(attendances);","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"brennalaurentan"},"content":" \u0026\u0026 birthday.equals(otherPerson.birthday)","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"casaarlai"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-03-16"},{"lineNumber":117,"author":{"gitId":"casaarlai"},"content":" \u0026\u0026 attendances.equals(otherPerson.attendances);","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":"brennalaurentan"},"content":" return Objects.hash(name, phone, email, address, birthday, tags, attendances);","lastModifiedDate":"2024-03-20"},{"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":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":133,"author":{"gitId":"brennalaurentan"},"content":" .add(\"birthday\", birthday)","lastModifiedDate":"2024-03-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23"},{"lineNumber":135,"author":{"gitId":"casaarlai"},"content":" .add(\"attendances\", attendances)","lastModifiedDate":"2024-03-16"},{"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":{"casaarlai":15,"-":113,"brennalaurentan":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":"casaarlai"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20"},{"lineNumber":10,"author":{"gitId":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20"},{"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":"-"},"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":"brennalaurentan"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), new Birthday(\"2000-02-02\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":27,"author":{"gitId":"casaarlai"},"content":" getTagSet(\"friends\"), getAttendanceSet()),","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new Birthday(\"2000-02-02\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":30,"author":{"gitId":"casaarlai"},"content":" getTagSet(\"colleagues\", \"friends\"), getAttendanceSet()),","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new Birthday(\"2000-02-02\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":33,"author":{"gitId":"casaarlai"},"content":" getTagSet(\"neighbours\"), getAttendanceSet()),","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new Birthday(\"2000-02-02\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":36,"author":{"gitId":"casaarlai"},"content":" getTagSet(\"family\"), getAttendanceSet()),","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), new Birthday(\"2000-02-02\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":39,"author":{"gitId":"casaarlai"},"content":" getTagSet(\"classmates\"), getAttendanceSet()),","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new Birthday(\"2000-02-02\"),","lastModifiedDate":"2024-03-20"},{"lineNumber":42,"author":{"gitId":"casaarlai"},"content":" getTagSet(\"colleagues\"), getAttendanceSet())","lastModifiedDate":"2024-03-16"},{"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":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":64,"author":{"gitId":"casaarlai"},"content":" * Returns an attendance set containing the list of strings given.","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":66,"author":{"gitId":"casaarlai"},"content":" public static Set\u003cAttendance\u003e getAttendanceSet(String... strings) {","lastModifiedDate":"2024-03-16"},{"lineNumber":67,"author":{"gitId":"casaarlai"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2024-03-16"},{"lineNumber":68,"author":{"gitId":"casaarlai"},"content":" .map(LocalDate::parse)","lastModifiedDate":"2024-03-16"},{"lineNumber":69,"author":{"gitId":"casaarlai"},"content":" .map(Attendance::new)","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"casaarlai"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"casaarlai":17,"-":48,"brennalaurentan":7}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedAttendance.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"casaarlai"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"casaarlai"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"casaarlai"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"casaarlai"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"casaarlai"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"casaarlai"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"casaarlai"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"casaarlai"},"content":" * Jackson-friendly version of {@link Tag}.","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"casaarlai"},"content":"class JsonAdaptedAttendance {","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"casaarlai"},"content":" private final String attendanceDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"casaarlai"},"content":" * Constructs a {@code JsonAdaptedAttendance} with the given {@code attendanceDate}.","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"casaarlai"},"content":" @JsonCreator","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"casaarlai"},"content":" public JsonAdaptedAttendance(String attendanceDate) {","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"casaarlai"},"content":" this.attendanceDate \u003d attendanceDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"casaarlai"},"content":" * Converts a given {@code Attendance} into this class for Jackson use.","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"casaarlai"},"content":" public JsonAdaptedAttendance(Attendance source) {","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"casaarlai"},"content":" attendanceDate \u003d source.attendanceDate.toString();","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"casaarlai"},"content":" @JsonValue","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"casaarlai"},"content":" public String getAttendanceDate() {","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"casaarlai"},"content":" return attendanceDate;","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"casaarlai"},"content":" * Converts this Jackson-friendly adapted attendance object into the model\u0027s {@code Attendance} object.","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"casaarlai"},"content":" *","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"casaarlai"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted tag.","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"casaarlai"},"content":" public Attendance toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"casaarlai"},"content":" if (!Attendance.isValidAttendanceDate(attendanceDate)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"casaarlai"},"content":" throw new IllegalValueException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"casaarlai"},"content":" return new Attendance(LocalDate.parse(attendanceDate));","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"casaarlai"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"casaarlai":52}},{"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":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-03-15"},{"lineNumber":15,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-03-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-03-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-03-15"},{"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":"brennalaurentan"},"content":" private final String birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09"},{"lineNumber":35,"author":{"gitId":"casaarlai"},"content":" private final List\u003cJsonAdaptedAttendance\u003e attendances \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" @JsonProperty(\"birthday\") String birthday,","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"casaarlai"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"casaarlai"},"content":" @JsonProperty(\"attendances\") List\u003cJsonAdaptedAttendance\u003e attendances) {","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" this.birthday \u003d birthday;","lastModifiedDate":"2024-03-20"},{"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":"casaarlai"},"content":" if (attendances !\u003d null) {","lastModifiedDate":"2024-03-16"},{"lineNumber":55,"author":{"gitId":"casaarlai"},"content":" this.attendances.addAll(attendances);","lastModifiedDate":"2024-03-16"},{"lineNumber":56,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"brennalaurentan"},"content":" birthday \u003d source.getBirthday().value;","lastModifiedDate":"2024-03-20"},{"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":"casaarlai"},"content":" attendances.addAll(source.getAttendances().stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"casaarlai"},"content":" .map(JsonAdaptedAttendance::new)","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"casaarlai"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-03-16"},{"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":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","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":"casaarlai"},"content":" final List\u003cAttendance\u003e personAttendances \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"casaarlai"},"content":" for (JsonAdaptedAttendance attendance : attendances) {","lastModifiedDate":"2024-03-16"},{"lineNumber":89,"author":{"gitId":"casaarlai"},"content":" personAttendances.add(attendance.toModelType());","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":106,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":114,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":122,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":124,"author":{"gitId":"brennalaurentan"},"content":" if (birthday \u003d\u003d null) {","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"brennalaurentan"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"brennalaurentan"},"content":" Birthday.class.getSimpleName()));","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"brennalaurentan"},"content":" final Birthday modelBirthday \u003d new Birthday(birthday);","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":130,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13"},{"lineNumber":131,"author":{"gitId":"casaarlai"},"content":" final Set\u003cAttendance\u003e modelAttendances \u003d new HashSet\u003c\u003e(personAttendances);","lastModifiedDate":"2024-03-16"},{"lineNumber":132,"author":{"gitId":"brennalaurentan"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelBirthday, modelTags, modelAttendances);","lastModifiedDate":"2024-03-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"casaarlai":16,"-":107,"brennalaurentan":12}},{"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":"triciiaaa"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2324s2-cs2103t-t15-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":{"triciiaaa":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":"casaarlai"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02"},{"lineNumber":5,"author":{"gitId":"triciiaaa"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"triciiaaa"},"content":"import java.util.Map;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24"},{"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":"brennalaurentan"},"content":" * A UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-03-13"},{"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":"triciiaaa"},"content":" private static final Map\u003cInteger, String\u003e tagMap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":28,"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":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":33,"author":{"gitId":"brennalaurentan"},"content":" @FXML","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":" private Label remark;","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"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":"brennalaurentan"},"content":" private Label birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":49,"author":{"gitId":"brennalaurentan"},"content":" @FXML","lastModifiedDate":"2024-03-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18"},{"lineNumber":51,"author":{"gitId":"casaarlai"},"content":" @FXML","lastModifiedDate":"2024-03-16"},{"lineNumber":52,"author":{"gitId":"casaarlai"},"content":" private FlowPane attendances;","lastModifiedDate":"2024-03-16"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":60,"author":{"gitId":"triciiaaa"},"content":" id.setText(displayedIndex + \"\");","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":65,"author":{"gitId":"brennalaurentan"},"content":" birthday.setText(person.getBirthday().value);","lastModifiedDate":"2024-03-20"},{"lineNumber":66,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02"},{"lineNumber":68,"author":{"gitId":"triciiaaa"},"content":" .forEach(tag -\u003e {","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"triciiaaa"},"content":" Label label \u003d new Label(tag.tagName);","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"triciiaaa"},"content":" label.getStyleClass().add(getStyleClassForTag(tag.tagName));","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"triciiaaa"},"content":" tags.getChildren().add(label);","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"triciiaaa"},"content":" });","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"casaarlai"},"content":" person.getAttendances().stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"casaarlai"},"content":" .sorted(Comparator.comparing(attendance -\u003e attendance.attendanceDate))","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"casaarlai"},"content":" .forEach(attendance -\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"casaarlai"},"content":" String formattedDate \u003d attendance.attendanceDate.format(DateTimeFormatter.ofPattern(\"dd-MM-yyyy\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"casaarlai"},"content":" attendances.getChildren().add(new Label(formattedDate));","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"casaarlai"},"content":" });","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":81,"author":{"gitId":"triciiaaa"},"content":" // set a custom tag list to follow style class","lastModifiedDate":"2024-03-18"},{"lineNumber":82,"author":{"gitId":"triciiaaa"},"content":" static {","lastModifiedDate":"2024-03-18"},{"lineNumber":83,"author":{"gitId":"triciiaaa"},"content":" tagMap.put(0, \"tag1\");","lastModifiedDate":"2024-03-18"},{"lineNumber":84,"author":{"gitId":"triciiaaa"},"content":" tagMap.put(1, \"tag2\");","lastModifiedDate":"2024-03-18"},{"lineNumber":85,"author":{"gitId":"triciiaaa"},"content":" tagMap.put(2, \"tag3\");","lastModifiedDate":"2024-03-18"},{"lineNumber":86,"author":{"gitId":"triciiaaa"},"content":" tagMap.put(3, \"tag4\");","lastModifiedDate":"2024-03-18"},{"lineNumber":87,"author":{"gitId":"triciiaaa"},"content":" tagMap.put(4, \"tag5\");","lastModifiedDate":"2024-03-18"},{"lineNumber":88,"author":{"gitId":"triciiaaa"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":89,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":90,"author":{"gitId":"triciiaaa"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":91,"author":{"gitId":"triciiaaa"},"content":" * Retrieves and returns the tag name for custom tag colour.","lastModifiedDate":"2024-03-18"},{"lineNumber":92,"author":{"gitId":"triciiaaa"},"content":" *","lastModifiedDate":"2024-03-18"},{"lineNumber":93,"author":{"gitId":"triciiaaa"},"content":" * @param tagName The name of the tag assigned to the Person.","lastModifiedDate":"2024-03-18"},{"lineNumber":94,"author":{"gitId":"triciiaaa"},"content":" * @return String representation of the hashed tag.","lastModifiedDate":"2024-03-18"},{"lineNumber":95,"author":{"gitId":"triciiaaa"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"triciiaaa"},"content":" private String getStyleClassForTag(String tagName) {","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"triciiaaa"},"content":" int hash \u003d Math.abs(tagName.hashCode()) % 5;","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"triciiaaa"},"content":" return tagMap.get(hash);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"casaarlai":9,"triciiaaa":28,"-":57,"brennalaurentan":6}},{"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":"triciiaaa"},"content":" private static final String ICON_APPLICATION \u003d \"/images/bandbook_single_logo.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":{"triciiaaa":1,"-":87}},{"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":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"triciiaaa"},"content":" background-color: white; /* 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":"-"},"content":".label {","lastModifiedDate":"2016-08-08"},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":8,"author":{"gitId":"triciiaaa"},"content":" -fx-font-family: \"Product Sans Medium\";","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"triciiaaa"},"content":" -fx-opacity: 1;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-font-family: \"Product Sans Medium\";","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-font-family: \"Product Sans\";","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":29,"author":{"gitId":"triciiaaa"},"content":" -fx-font-family: \"Product Sans\";","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08"},{"lineNumber":43,"author":{"gitId":"triciiaaa"},"content":" -fx-base: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"triciiaaa"},"content":" -fx-control-inner-background: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-font-family: \"Product Sans Light\";","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: #F8F8F8;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: #F9FDFF;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-border-color: #89C1DD;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-font-family: \"Product Sans Medium\";","lastModifiedDate":"2024-03-18"},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-font-family: \"Product Sans\";","lastModifiedDate":"2024-03-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02"},{"lineNumber":132,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: #F8F8F8;","lastModifiedDate":"2024-03-18"},{"lineNumber":137,"author":{"gitId":"triciiaaa"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":142,"author":{"gitId":"triciiaaa"},"content":" -fx-border-color: white;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: #ECF7FF;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: #ECF7FF;","lastModifiedDate":"2024-03-18"},{"lineNumber":152,"author":{"gitId":"triciiaaa"},"content":" -fx-font-family: \"Product Sans Light\";","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"triciiaaa"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14"},{"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":"triciiaaa"},"content":" -fx-font-family: \"Product Sans Light\";","lastModifiedDate":"2024-03-18"},{"lineNumber":163,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":170,"author":{"gitId":"triciiaaa"},"content":" -fx-border-color: white;","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"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":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":180,"author":{"gitId":"triciiaaa"},"content":" -fx-border-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":181,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08"},{"lineNumber":182,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":184,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01"},{"lineNumber":185,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #F8F8F8;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"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":"-"},"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":".menu-bar {","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-font-family: \"Product Sans Light\";","lastModifiedDate":"2024-03-18"},{"lineNumber":203,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":".menu:hover,","lastModifiedDate":"2024-03-18"},{"lineNumber":208,"author":{"gitId":"triciiaaa"},"content":".menu:pressed,","lastModifiedDate":"2024-03-18"},{"lineNumber":209,"author":{"gitId":"triciiaaa"},"content":".menu:selected {","lastModifiedDate":"2024-03-18"},{"lineNumber":210,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #C7C7C7;","lastModifiedDate":"2024-03-18"},{"lineNumber":211,"author":{"gitId":"triciiaaa"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":212,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":213,"author":{"gitId":"triciiaaa"},"content":".menu-item:hover,","lastModifiedDate":"2024-03-18"},{"lineNumber":214,"author":{"gitId":"triciiaaa"},"content":".menu-item:pressed,","lastModifiedDate":"2024-03-18"},{"lineNumber":215,"author":{"gitId":"triciiaaa"},"content":".menu-item:selected {","lastModifiedDate":"2024-03-18"},{"lineNumber":216,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #C7C7C7;","lastModifiedDate":"2024-03-18"},{"lineNumber":217,"author":{"gitId":"triciiaaa"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":218,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":219,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08"},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08"},{"lineNumber":221,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":223,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08"},{"lineNumber":224,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08"},{"lineNumber":225,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08"},{"lineNumber":226,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08"},{"lineNumber":227,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":228,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08"},{"lineNumber":229,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08"},{"lineNumber":230,"author":{"gitId":"triciiaaa"},"content":" -fx-border-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":231,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":233,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":234,"author":{"gitId":"triciiaaa"},"content":" -fx-font-family: \"Product Sans\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2024-03-18"},{"lineNumber":235,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08"},{"lineNumber":236,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":240,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":241,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08"},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":246,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: #F8F8F8;","lastModifiedDate":"2024-03-18"},{"lineNumber":247,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":249,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08"},{"lineNumber":250,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08"},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08"},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08"},{"lineNumber":253,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":254,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08"},{"lineNumber":255,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":257,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08"},{"lineNumber":258,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08"},{"lineNumber":259,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":263,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08"},{"lineNumber":265,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":266,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":268,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08"},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08"},{"lineNumber":270,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":272,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08"},{"lineNumber":273,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":274,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":276,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08"},{"lineNumber":277,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":278,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":280,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08"},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08"},{"lineNumber":282,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08"},{"lineNumber":283,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":284,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":286,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08"},{"lineNumber":287,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":288,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":290,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08"},{"lineNumber":291,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08"},{"lineNumber":292,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08"},{"lineNumber":293,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08"},{"lineNumber":295,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":297,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02"},{"lineNumber":298,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #C7C7C7;","lastModifiedDate":"2024-03-18"},{"lineNumber":299,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02"},{"lineNumber":300,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02"},{"lineNumber":301,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15"},{"lineNumber":302,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #595959;","lastModifiedDate":"2024-03-18"},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15"},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15"},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15"},{"lineNumber":308,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15"},{"lineNumber":309,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":311,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15"},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15"},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":315,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15"},{"lineNumber":317,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15"},{"lineNumber":319,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18"},{"lineNumber":320,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18"},{"lineNumber":321,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":323,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08"},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08"},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":326,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":328,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08"},{"lineNumber":329,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08"},{"lineNumber":330,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08"},{"lineNumber":331,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":333,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02"},{"lineNumber":334,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: transparent white transparent white;","lastModifiedDate":"2024-03-18"},{"lineNumber":335,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02"},{"lineNumber":336,"author":{"gitId":"triciiaaa"},"content":" -fx-font-family: \"Product Sans\";","lastModifiedDate":"2024-03-18"},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02"},{"lineNumber":338,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: #595959;","lastModifiedDate":"2024-03-18"},{"lineNumber":339,"author":{"gitId":"triciiaaa"},"content":" -fx-padding: 15 15 15 15; /* top, right, bottom, left */","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-effect: innershadow(gaussian, white, 10, 0, 0, 0);","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" -fx-background-color: #ECF7FF;","lastModifiedDate":"2024-03-18"},{"lineNumber":348,"author":{"gitId":"triciiaaa"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":".tag1 { /*green*/","lastModifiedDate":"2024-03-18"},{"lineNumber":357,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: #52723E;","lastModifiedDate":"2024-03-18"},{"lineNumber":358,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #E7F4DF;","lastModifiedDate":"2024-03-18"},{"lineNumber":359,"author":{"gitId":"triciiaaa"},"content":" -fx-padding: 3 10 3 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":360,"author":{"gitId":"triciiaaa"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":361,"author":{"gitId":"triciiaaa"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":362,"author":{"gitId":"triciiaaa"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-18"},{"lineNumber":363,"author":{"gitId":"triciiaaa"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":364,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":365,"author":{"gitId":"triciiaaa"},"content":".tag2 { /*purple*/","lastModifiedDate":"2024-03-18"},{"lineNumber":366,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: #553B7E;","lastModifiedDate":"2024-03-18"},{"lineNumber":367,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #EFE9FA;","lastModifiedDate":"2024-03-18"},{"lineNumber":368,"author":{"gitId":"triciiaaa"},"content":" -fx-padding: 3 10 3 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":369,"author":{"gitId":"triciiaaa"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":370,"author":{"gitId":"triciiaaa"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":371,"author":{"gitId":"triciiaaa"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-18"},{"lineNumber":372,"author":{"gitId":"triciiaaa"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":373,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":374,"author":{"gitId":"triciiaaa"},"content":".tag3 { /*yellow*/","lastModifiedDate":"2024-03-18"},{"lineNumber":375,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: #7A6D44;","lastModifiedDate":"2024-03-18"},{"lineNumber":376,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #FFF4E4;","lastModifiedDate":"2024-03-18"},{"lineNumber":377,"author":{"gitId":"triciiaaa"},"content":" -fx-padding: 3 10 3 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":378,"author":{"gitId":"triciiaaa"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":379,"author":{"gitId":"triciiaaa"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":380,"author":{"gitId":"triciiaaa"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-18"},{"lineNumber":381,"author":{"gitId":"triciiaaa"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":382,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":383,"author":{"gitId":"triciiaaa"},"content":".tag4 { /*red*/","lastModifiedDate":"2024-03-18"},{"lineNumber":384,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: #5A2121;","lastModifiedDate":"2024-03-18"},{"lineNumber":385,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #FFEAEA;","lastModifiedDate":"2024-03-18"},{"lineNumber":386,"author":{"gitId":"triciiaaa"},"content":" -fx-padding: 3 10 3 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":387,"author":{"gitId":"triciiaaa"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":388,"author":{"gitId":"triciiaaa"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":389,"author":{"gitId":"triciiaaa"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-18"},{"lineNumber":390,"author":{"gitId":"triciiaaa"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":391,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":392,"author":{"gitId":"triciiaaa"},"content":".tag5 { /*blue*/","lastModifiedDate":"2024-03-18"},{"lineNumber":393,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: #1A5F68;","lastModifiedDate":"2024-03-18"},{"lineNumber":394,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #D8EEF1;","lastModifiedDate":"2024-03-18"},{"lineNumber":395,"author":{"gitId":"triciiaaa"},"content":" -fx-padding: 3 10 3 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":396,"author":{"gitId":"triciiaaa"},"content":" -fx-border-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":397,"author":{"gitId":"triciiaaa"},"content":" -fx-background-radius: 10;","lastModifiedDate":"2024-03-18"},{"lineNumber":398,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18"},{"lineNumber":399,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18"},{"lineNumber":400,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":401,"author":{"gitId":"casaarlai"},"content":"#attendances {","lastModifiedDate":"2024-03-16"},{"lineNumber":402,"author":{"gitId":"casaarlai"},"content":" -fx-hgap: 7;","lastModifiedDate":"2024-03-16"},{"lineNumber":403,"author":{"gitId":"casaarlai"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-03-16"},{"lineNumber":404,"author":{"gitId":"casaarlai"},"content":"}","lastModifiedDate":"2024-03-16"},{"lineNumber":405,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":406,"author":{"gitId":"casaarlai"},"content":"#attendances .label {","lastModifiedDate":"2024-03-16"},{"lineNumber":407,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-03-16"},{"lineNumber":408,"author":{"gitId":"casaarlai"},"content":" -fx-background-color: #3e7ee1;","lastModifiedDate":"2024-03-16"},{"lineNumber":409,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-03-16"},{"lineNumber":410,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-03-16"},{"lineNumber":411,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-03-16"},{"lineNumber":412,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-03-16"},{"lineNumber":413,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-03-16"},{"lineNumber":414,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":415,"author":{"gitId":"triciiaaa"},"content":".justify-space-between \u003e Label {","lastModifiedDate":"2024-03-18"},{"lineNumber":416,"author":{"gitId":"triciiaaa"},"content":" -fx-alignment: baseline-left; /* Align label to the left */","lastModifiedDate":"2024-03-18"},{"lineNumber":417,"author":{"gitId":"triciiaaa"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":418,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":419,"author":{"gitId":"triciiaaa"},"content":".justify-space-between \u003e FlowPane {","lastModifiedDate":"2024-03-18"},{"lineNumber":420,"author":{"gitId":"triciiaaa"},"content":" -fx-alignment: baseline-right; /* Align flow pane to the right */","lastModifiedDate":"2024-03-18"},{"lineNumber":421,"author":{"gitId":"triciiaaa"},"content":" -fx-hgrow: ALWAYS;","lastModifiedDate":"2024-03-18"},{"lineNumber":422,"author":{"gitId":"triciiaaa"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"casaarlai":8,"triciiaaa":129,"-":285}},{"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":"triciiaaa"},"content":" -fx-background: white;","lastModifiedDate":"2024-03-18"},{"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":{"triciiaaa":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":"triciiaaa"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"triciiaaa"},"content":" -fx-font-family: \"Product Sans\";","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: #1A5F68;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":7,"author":{"gitId":"-"},"content":"#copyButton {","lastModifiedDate":"2022-01-02"},{"lineNumber":8,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #D8EEF1;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":11,"author":{"gitId":"-"},"content":"#copyButton:hover {","lastModifiedDate":"2022-01-02"},{"lineNumber":12,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #CCE4E8;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":15,"author":{"gitId":"-"},"content":"#copyButton:armed {","lastModifiedDate":"2022-01-02"},{"lineNumber":16,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: #A7D3D9;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2022-01-02"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-01-02"},{"lineNumber":19,"author":{"gitId":"-"},"content":"#helpMessageContainer {","lastModifiedDate":"2022-01-02"},{"lineNumber":20,"author":{"gitId":"triciiaaa"},"content":" -fx-background-color: white;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"triciiaaa"},"content":" -fx-padding: 15 30 15 30;","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"triciiaaa"},"content":"}","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"triciiaaa"},"content":"#helpMessageContainer \u003e Label {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"triciiaaa"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"triciiaaa"},"content":" -fx-font-family: \"Product Sans\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"triciiaaa"},"content":" -fx-text-fill: black;","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-08-28"}],"authorContributionMap":{"triciiaaa":14,"-":14}},{"path":"src/main/resources/view/HelpWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-18"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cfx:root resizable\u003d\"false\" title\u003d\"Help\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27"},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-12-01"},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2021-08-28"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-28"},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cHBox alignment\u003d\"CENTER\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2022-01-02"},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cchildren\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"helpMessage\" text\u003d\"Label\"\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19"},{"lineNumber":26,"author":{"gitId":"triciiaaa"},"content":" \u003cInsets right\u003d\"10.0\" /\u003e","lastModifiedDate":"2024-03-18"},{"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":{"triciiaaa":1,"-":43}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26"},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":11,"author":{"gitId":"triciiaaa"},"content":"\u003c?import javafx.scene.image.ImageView?\u003e","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" title\u003d\"Band Book\" 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":"triciiaaa"},"content":" \u003cImage url\u003d\"@/images/bandbook_single_logo.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":"triciiaaa"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"logoPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"triciiaaa"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"triciiaaa"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"triciiaaa"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"triciiaaa"},"content":" \u003cImageView fitWidth\u003d\"140\" fitHeight\u003d\"40\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"triciiaaa"},"content":" \u003cImage url\u003d\"@/images/bandbook_full_logo.png\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"triciiaaa"},"content":" \u003c/ImageView\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"triciiaaa"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"triciiaaa"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15"},{"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":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15"},{"lineNumber":53,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":59,"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":60,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"triciiaaa":12,"-":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":"-"},"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":"triciiaaa"},"content":" \u003cInsets top\u003d\"20\" right\u003d\"20\" bottom\u003d\"20\" left\u003d\"40\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"triciiaaa"},"content":" \u003cHBox spacing\u003d\"50\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-03-18"},{"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":"triciiaaa"},"content":" \u003cVBox spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"triciiaaa"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"10\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"triciiaaa"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"triciiaaa"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"triciiaaa"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":33,"author":{"gitId":"triciiaaa"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"triciiaaa"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"triciiaaa"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18"},{"lineNumber":37,"author":{"gitId":"triciiaaa"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"triciiaaa"},"content":" \u003cVBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":" \u003cLabel fx:id\u003d\"birthday\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$birthday\" /\u003e","lastModifiedDate":"2024-03-20"},{"lineNumber":43,"author":{"gitId":"triciiaaa"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"triciiaaa"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"triciiaaa"},"content":" \u003cVBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"triciiaaa"},"content":" \u003cFlowPane fx:id\u003d\"attendances\" prefWrapLength\u003d\"400\" /\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"triciiaaa"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"triciiaaa":17,"-":33,"brennalaurentan":1}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BIRTHDAY_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"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":"brennalaurentan"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2024-03-21"},{"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":"brennalaurentan"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + BIRTHDAY_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"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":{"-":173,"brennalaurentan":4}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY_DATE;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05"},{"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":"brennalaurentan"},"content":" public static final String VALID_BIRTHDAY_AMY \u003d \"2000-01-01\";","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"brennalaurentan"},"content":" public static final String VALID_BIRTHDAY_BOB \u003d \"2001-02-02\";","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":"brennalaurentan"},"content":" public static final String DEFAULT_BIRTHDAY \u003d \"9999-99-99\";","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"brennalaurentan"},"content":"","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":"-"},"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":"brennalaurentan"},"content":" public static final String BIRTHDAY_DESC_AMY \u003d \" \" + PREFIX_BIRTHDAY_DATE + VALID_BIRTHDAY_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"brennalaurentan"},"content":" public static final String BIRTHDAY_DESC_BOB \u003d \" \" + PREFIX_BIRTHDAY_DATE + VALID_BIRTHDAY_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":62,"author":{"gitId":"brennalaurentan"},"content":" public static final String INVALID_BIRTHDAY_DESC \u003d \" \" + PREFIX_BIRTHDAY_DATE + \"a\"; // wrong format for birthday","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05"},{"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":{"-":128,"brennalaurentan":8}},{"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":"brennalaurentan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BIRTHDAY_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"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":"brennalaurentan"},"content":" // different birthday -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"brennalaurentan"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withBirthday(VALID_BIRTHDAY_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"brennalaurentan"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"brennalaurentan"},"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":"brennalaurentan"},"content":" + editPersonDescriptor.getBirthday().orElse(null) + \", birthday\u003d\"","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":74,"author":{"gitId":"casaarlai"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", attendances\u003d\"","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"casaarlai"},"content":" + editPersonDescriptor.getAttendances().orElse(null) + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05"}],"authorContributionMap":{"casaarlai":2,"-":70,"brennalaurentan":6}},{"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":"brennalaurentan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BIRTHDAY_DESC_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.BIRTHDAY_DESC_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DEFAULT_BIRTHDAY;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":12,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_BIRTHDAY_DESC;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05"},{"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":"brennalaurentan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY_DATE;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.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":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"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":"-"},"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":"brennalaurentan"},"content":" + ADDRESS_DESC_BOB + BIRTHDAY_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-21"},{"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":"brennalaurentan"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + BIRTHDAY_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"brennalaurentan"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-03-21"},{"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":"brennalaurentan"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"brennalaurentan"},"content":" + BIRTHDAY_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-03-21"},{"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":"brennalaurentan"},"content":" // multiple birthdays","lastModifiedDate":"2024-03-21"},{"lineNumber":97,"author":{"gitId":"brennalaurentan"},"content":" assertParseFailure(parser, BIRTHDAY_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-21"},{"lineNumber":98,"author":{"gitId":"brennalaurentan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_BIRTHDAY_DATE));","lastModifiedDate":"2024-03-21"},{"lineNumber":99,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"brennalaurentan"},"content":" + BIRTHDAY_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-03-21"},{"lineNumber":104,"author":{"gitId":"brennalaurentan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-03-21"},{"lineNumber":105,"author":{"gitId":"brennalaurentan"},"content":" PREFIX_BIRTHDAY_DATE));","lastModifiedDate":"2024-03-21"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":" // invalid value followed by valid 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, INVALID_NAME_DESC + validExpectedPersonString,","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, INVALID_EMAIL_DESC + validExpectedPersonString,","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, INVALID_PHONE_DESC + validExpectedPersonString,","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, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":123,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":125,"author":{"gitId":"brennalaurentan"},"content":" // invalid birthday","lastModifiedDate":"2024-03-21"},{"lineNumber":126,"author":{"gitId":"brennalaurentan"},"content":" assertParseFailure(parser, INVALID_BIRTHDAY_DESC + validExpectedPersonString,","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"brennalaurentan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_BIRTHDAY_DATE));","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // valid value followed by invalid 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, validExpectedPersonString + INVALID_NAME_DESC,","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, validExpectedPersonString + INVALID_EMAIL_DESC,","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":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":141,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"brennalaurentan"},"content":" // invalid birthday","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"brennalaurentan"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_BIRTHDAY_DESC,","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"brennalaurentan"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_BIRTHDAY_DATE));","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":154,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"brennalaurentan"},"content":" Person expectedPersonNoTag \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":157,"author":{"gitId":"brennalaurentan"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":158,"author":{"gitId":"brennalaurentan"},"content":" + BIRTHDAY_DESC_AMY, new AddCommand(expectedPersonNoTag));","lastModifiedDate":"2024-03-21"},{"lineNumber":159,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":160,"author":{"gitId":"brennalaurentan"},"content":" // zero birthday","lastModifiedDate":"2024-03-21"},{"lineNumber":161,"author":{"gitId":"brennalaurentan"},"content":" Person expectedPersonNoBirthday \u003d new PersonBuilder(AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-03-21"},{"lineNumber":162,"author":{"gitId":"brennalaurentan"},"content":" .withBirthday(DEFAULT_BIRTHDAY).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":163,"author":{"gitId":"brennalaurentan"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-03-21"},{"lineNumber":164,"author":{"gitId":"brennalaurentan"},"content":" + TAG_DESC_FRIEND, new AddCommand(expectedPersonNoBirthday));","lastModifiedDate":"2024-03-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":171,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"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 phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":177,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":179,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":181,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":183,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":187,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":196,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":198,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":202,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":206,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":207,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":210,"author":{"gitId":"brennalaurentan"},"content":" // invalid birthday","lastModifiedDate":"2024-03-21"},{"lineNumber":211,"author":{"gitId":"brennalaurentan"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-21"},{"lineNumber":212,"author":{"gitId":"brennalaurentan"},"content":" + INVALID_BIRTHDAY_DESC + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Birthday.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":213,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":214,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15"},{"lineNumber":215,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":216,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":218,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":219,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":220,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":223,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":224,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23"},{"lineNumber":225,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":227,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"-":187,"brennalaurentan":40}},{"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":"brennalaurentan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BIRTHDAY_BOB;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"brennalaurentan"},"content":" // different birthday -\u003e returns false","lastModifiedDate":"2024-03-21"},{"lineNumber":90,"author":{"gitId":"brennalaurentan"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withBirthday(VALID_BIRTHDAY_BOB).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":91,"author":{"gitId":"brennalaurentan"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-03-21"},{"lineNumber":92,"author":{"gitId":"brennalaurentan"},"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":"brennalaurentan"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-21"},{"lineNumber":102,"author":{"gitId":"brennalaurentan"},"content":" + \", birthday\u003d\" + ALICE.getBirthday() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-03-21"},{"lineNumber":103,"author":{"gitId":"casaarlai"},"content":" + \", attendances\u003d\" + ALICE.getAttendances() + \"}\";","lastModifiedDate":"2024-03-16"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"casaarlai":1,"-":98,"brennalaurentan":7}},{"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":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13"},{"lineNumber":27,"author":{"gitId":"casaarlai"},"content":" private static final String INVALID_ATTENDANCE \u003d \"202-01-01\";","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"brennalaurentan"},"content":" private static final String INVALID_BIRTHDAY \u003d \"24th of April\";","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" private static final String VALID_BIRTHDAY \u003d BENSON.getBirthday().toString();","lastModifiedDate":"2024-03-20"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"casaarlai"},"content":" private static final List\u003cJsonAdaptedAttendance\u003e VALID_ATTENDANCES \u003d BENSON.getAttendances().stream()","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"casaarlai"},"content":" .map(JsonAdaptedAttendance::new)","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"casaarlai"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_BIRTHDAY,","lastModifiedDate":"2024-03-20"},{"lineNumber":52,"author":{"gitId":"brennalaurentan"},"content":" VALID_TAGS, VALID_ATTENDANCES);","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":"brennalaurentan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":60,"author":{"gitId":"brennalaurentan"},"content":" VALID_BIRTHDAY, VALID_TAGS, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_BIRTHDAY,","lastModifiedDate":"2024-03-20"},{"lineNumber":69,"author":{"gitId":"brennalaurentan"},"content":" VALID_TAGS, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":77,"author":{"gitId":"brennalaurentan"},"content":" VALID_BIRTHDAY, VALID_TAGS, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"brennalaurentan"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_BIRTHDAY,","lastModifiedDate":"2024-03-20"},{"lineNumber":86,"author":{"gitId":"brennalaurentan"},"content":" VALID_TAGS, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"brennalaurentan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":94,"author":{"gitId":"brennalaurentan"},"content":" VALID_BIRTHDAY, VALID_TAGS, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"brennalaurentan"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_BIRTHDAY,","lastModifiedDate":"2024-03-20"},{"lineNumber":103,"author":{"gitId":"brennalaurentan"},"content":" VALID_TAGS, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":110,"author":{"gitId":"brennalaurentan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"brennalaurentan"},"content":" VALID_BIRTHDAY, VALID_TAGS, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"brennalaurentan"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"brennalaurentan"},"content":" public void toModelType_invalidBirthday_throwsIllegalValueException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"brennalaurentan"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-20"},{"lineNumber":119,"author":{"gitId":"brennalaurentan"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, INVALID_BIRTHDAY,","lastModifiedDate":"2024-03-20"},{"lineNumber":120,"author":{"gitId":"brennalaurentan"},"content":" VALID_TAGS, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"lineNumber":121,"author":{"gitId":"brennalaurentan"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"brennalaurentan"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-03-20"},{"lineNumber":123,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":124,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":125,"author":{"gitId":"brennalaurentan"},"content":" @Test","lastModifiedDate":"2024-03-20"},{"lineNumber":126,"author":{"gitId":"brennalaurentan"},"content":" public void toModelType_nullBirthday_throwsIllegalValueException() {","lastModifiedDate":"2024-03-20"},{"lineNumber":127,"author":{"gitId":"brennalaurentan"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-03-20"},{"lineNumber":128,"author":{"gitId":"brennalaurentan"},"content":" null, VALID_TAGS, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"lineNumber":129,"author":{"gitId":"brennalaurentan"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Birthday.class.getSimpleName());","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":138,"author":{"gitId":"brennalaurentan"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_BIRTHDAY,","lastModifiedDate":"2024-03-20"},{"lineNumber":139,"author":{"gitId":"brennalaurentan"},"content":" invalidTags, VALID_ATTENDANCES);","lastModifiedDate":"2024-03-20"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, 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":"casaarlai"},"content":" @Test","lastModifiedDate":"2024-03-16"},{"lineNumber":144,"author":{"gitId":"casaarlai"},"content":" public void toModelType_invalidAttendances_throwsIllegalValueException() {","lastModifiedDate":"2024-03-16"},{"lineNumber":145,"author":{"gitId":"casaarlai"},"content":" List\u003cJsonAdaptedAttendance\u003e invalidAttendances \u003d new ArrayList\u003c\u003e(VALID_ATTENDANCES);","lastModifiedDate":"2024-03-16"},{"lineNumber":146,"author":{"gitId":"casaarlai"},"content":" invalidAttendances.add(new JsonAdaptedAttendance(INVALID_ATTENDANCE));","lastModifiedDate":"2024-03-16"},{"lineNumber":147,"author":{"gitId":"casaarlai"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-03-16"},{"lineNumber":148,"author":{"gitId":"brennalaurentan"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_BIRTHDAY,","lastModifiedDate":"2024-03-20"},{"lineNumber":149,"author":{"gitId":"brennalaurentan"},"content":" VALID_TAGS, invalidAttendances);","lastModifiedDate":"2024-03-20"},{"lineNumber":150,"author":{"gitId":"casaarlai"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-03-16"},{"lineNumber":151,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":152,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"casaarlai":11,"-":104,"brennalaurentan":37}},{"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":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23"},{"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":"2017-06-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" descriptor.setBirthday(person.getBirthday());","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21"},{"lineNumber":42,"author":{"gitId":"casaarlai"},"content":" descriptor.setAttendances(person.getAttendances());","lastModifiedDate":"2024-03-16"},{"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":"-"},"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":"brennalaurentan"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"brennalaurentan"},"content":" * Sets the {@code Birthday} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"brennalaurentan"},"content":" public EditPersonDescriptorBuilder withBirthday(String birthday) {","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"brennalaurentan"},"content":" descriptor.setBirthday(new Birthday(birthday));","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"brennalaurentan"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"brennalaurentan"},"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":{"casaarlai":1,"-":87,"brennalaurentan":10}},{"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":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18"},{"lineNumber":8,"author":{"gitId":"brennalaurentan"},"content":"import seedu.address.model.person.Birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18"},{"lineNumber":13,"author":{"gitId":"-"},"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":"brennalaurentan"},"content":" public static final String DEFAULT_BIRTHDAY \u003d \"2000-01-01\";","lastModifiedDate":"2024-03-20"},{"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":"brennalaurentan"},"content":" private Birthday birthday;","lastModifiedDate":"2024-03-20"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20"},{"lineNumber":33,"author":{"gitId":"casaarlai"},"content":" private Set\u003cAttendance\u003e attendances;","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" birthday \u003d new Birthday(DEFAULT_BIRTHDAY);","lastModifiedDate":"2024-03-20"},{"lineNumber":44,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26"},{"lineNumber":45,"author":{"gitId":"casaarlai"},"content":" attendances \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" birthday \u003d personToCopy.getBirthday();","lastModifiedDate":"2024-03-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20"},{"lineNumber":58,"author":{"gitId":"casaarlai"},"content":" attendances \u003d new HashSet\u003c\u003e(personToCopy.getAttendances());","lastModifiedDate":"2024-03-16"},{"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":"casaarlai"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"casaarlai"},"content":" * Parses the {@code attendances} into a {@code Set\u003cAttendance\u003e} and set it to the {@code Person} that we are","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"casaarlai"},"content":" * building.","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"casaarlai"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"casaarlai"},"content":" public PersonBuilder withAttendances(String ... attendances) {","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"casaarlai"},"content":" this.attendances \u003d SampleDataUtil.getAttendanceSet(attendances);","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"casaarlai"},"content":" return this;","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"casaarlai"},"content":"","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" /**","lastModifiedDate":"2024-03-20"},{"lineNumber":111,"author":{"gitId":"brennalaurentan"},"content":" * Sets the {@code Birthday} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-20"},{"lineNumber":112,"author":{"gitId":"brennalaurentan"},"content":" */","lastModifiedDate":"2024-03-20"},{"lineNumber":113,"author":{"gitId":"brennalaurentan"},"content":" public PersonBuilder withBirthday(String birthday) {","lastModifiedDate":"2024-03-20"},{"lineNumber":114,"author":{"gitId":"brennalaurentan"},"content":" this.birthday \u003d new Birthday(birthday);","lastModifiedDate":"2024-03-20"},{"lineNumber":115,"author":{"gitId":"brennalaurentan"},"content":" return this;","lastModifiedDate":"2024-03-20"},{"lineNumber":116,"author":{"gitId":"brennalaurentan"},"content":" }","lastModifiedDate":"2024-03-20"},{"lineNumber":117,"author":{"gitId":"brennalaurentan"},"content":"","lastModifiedDate":"2024-03-20"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":119,"author":{"gitId":"brennalaurentan"},"content":" return new Person(name, phone, email, address, birthday, tags, attendances);","lastModifiedDate":"2024-03-20"},{"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":{"casaarlai":13,"-":95,"brennalaurentan":14}},{"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":"casaarlai"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ATTENDANCE;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_BIRTHDAY_DATE;","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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26"},{"lineNumber":15,"author":{"gitId":"casaarlai"},"content":"import seedu.address.model.attendance.Attendance;","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05"},{"lineNumber":20,"author":{"gitId":"-"},"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":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09"},{"lineNumber":40,"author":{"gitId":"brennalaurentan"},"content":" sb.append(PREFIX_BIRTHDAY_DATE + person.getBirthday().value + \" \");","lastModifiedDate":"2024-03-21"},{"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":"casaarlai"},"content":" person.getAttendances().stream().forEach(","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"casaarlai"},"content":" s -\u003e sb.append(PREFIX_ATTENDANCE + s.attendanceDate.toString() + \" \")","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"casaarlai"},"content":" );","lastModifiedDate":"2024-03-16"},{"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":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26"},{"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":"brennalaurentan"},"content":" descriptor.getBirthday().ifPresent(birthday -\u003e sb.append(PREFIX_BIRTHDAY_DATE)","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"brennalaurentan"},"content":" .append(birthday.value).append(\" \"));","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26"},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26"},{"lineNumber":64,"author":{"gitId":"casaarlai"},"content":" sb.append(PREFIX_TAG).append(\" \");","lastModifiedDate":"2024-03-16"},{"lineNumber":65,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":69,"author":{"gitId":"casaarlai"},"content":" if (descriptor.getAttendances().isPresent()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":70,"author":{"gitId":"casaarlai"},"content":" Set\u003cAttendance\u003e attendances \u003d descriptor.getAttendances().get();","lastModifiedDate":"2024-03-16"},{"lineNumber":71,"author":{"gitId":"casaarlai"},"content":" if (attendances.isEmpty()) {","lastModifiedDate":"2024-03-16"},{"lineNumber":72,"author":{"gitId":"casaarlai"},"content":" sb.append(PREFIX_ATTENDANCE);","lastModifiedDate":"2024-03-16"},{"lineNumber":73,"author":{"gitId":"casaarlai"},"content":" } else {","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"casaarlai"},"content":" attendances.forEach(s -\u003e sb.append(PREFIX_ATTENDANCE).append(s.attendanceDate).append(\" \"));","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"casaarlai"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26"},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05"}],"authorContributionMap":{"casaarlai":14,"-":61,"brennalaurentan":4}},{"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":"brennalaurentan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BIRTHDAY_AMY;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"brennalaurentan"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_BIRTHDAY_BOB;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22"},{"lineNumber":9,"author":{"gitId":"-"},"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":"brennalaurentan"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withBirthday(\"2000-01-01\")","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"brennalaurentan"},"content":" .withEmail(\"alice@example.com\").withPhone(\"94351253\")","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"casaarlai"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"casaarlai"},"content":" .withAttendances(\"2024-01-01\", \"2024-01-10\").build();","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":34,"author":{"gitId":"brennalaurentan"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\").withBirthday(\"2001-02-02\")","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":36,"author":{"gitId":"casaarlai"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"casaarlai"},"content":" .withAttendances(\"2024-01-01\", \"2024-01-10\").build();","lastModifiedDate":"2024-03-16"},{"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":"brennalaurentan"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withBirthday(\"2000-03-03\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10"},{"lineNumber":41,"author":{"gitId":"brennalaurentan"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withBirthday(\"2000-04-04\")","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"brennalaurentan"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"brennalaurentan"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withBirthday(\"2000-05-05\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"brennalaurentan"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withBirthday(\"2000-06-06\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10"},{"lineNumber":48,"author":{"gitId":"brennalaurentan"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withBirthday(\"2000-07-07\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22"},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10"},{"lineNumber":58,"author":{"gitId":"brennalaurentan"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withBirthday(VALID_BIRTHDAY_AMY)","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"brennalaurentan"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-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":"brennalaurentan"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withBirthday(VALID_BIRTHDAY_BOB)","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"brennalaurentan"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-03-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":{"casaarlai":4,"-":63,"brennalaurentan":15}}] diff --git a/AY2324S2-CS2103T-T15-3_tp_master/commits.json b/AY2324S2-CS2103T-T15-3_tp_master/commits.json index 6473d455..788da6b8 100644 --- a/AY2324S2-CS2103T-T15-3_tp_master/commits.json +++ b/AY2324S2-CS2103T-T15-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"casaarlai":[{"date":"2024-03-04","commitResults":[{"hash":"fa04752b7a72ffe3340fcae41bea4dcd6d73aa79","isMergeCommit":false,"messageTitle":"Partial update of content in developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":17}}}]},{"date":"2024-03-07","commitResults":[{"hash":"02d243917dee15c6f7aa60edfe2bf26ea3388656","isMergeCommit":true,"messageTitle":"Merge pull request #15 from brennalaurentan/master","messageBody":"Update User Guide with revised intro paragraph","fileTypesAndContributionMap":{}},{"hash":"cdc30412b421726176f551cf93e058068097be83","isMergeCommit":false,"messageTitle":"Finalise updates to developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":59,"deletions":16}}},{"hash":"ebf569a450707f039e5c3b13cbf6b0677883912b","isMergeCommit":true,"messageTitle":"Merge pull request #16 from brennalaurentan/branch-UserGuide","messageBody":"Update with amended user guide details in intro paragraph","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"6ac74bb356c1fa836b54025ddb9b4ebe257011ee","isMergeCommit":false,"messageTitle":"Partial update of content in developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":17}}},{"hash":"ff2252c814e1ba0f0344a787f14cdac4a92f1458","isMergeCommit":false,"messageTitle":"Finalise updates to developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":59,"deletions":16}}}]},{"date":"2024-03-16","commitResults":[{"hash":"bc90cebed9bda0d4bb0a5587dcbc5a1194050c92","isMergeCommit":false,"messageTitle":"Add attendance functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":416,"deletions":17}}},{"hash":"5ab2cbe11c9067d864aaa0dc9b551022f20284ad","isMergeCommit":false,"messageTitle":"Refactor tests to work with the new attendance feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":28},"test-code":{"insertions":68,"deletions":15}}}]},{"date":"2024-03-18","commitResults":[{"hash":"d7756b23ce65665aff278f84134ee4481ad89285","isMergeCommit":true,"messageTitle":"Merge pull request #32 from triciiaaa/branch-new-ui","messageBody":"Change main user interface of BandBook","fileTypesAndContributionMap":{}}]}],"triciiaaa":[{"date":"2024-03-04","commitResults":[{"hash":"8421c25470798a1c07ba963c0817249e1f74bd69","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":36}}},{"hash":"2d3140d368e1ebf8342552b21d9088caffdf6fce","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-aboutUs\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"634e74698b55ff6044bfffa3b2804809b0a6004e","isMergeCommit":false,"messageTitle":"Fix CI Error","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e1af4d7ed468ab03a5379c3bfe4dce178f3321e6","isMergeCommit":true,"messageTitle":"Merge pull request #11 from triciiaaa/master","messageBody":"Update About Us Page","fileTypesAndContributionMap":{}},{"hash":"ca4b7b1f719c3f8aa40df56f5c502a657d0f2690","isMergeCommit":false,"messageTitle":"Update README page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":69,"deletions":14}}},{"hash":"8408f6eb6952c687465c1195389b823323c24aec","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-README\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"26cb1541861b1cfd8a1051633af390e0bee134ae","isMergeCommit":false,"messageTitle":"Update product website","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":9}}}]},{"date":"2024-03-15","commitResults":[{"hash":"4bb1225a678f6e7dde7b654a50974fe43e2966d7","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":15}}},{"hash":"64175f0f41f4dffba4ca88710de585af2cfd3abf","isMergeCommit":true,"messageTitle":"Merge pull request #29 from brennalaurentan/branch-Birthday","messageBody":"Set up Birthday command class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"f772f5f022548dd43dce838763e00cfaed2aae21","isMergeCommit":true,"messageTitle":"Merge pull request #31 from casaarlai/branch-Attendance-History","messageBody":"Attendance functionality","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"79255e93cdf6500ac06f4895983c40024fe952d8","isMergeCommit":false,"messageTitle":"Change main user interface of Band Book","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":209,"deletions":94}}},{"hash":"c408c3f690d946bf83b959df86d23ec687f671c3","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12}}},{"hash":"ca531187c57fc5d27b92adc612a0d6983ab176cc","isMergeCommit":false,"messageTitle":"Change hardcoded tag names to dynamic hashing to a limited list of tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":20}}}]},{"date":"2024-03-21","commitResults":[{"hash":"f87a3b0f51236d57104db9966f78edaf16b65933","isMergeCommit":true,"messageTitle":"Merge pull request #34 from brennalaurentan/branch-Birthday","messageBody":"Birthday functionality","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"8cf73cfc929cf2d836d40fce42d88ec2ec44be76","isMergeCommit":true,"messageTitle":"Merge pull request #35 from brennalaurentan/branch-UMLDiagrams","messageBody":"Add UML sequence diagram for Edit functionality","fileTypesAndContributionMap":{}},{"hash":"ba3b8aa2a3b729a28546637a2814dc66b768a1f1","isMergeCommit":true,"messageTitle":"Merge pull request #36 from brennalaurentan/branch-DeveloperGuide","messageBody":"Update Developer Guide with info on Edit functionality implementation","fileTypesAndContributionMap":{}},{"hash":"50a6ff4931cb7f99a5ebe0fb0da4ac383329caef","isMergeCommit":false,"messageTitle":"Update UML sequence diagram for Edit functionality","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}},{"hash":"7ea1df1cad5315bf2fe842c9655d22895a9865dc","isMergeCommit":false,"messageTitle":"Update UML sequence diagram for Edit functionality","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"brennalaurentan":[{"date":"2024-03-06","commitResults":[{"hash":"23b9ce8515948f7e9f5a5bff886f4b19c0194805","isMergeCommit":true,"messageTitle":"Merge pull request #13 from triciiaaa/master","messageBody":"Update README page","fileTypesAndContributionMap":{}},{"hash":"02c726715e31571a83a5834956a7832429909fbe","isMergeCommit":false,"messageTitle":"Update User Guide with revised intro paragraph","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}}]},{"date":"2024-03-07","commitResults":[{"hash":"fb060f988bb61827c8e10f445490bbd201aa4d61","isMergeCommit":false,"messageTitle":"Update with amended user guide details in intro paragraph","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"19dfdb52f32aa98022cbbea545ae9b14a4ca6863","isMergeCommit":false,"messageTitle":"Revert \"Update with amended user guide details in intro paragraph\"","messageBody":"This reverts commit fb060f988bb61827c8e10f445490bbd201aa4d61.\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"cbfe73799e222b4d6707bf78fce2c660f57f08a3","isMergeCommit":false,"messageTitle":"Update with amended user guide details in intro paragraph","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"8a0b47b88a05600a04e7d7037ed586a24ac0de4c","isMergeCommit":true,"messageTitle":"Merge pull request #17 from casaarlai/branch-Update-DG","messageBody":"Update developer guide","fileTypesAndContributionMap":{}},{"hash":"68d65b9aa2ac8cbe2fa1f13c9d8c19a152d820ae","isMergeCommit":true,"messageTitle":"Merge pull request #18 from triciiaaa/branch-productWebsite","messageBody":"Update product website","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"c2017eced273389b4fadc3874af3793beed96fb5","isMergeCommit":false,"messageTitle":"Add Remark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":196,"deletions":9}}}]},{"date":"2024-03-13","commitResults":[{"hash":"3174f5097d5ec984f339bf11366861685924f3f2","isMergeCommit":false,"messageTitle":"Merge branch \u0027tutorial-adding-command\u0027 of https://github.com/brennalaurentan/tp into tutorial-adding-command","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/RemarkCommand.java\n#\tsrc/main/java/seedu/address/logic/parser/RemarkCommandParser.java\n#\tsrc/main/java/seedu/address/model/person/Remark.java\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n","fileTypesAndContributionMap":{"functional-code":{"insertions":196,"deletions":9},"docs":{"insertions":32,"deletions":69}}}]},{"date":"2024-03-15","commitResults":[{"hash":"0953f3f3805e30797d4fd56b47eaad8005ffa41b","isMergeCommit":false,"messageTitle":"Set up Birthday command class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"f850704c8d75ea77caedda97db94752ace89406c","isMergeCommit":false,"messageTitle":"Update User Guide with revised intro paragraph","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"8af9fa5fa8166c7818bee390555584bd02976f1f","isMergeCommit":false,"messageTitle":"Update with amended user guide details in intro paragraph","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"0845cfb7d2f31879781f59e495ef2c7d8641c9b8","isMergeCommit":false,"messageTitle":"Revert \"Update with amended user guide details in intro paragraph\"","messageBody":"This reverts commit fb060f988bb61827c8e10f445490bbd201aa4d61.\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"37c2ee5ccaab72614653c5f2b8159ee920b80a0d","isMergeCommit":false,"messageTitle":"Update with amended user guide details in intro paragraph","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"93457e07ee8ed74264e899284cd0abca8e8518d1","isMergeCommit":false,"messageTitle":"Merge branch \u0027tutorial-adding-command\u0027 of https://github.com/brennalaurentan/tp into tutorial-adding-command","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/RemarkCommand.java\n#\tsrc/main/java/seedu/address/logic/parser/RemarkCommandParser.java\n#\tsrc/main/java/seedu/address/model/person/Remark.java\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n","fileTypesAndContributionMap":{"functional-code":{"insertions":196,"deletions":9},"docs":{"insertions":32,"deletions":69}}},{"hash":"fa134de6fb95f0e7b009a53027134598b4cf936b","isMergeCommit":false,"messageTitle":"Set up Birthday command class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"e99d2d326d18d4ecf17fa04e40b437261ab1e73e","isMergeCommit":false,"messageTitle":"Remove incorrect implementation of Remark command causing crashes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":191}}},{"hash":"25abf18cc4fc0165ca534aebf01f3bf14708a084","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/brennalaurentan/tp into branch-Birthday","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"966c505478e685f721aa11ff2781daf4da2803ab","isMergeCommit":true,"messageTitle":"Merge pull request #30 from triciiaaa/branch-userGuide","messageBody":"Update user guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"03b9169518e8f12310c381d090ae68cff2830727","isMergeCommit":false,"messageTitle":"Add Birthday command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"8f992054d5a234707e23986cab9f508a33d53c37","isMergeCommit":false,"messageTitle":"Add Birthday command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":214,"deletions":34}}},{"hash":"f1884d7f27ae2c3c5ea3dec5f2642744f62affb2","isMergeCommit":false,"messageTitle":"Update Birthday command with editing capabilities","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":26}}},{"hash":"8f32d7afe7b424cfe6a566fd30a7e0b454c24ccb","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":17},"test-code":{"insertions":53,"deletions":21}}}]},{"date":"2024-03-21","commitResults":[{"hash":"3b5a1b1a7db374af6da212b65f3624ea732904fe","isMergeCommit":false,"messageTitle":"Refactor existing tests and add new tests for birthday feature","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":96,"deletions":24}}}]},{"date":"2024-03-22","commitResults":[{"hash":"f83bb0aa319d647f34062f9e880ad84b9846d82b","isMergeCommit":false,"messageTitle":"Add UML sequence diagram for Edit functionality","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":58,"deletions":0}}},{"hash":"f77ccd64b804ca0039e5150e99ad4f5286ab359f","isMergeCommit":false,"messageTitle":"Revert \"Add UML sequence diagram for Edit functionality\"","messageBody":"This reverts commit f83bb0aa319d647f34062f9e880ad84b9846d82b.\n","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":58}}},{"hash":"1d0db7d3e30f7c1fd08baeb4dd77078bc9d0e529","isMergeCommit":false,"messageTitle":"Revert \"Revert \"Add UML sequence diagram for Edit functionality\"\"","messageBody":"This reverts commit f77ccd64b804ca0039e5150e99ad4f5286ab359f.\n","fileTypesAndContributionMap":{"docs":{"insertions":58,"deletions":0}}},{"hash":"8108963e3f544ee20cf1d92259e9ed9aa891a86d","isMergeCommit":false,"messageTitle":"Add UML sequence diagram for Edit functionality","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":58,"deletions":0}}},{"hash":"5170953c44fbbf654587f586a2f99ec264f23990","isMergeCommit":false,"messageTitle":"Revert \"Revert \"Revert \"Add UML sequence diagram for Edit functionality\"\"\"","messageBody":"This reverts commit 1d0db7d3e30f7c1fd08baeb4dd77078bc9d0e529.\n","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":58}}},{"hash":"996f0daf4fa44c9bf4104a8559a06521ce31074d","isMergeCommit":false,"messageTitle":"Update Developer Guide with info on edit functionality implementation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":107}}},{"hash":"bd1b4aa9e92e9d130006b2e1036ecafe9012da48","isMergeCommit":false,"messageTitle":"Fix incorrect indentation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"f79767b7f2a4ba70c92074b48e900e5d5888a908","isMergeCommit":true,"messageTitle":"Merge pull request #37 from triciiaaa/branch-uml-diagrams-v1.2","messageBody":"Update UML sequence diagram for Edit functionality","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"casaarlai":{"docs":0,"functional-code":431,"test-code":46},"triciiaaa":{"docs":101,"functional-code":204,"test-code":0},"brennalaurentan":{"docs":69,"functional-code":299,"test-code":145}},"authorContributionVariance":{"casaarlai":12585.28,"triciiaaa":4950.1025,"brennalaurentan":24468.389},"authorDisplayNameMap":{"casaarlai":"CS2103T-T15-3 LAI ..HAUN","triciiaaa":"CS2103T-T15-3 TRIC..N EE","brennalaurentan":"CS2103T-T15-3 BREN.. ERN"}} +{"authorDailyContributionsMap":{"casaarlai":[{"date":"2024-03-04","commitResults":[{"hash":"fa04752b7a72ffe3340fcae41bea4dcd6d73aa79","isMergeCommit":false,"messageTitle":"Partial update of content in developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":17}}}]},{"date":"2024-03-07","commitResults":[{"hash":"02d243917dee15c6f7aa60edfe2bf26ea3388656","isMergeCommit":true,"messageTitle":"Merge pull request #15 from brennalaurentan/master","messageBody":"Update User Guide with revised intro paragraph","fileTypesAndContributionMap":{}},{"hash":"cdc30412b421726176f551cf93e058068097be83","isMergeCommit":false,"messageTitle":"Finalise updates to developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":59,"deletions":16}}},{"hash":"ebf569a450707f039e5c3b13cbf6b0677883912b","isMergeCommit":true,"messageTitle":"Merge pull request #16 from brennalaurentan/branch-UserGuide","messageBody":"Update with amended user guide details in intro paragraph","fileTypesAndContributionMap":{}}]},{"date":"2024-03-15","commitResults":[{"hash":"6ac74bb356c1fa836b54025ddb9b4ebe257011ee","isMergeCommit":false,"messageTitle":"Partial update of content in developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":17}}},{"hash":"ff2252c814e1ba0f0344a787f14cdac4a92f1458","isMergeCommit":false,"messageTitle":"Finalise updates to developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":59,"deletions":16}}}]},{"date":"2024-03-16","commitResults":[{"hash":"bc90cebed9bda0d4bb0a5587dcbc5a1194050c92","isMergeCommit":false,"messageTitle":"Add attendance functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":416,"deletions":17}}},{"hash":"5ab2cbe11c9067d864aaa0dc9b551022f20284ad","isMergeCommit":false,"messageTitle":"Refactor tests to work with the new attendance feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":64,"deletions":28},"test-code":{"insertions":68,"deletions":15}}}]},{"date":"2024-03-18","commitResults":[{"hash":"d7756b23ce65665aff278f84134ee4481ad89285","isMergeCommit":true,"messageTitle":"Merge pull request #32 from triciiaaa/branch-new-ui","messageBody":"Change main user interface of BandBook","fileTypesAndContributionMap":{}}]},{"date":"2024-03-24","commitResults":[{"hash":"5c7cfaa8ed0c829cc705cadb151d2ab2153a75a6","isMergeCommit":false,"messageTitle":"Add UML diagram for the add attendance functionality","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":61,"deletions":0}}}]}],"triciiaaa":[{"date":"2024-03-04","commitResults":[{"hash":"8421c25470798a1c07ba963c0817249e1f74bd69","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":36}}},{"hash":"2d3140d368e1ebf8342552b21d9088caffdf6fce","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-aboutUs\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"634e74698b55ff6044bfffa3b2804809b0a6004e","isMergeCommit":false,"messageTitle":"Fix CI Error","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e1af4d7ed468ab03a5379c3bfe4dce178f3321e6","isMergeCommit":true,"messageTitle":"Merge pull request #11 from triciiaaa/master","messageBody":"Update About Us Page","fileTypesAndContributionMap":{}},{"hash":"ca4b7b1f719c3f8aa40df56f5c502a657d0f2690","isMergeCommit":false,"messageTitle":"Update README page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":69,"deletions":14}}},{"hash":"8408f6eb6952c687465c1195389b823323c24aec","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-README\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"26cb1541861b1cfd8a1051633af390e0bee134ae","isMergeCommit":false,"messageTitle":"Update product website","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":9}}}]},{"date":"2024-03-15","commitResults":[{"hash":"4bb1225a678f6e7dde7b654a50974fe43e2966d7","isMergeCommit":false,"messageTitle":"Update user guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":15}}},{"hash":"64175f0f41f4dffba4ca88710de585af2cfd3abf","isMergeCommit":true,"messageTitle":"Merge pull request #29 from brennalaurentan/branch-Birthday","messageBody":"Set up Birthday command class","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"f772f5f022548dd43dce838763e00cfaed2aae21","isMergeCommit":true,"messageTitle":"Merge pull request #31 from casaarlai/branch-Attendance-History","messageBody":"Attendance functionality","fileTypesAndContributionMap":{}}]},{"date":"2024-03-18","commitResults":[{"hash":"79255e93cdf6500ac06f4895983c40024fe952d8","isMergeCommit":false,"messageTitle":"Change main user interface of Band Book","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":209,"deletions":94}}},{"hash":"c408c3f690d946bf83b959df86d23ec687f671c3","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12}}},{"hash":"ca531187c57fc5d27b92adc612a0d6983ab176cc","isMergeCommit":false,"messageTitle":"Change hardcoded tag names to dynamic hashing to a limited list of tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":20}}}]},{"date":"2024-03-21","commitResults":[{"hash":"f87a3b0f51236d57104db9966f78edaf16b65933","isMergeCommit":true,"messageTitle":"Merge pull request #34 from brennalaurentan/branch-Birthday","messageBody":"Birthday functionality","tags":["v1.2"],"fileTypesAndContributionMap":{}}]},{"date":"2024-03-22","commitResults":[{"hash":"8cf73cfc929cf2d836d40fce42d88ec2ec44be76","isMergeCommit":true,"messageTitle":"Merge pull request #35 from brennalaurentan/branch-UMLDiagrams","messageBody":"Add UML sequence diagram for Edit functionality","fileTypesAndContributionMap":{}},{"hash":"ba3b8aa2a3b729a28546637a2814dc66b768a1f1","isMergeCommit":true,"messageTitle":"Merge pull request #36 from brennalaurentan/branch-DeveloperGuide","messageBody":"Update Developer Guide with info on Edit functionality implementation","fileTypesAndContributionMap":{}},{"hash":"50a6ff4931cb7f99a5ebe0fb0da4ac383329caef","isMergeCommit":false,"messageTitle":"Update UML sequence diagram for Edit functionality","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}},{"hash":"7ea1df1cad5315bf2fe842c9655d22895a9865dc","isMergeCommit":false,"messageTitle":"Update UML sequence diagram for Edit functionality","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"brennalaurentan":[{"date":"2024-03-06","commitResults":[{"hash":"23b9ce8515948f7e9f5a5bff886f4b19c0194805","isMergeCommit":true,"messageTitle":"Merge pull request #13 from triciiaaa/master","messageBody":"Update README page","fileTypesAndContributionMap":{}},{"hash":"02c726715e31571a83a5834956a7832429909fbe","isMergeCommit":false,"messageTitle":"Update User Guide with revised intro paragraph","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}}]},{"date":"2024-03-07","commitResults":[{"hash":"fb060f988bb61827c8e10f445490bbd201aa4d61","isMergeCommit":false,"messageTitle":"Update with amended user guide details in intro paragraph","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"19dfdb52f32aa98022cbbea545ae9b14a4ca6863","isMergeCommit":false,"messageTitle":"Revert \"Update with amended user guide details in intro paragraph\"","messageBody":"This reverts commit fb060f988bb61827c8e10f445490bbd201aa4d61.\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"cbfe73799e222b4d6707bf78fce2c660f57f08a3","isMergeCommit":false,"messageTitle":"Update with amended user guide details in intro paragraph","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"8a0b47b88a05600a04e7d7037ed586a24ac0de4c","isMergeCommit":true,"messageTitle":"Merge pull request #17 from casaarlai/branch-Update-DG","messageBody":"Update developer guide","fileTypesAndContributionMap":{}},{"hash":"68d65b9aa2ac8cbe2fa1f13c9d8c19a152d820ae","isMergeCommit":true,"messageTitle":"Merge pull request #18 from triciiaaa/branch-productWebsite","messageBody":"Update product website","fileTypesAndContributionMap":{}}]},{"date":"2024-03-12","commitResults":[{"hash":"c2017eced273389b4fadc3874af3793beed96fb5","isMergeCommit":false,"messageTitle":"Add Remark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":196,"deletions":9}}}]},{"date":"2024-03-13","commitResults":[{"hash":"3174f5097d5ec984f339bf11366861685924f3f2","isMergeCommit":false,"messageTitle":"Merge branch \u0027tutorial-adding-command\u0027 of https://github.com/brennalaurentan/tp into tutorial-adding-command","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/RemarkCommand.java\n#\tsrc/main/java/seedu/address/logic/parser/RemarkCommandParser.java\n#\tsrc/main/java/seedu/address/model/person/Remark.java\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n","fileTypesAndContributionMap":{"functional-code":{"insertions":196,"deletions":9},"docs":{"insertions":32,"deletions":69}}}]},{"date":"2024-03-15","commitResults":[{"hash":"0953f3f3805e30797d4fd56b47eaad8005ffa41b","isMergeCommit":false,"messageTitle":"Set up Birthday command class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"f850704c8d75ea77caedda97db94752ace89406c","isMergeCommit":false,"messageTitle":"Update User Guide with revised intro paragraph","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":2}}},{"hash":"8af9fa5fa8166c7818bee390555584bd02976f1f","isMergeCommit":false,"messageTitle":"Update with amended user guide details in intro paragraph","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"0845cfb7d2f31879781f59e495ef2c7d8641c9b8","isMergeCommit":false,"messageTitle":"Revert \"Update with amended user guide details in intro paragraph\"","messageBody":"This reverts commit fb060f988bb61827c8e10f445490bbd201aa4d61.\n","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"37c2ee5ccaab72614653c5f2b8159ee920b80a0d","isMergeCommit":false,"messageTitle":"Update with amended user guide details in intro paragraph","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"93457e07ee8ed74264e899284cd0abca8e8518d1","isMergeCommit":false,"messageTitle":"Merge branch \u0027tutorial-adding-command\u0027 of https://github.com/brennalaurentan/tp into tutorial-adding-command","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/RemarkCommand.java\n#\tsrc/main/java/seedu/address/logic/parser/RemarkCommandParser.java\n#\tsrc/main/java/seedu/address/model/person/Remark.java\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n","fileTypesAndContributionMap":{"functional-code":{"insertions":196,"deletions":9},"docs":{"insertions":32,"deletions":69}}},{"hash":"fa134de6fb95f0e7b009a53027134598b4cf936b","isMergeCommit":false,"messageTitle":"Set up Birthday command class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":0}}},{"hash":"e99d2d326d18d4ecf17fa04e40b437261ab1e73e","isMergeCommit":false,"messageTitle":"Remove incorrect implementation of Remark command causing crashes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":191}}},{"hash":"25abf18cc4fc0165ca534aebf01f3bf14708a084","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/brennalaurentan/tp into branch-Birthday","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"966c505478e685f721aa11ff2781daf4da2803ab","isMergeCommit":true,"messageTitle":"Merge pull request #30 from triciiaaa/branch-userGuide","messageBody":"Update user guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-20","commitResults":[{"hash":"03b9169518e8f12310c381d090ae68cff2830727","isMergeCommit":false,"messageTitle":"Add Birthday command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"8f992054d5a234707e23986cab9f508a33d53c37","isMergeCommit":false,"messageTitle":"Add Birthday command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":214,"deletions":34}}},{"hash":"f1884d7f27ae2c3c5ea3dec5f2642744f62affb2","isMergeCommit":false,"messageTitle":"Update Birthday command with editing capabilities","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":26}}},{"hash":"8f32d7afe7b424cfe6a566fd30a7e0b454c24ccb","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":17},"test-code":{"insertions":53,"deletions":21}}}]},{"date":"2024-03-21","commitResults":[{"hash":"3b5a1b1a7db374af6da212b65f3624ea732904fe","isMergeCommit":false,"messageTitle":"Refactor existing tests and add new tests for birthday feature","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":96,"deletions":24}}}]},{"date":"2024-03-22","commitResults":[{"hash":"f83bb0aa319d647f34062f9e880ad84b9846d82b","isMergeCommit":false,"messageTitle":"Add UML sequence diagram for Edit functionality","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":58,"deletions":0}}},{"hash":"f77ccd64b804ca0039e5150e99ad4f5286ab359f","isMergeCommit":false,"messageTitle":"Revert \"Add UML sequence diagram for Edit functionality\"","messageBody":"This reverts commit f83bb0aa319d647f34062f9e880ad84b9846d82b.\n","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":58}}},{"hash":"1d0db7d3e30f7c1fd08baeb4dd77078bc9d0e529","isMergeCommit":false,"messageTitle":"Revert \"Revert \"Add UML sequence diagram for Edit functionality\"\"","messageBody":"This reverts commit f77ccd64b804ca0039e5150e99ad4f5286ab359f.\n","fileTypesAndContributionMap":{"docs":{"insertions":58,"deletions":0}}},{"hash":"8108963e3f544ee20cf1d92259e9ed9aa891a86d","isMergeCommit":false,"messageTitle":"Add UML sequence diagram for Edit functionality","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":58,"deletions":0}}},{"hash":"5170953c44fbbf654587f586a2f99ec264f23990","isMergeCommit":false,"messageTitle":"Revert \"Revert \"Revert \"Add UML sequence diagram for Edit functionality\"\"\"","messageBody":"This reverts commit 1d0db7d3e30f7c1fd08baeb4dd77078bc9d0e529.\n","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":58}}},{"hash":"996f0daf4fa44c9bf4104a8559a06521ce31074d","isMergeCommit":false,"messageTitle":"Update Developer Guide with info on edit functionality implementation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":107}}},{"hash":"bd1b4aa9e92e9d130006b2e1036ecafe9012da48","isMergeCommit":false,"messageTitle":"Fix incorrect indentation","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"f79767b7f2a4ba70c92074b48e900e5d5888a908","isMergeCommit":true,"messageTitle":"Merge pull request #37 from triciiaaa/branch-uml-diagrams-v1.2","messageBody":"Update UML sequence diagram for Edit functionality","fileTypesAndContributionMap":{}}]},{"date":"2024-03-25","commitResults":[{"hash":"ef386ff66b6e74844e048c2882c511fd88d9793c","isMergeCommit":true,"messageTitle":"Merge pull request #39 from casaarlai/branch-Update-UML","messageBody":"Add UML diagram for the add attendance functionality","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"casaarlai":{"docs":61,"functional-code":431,"test-code":46},"triciiaaa":{"docs":101,"functional-code":204,"test-code":0},"brennalaurentan":{"docs":69,"functional-code":299,"test-code":145}},"authorContributionVariance":{"casaarlai":11488.675,"triciiaaa":4516.589,"brennalaurentan":22621.264},"authorDisplayNameMap":{"casaarlai":"CS2103T-T15-3 LAI ..HAUN","triciiaaa":"CS2103T-T15-3 TRIC..N EE","brennalaurentan":"CS2103T-T15-3 BREN.. ERN"}} diff --git a/AY2324S2-CS2103T-W13-4_tp_master/authorship.json b/AY2324S2-CS2103T-W13-4_tp_master/authorship.json index 05aac5fa..b8019631 100644 --- a/AY2324S2-CS2103T-W13-4_tp_master/authorship.json +++ b/AY2324S2-CS2103T-W13-4_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W13-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":"chin-herng"},"content":"# TeamTracker","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"## Description","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"TeamTracker is a productivity app designed for leaders managing teams, aimed at reducing the stress of task management and team coordination. It helps keep track of team members\u0027 contact info, roles, tasks, deadlines, and meetings, offering leaders a clearer overview of their team\u0027s structure and responsibilities.","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"## Table of Contents","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"- [TeamTracker](#teamtracker)","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":" - [Description](#description)","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":" - [Table of Contents](#table-of-contents)","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":" - [Installation](#installation)","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":" - [Usage](#usage)","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" - [Credits](#credits)","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"## Installation","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"Download the latest `teamtracker.jar` from [here](https://github.com/AY2324S2-CS2103T-W13-4/tp/releases).","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"## Usage","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":"1. Ensure you have Java `11` or above installed in your computer.","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"2. Copy `teamtracker.jar` to the folder you want to use as the _home folder_ for TeamTracker.","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"3. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar teamtracker.jar` command to run the application.","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"## Credits","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":"This project is evolved from the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"chin-herng":25,"-":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":"Yskie"},"content":" String jUnitVersion \u003d \u00275.10.0\u0027","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" archiveFileName \u003d \u0027addressbook.jar\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Yskie":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":"breezetall"},"content":"### Abdul Khaliq","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"\u003cimg src\u003d\"images/breezetall.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":"[[github](https://github.com/breezetall)]","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* Role: Project Advisor","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"### Chong Chin Herng","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"\u003cimg src\u003d\"images/chin-herng.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"[[github](http://github.com/chin-herng)]","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":"### Dinh Tran Hai Chien","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":"\u003cimg src\u003d\"images/kaya3842.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":"[[github](http://github.com/Kaya3842)]","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":"### Tang Hao Liang","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":"\u003cimg src\u003d\"images/nobodyishappy.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":"[[github](http://github.com/nobodyishappy)]","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":"* Responsibilities: Mark/Unmark Feature","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"breezetall"},"content":"### Yong Shi Kang","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"\u003cimg src\u003d\"images/yskie.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":"[[github](http://github.com/yskie)]","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":"* Responsibilities: Deletion Feature","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"Kaya3842":3,"Yskie":2,"chin-herng":3,"nobodyishappy":6,"-":42,"breezetall":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":"Kaya3842"},"content":"# TeamTracker Developer Guide","lastModifiedDate":"2024-03-07"},{"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":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"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":"nobodyishappy"},"content":"* are currently managing people for groups","lastModifiedDate":"2024-03-06"},{"lineNumber":283,"author":{"gitId":"nobodyishappy"},"content":"* has a tendency to forget tasks to complete","lastModifiedDate":"2024-03-06"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"nobodyishappy"},"content":"**Value proposition**: This app aims to help leaders to keep track of members of formed groups and their contact information. This app helps to keep track of individual and group tasks, deadlines and meetings, thus allowing them to have a better overview of the structure.","lastModifiedDate":"2024-03-06"},{"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":"nobodyishappy"},"content":"|----------|--------------------------------------------|-------------------------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-06"},{"lineNumber":294,"author":{"gitId":"nobodyishappy"},"content":"| `* * *` | student | add personal tasks | keep up to date with the different tasks to complete |","lastModifiedDate":"2024-03-06"},{"lineNumber":295,"author":{"gitId":"nobodyishappy"},"content":"| `* * *` | student | delete tasks | |","lastModifiedDate":"2024-03-06"},{"lineNumber":296,"author":{"gitId":"nobodyishappy"},"content":"| `* * *` | student | mark/unmark the tasks as done/not done | keep track of tasks that are completed |","lastModifiedDate":"2024-03-06"},{"lineNumber":297,"author":{"gitId":"nobodyishappy"},"content":"| `* *` | group leader | assign tasks to individuals within the group | manage individual tasks |","lastModifiedDate":"2024-03-06"},{"lineNumber":298,"author":{"gitId":"nobodyishappy"},"content":"| `* *` | busy group leader | see an overview of all the saved task | save time |","lastModifiedDate":"2024-03-06"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":"-"},"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":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"breezetall"},"content":"**Use case: Assigns a task**","lastModifiedDate":"2024-03-06"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"breezetall"},"content":"1. User requests to list of contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":311,"author":{"gitId":"breezetall"},"content":"2. TeamTracker shows a list of contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":312,"author":{"gitId":"breezetall"},"content":"3. User requests to assign a task to a contact","lastModifiedDate":"2024-03-06"},{"lineNumber":313,"author":{"gitId":"breezetall"},"content":"4. TeamTracker assigns the task to the contact","lastModifiedDate":"2024-03-06"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":315,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":317,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":319,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":321,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":323,"author":{"gitId":"breezetall"},"content":"* 4a. The task given does not exist.","lastModifiedDate":"2024-03-06"},{"lineNumber":324,"author":{"gitId":"breezetall"},"content":"* 4a1. TeamTracker shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":325,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":326,"author":{"gitId":"breezetall"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":327,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":328,"author":{"gitId":"breezetall"},"content":"**Use case: Delete a task**","lastModifiedDate":"2024-03-06"},{"lineNumber":329,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":330,"author":{"gitId":"breezetall"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":331,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":332,"author":{"gitId":"breezetall"},"content":"1. User requests to list tasks","lastModifiedDate":"2024-03-06"},{"lineNumber":333,"author":{"gitId":"breezetall"},"content":"2. TeamTracker shows a list of tasks","lastModifiedDate":"2024-03-06"},{"lineNumber":334,"author":{"gitId":"breezetall"},"content":"3. User requests to delete a specific task in the list","lastModifiedDate":"2024-03-06"},{"lineNumber":335,"author":{"gitId":"breezetall"},"content":"4. TeamTracker deletes the task","lastModifiedDate":"2024-03-06"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"breezetall"},"content":"* 3a1. TeamTracker shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"breezetall"},"content":"**Use case: Add a task**","lastModifiedDate":"2024-03-06"},{"lineNumber":351,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":352,"author":{"gitId":"breezetall"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":353,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":354,"author":{"gitId":"breezetall"},"content":"1. User requests to add a task to the list of tasks","lastModifiedDate":"2024-03-06"},{"lineNumber":355,"author":{"gitId":"breezetall"},"content":"2. TeamTracker adds to the list","lastModifiedDate":"2024-03-06"},{"lineNumber":356,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":357,"author":{"gitId":"breezetall"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":358,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":359,"author":{"gitId":"breezetall"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":360,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":361,"author":{"gitId":"breezetall"},"content":"* 2a. The given parameters is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":362,"author":{"gitId":"breezetall"},"content":"* 2a1. TeamTracker shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":363,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":364,"author":{"gitId":"breezetall"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"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":370,"author":{"gitId":"Yskie"},"content":"2. Should be able to be used for long periods without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-06"},{"lineNumber":371,"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":372,"author":{"gitId":"Yskie"},"content":"4. Should respond within one seconds.","lastModifiedDate":"2024-03-06"},{"lineNumber":373,"author":{"gitId":"Yskie"},"content":"5. Documentation should be easy for users that are inexperienced in command line to follow.","lastModifiedDate":"2024-03-06"},{"lineNumber":374,"author":{"gitId":"Kaya3842"},"content":"6. User Interface should be straightforward and intuitive to navigate even for first-time users.","lastModifiedDate":"2024-03-07"},{"lineNumber":375,"author":{"gitId":"Yskie"},"content":"7. Should be able to store more than 10,000 tasks.","lastModifiedDate":"2024-03-06"},{"lineNumber":376,"author":{"gitId":"Yskie"},"content":"8. Should lose no more than 1 command worth of work in case of an app crash.","lastModifiedDate":"2024-03-08"},{"lineNumber":377,"author":{"gitId":"Yskie"},"content":"9. Should work without internet access.","lastModifiedDate":"2024-03-06"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":382,"author":{"gitId":"Kaya3842"},"content":"* **System admin commands**: commands or instructions that are used through a command-line interface (CLI) ","lastModifiedDate":"2024-03-07"},{"lineNumber":383,"author":{"gitId":"Kaya3842"},"content":"or a terminal window","lastModifiedDate":"2024-03-07"},{"lineNumber":384,"author":{"gitId":"Kaya3842"},"content":"* **Action**: The AddressBook processing a user command","lastModifiedDate":"2024-03-07"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":394,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":395,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"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":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"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":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"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":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"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":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"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":429,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Kaya3842":5,"Yskie":6,"nobodyishappy":9,"-":385,"breezetall":34}},{"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":"nobodyishappy"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eTeamTracker\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":{"nobodyishappy":1,"-":66}},{"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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.storage.JsonTaskListStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.storage.TaskListStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"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":55,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" TaskListStorage taskListStorage \u003d new JsonTaskListStorage(userPrefs.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" storage \u003d new StorageManager(addressBookStorage, taskListStorage, userPrefsStorage);","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"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":76,"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":77,"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":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath() + \", \"","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" + storage.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cTaskList\u003e taskListOptional;","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" TaskList initialTasks;","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" taskListOptional \u003d storage.readTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" if (!taskListOptional.isPresent()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":" logger.info(\"Creating a new data file \" + storage.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"Kaya3842"},"content":" initialTasks \u003d taskListOptional.orElseGet(SampleDataUtil::getSampleTaskList);","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" logger.warning(\"Data file at \" + storage.getTaskListFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"Kaya3842"},"content":" + \" Will be starting with an empty task list.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"Kaya3842"},"content":" initialTasks \u003d new TaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"Kaya3842"},"content":" return new ModelManager(initialData, initialTasks, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":140,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"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":150,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":163,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":171,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":173,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"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":181,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":183,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":190,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"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":199,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":200,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":201,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":202,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":22,"-":183}},{"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":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"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":"breezetall"},"content":" /** Returns an unmodifiable view of the filtered list of tasks */","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"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":{"-":50,"breezetall":4}},{"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":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"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":"Kaya3842"},"content":" storage.saveTaskList(model.getTaskList());","lastModifiedDate":"2024-03-13"},{"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":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"breezetall"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"breezetall"},"content":" return model.getFilteredTaskList();","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Kaya3842":1,"-":88,"breezetall":6}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"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":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"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":"chin-herng"},"content":" public static final String MESSAGE_INVALID_TASK_DISPLAYED_INDEX \u003d \"The task index provided is invalid\";","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" .append(\"; Tasks: \");","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" person.getTasks().forEach(builder::append);","lastModifiedDate":"2024-03-17"},{"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":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" * Formats the {@code task} for display to the user.","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" public static String formatTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" return task.getName().taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Kaya3842":7,"chin-herng":3,"nobodyishappy":1,"-":49}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"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.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":"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":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","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 + \": 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":"chin-herng"},"content":" + PREFIX_ADDRESS + \"ADDRESS\\n \"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \";","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"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-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"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":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"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 AddCommand)) {","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":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"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":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"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":{"chin-herng":2,"-":78}},{"path":"src/main/java/seedu/address/logic/commands/AddTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"public class AddTaskCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" public static final String COMMAND_WORD \u003d \"addtask\";","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a task to the task list. \"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" + \"Parameter: \"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" + PREFIX_NAME + \"TASK NAME \"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" + PREFIX_TASK_DESCRIPTION + \"TASK DESCRIPTION \";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New task added: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"This task already exists in the task list.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" private final Task toAdd;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" * Creates an AddTaskCommand to add the specified {@code Task}","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" public AddTaskCommand(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" toAdd \u003d task;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" if (model.hasTask(toAdd)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" throw new CommandException(MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" model.addTask(toAdd);","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.formatTask(toAdd)));","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof AddTaskCommand)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand otherAddTaskCommand \u003d (AddTaskCommand) other;","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" return toAdd.equals(otherAddTaskCommand.toAdd);","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":" .toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":70,"nobodyishappy":6}},{"path":"src/main/java/seedu/address/logic/commands/AssignCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" * Assigns an existing task to an existing person in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"public class AssignCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" public static final String COMMAND_WORD \u003d \"assign\";","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" + \": Assigns the task identified \"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" + \"by the index number used in the last task listing \"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" + \"to the person identified \"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" + \"Does nothing if the task is already assigned to the person.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" + \"Parameters: TASK_INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" + \"to/ [PERSON_INDEX (must be a positive integer)]\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" + \"to/ 2\";","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_SUCCESS \u003d \"%1$s has been assigned to %2$s.\";","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" private final Index taskIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" private final Index personIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" * @param taskIndex of the task in the filtered task list to be assigned to the person","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" * @param personIndex of the person in the filtered person list to be assigned the task","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" public AssignCommand(Index taskIndex, Index personIndex) {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" requireAllNonNull(taskIndex, personIndex);","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" this.personIndex \u003d personIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" List\u003cTask\u003e lastShownTaskList \u003d model.getTaskList().getSerializeTaskList();","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" List\u003cPerson\u003e lastShownPersonList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" if (taskIndex.getZeroBased() \u003e\u003d lastShownTaskList.size()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" if (personIndex.getZeroBased() \u003e\u003d lastShownPersonList.size()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" Person personToBeAssigned \u003d lastShownPersonList.get(personIndex.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" Task taskToAssign \u003d lastShownTaskList.get(taskIndex.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" Person assignedPerson \u003d personToBeAssigned.addTask(taskToAssign);","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" model.setPerson(personToBeAssigned, assignedPerson);","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.formatTask(taskToAssign),","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" assignedPerson.getName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":" if (!(other instanceof AssignCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" AssignCommand e \u003d (AssignCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" return taskIndex.equals(e.taskIndex)","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" \u0026\u0026 personIndex.equals(e.personIndex);","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"chin-herng":87,"nobodyishappy":1}},{"path":"src/main/java/seedu/address/logic/commands/DeleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" * Deletes a task in the task list.","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" public static final String COMMAND_WORD \u003d \"deletetask\";","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" + \": Deletes the task identified by the index number used in the displayed task list.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Deleted Task: %1$s\";","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_INDEX_TOO_LARGE \u003d \"The index is not valid, use \\\"listtask\\\" to \"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" + \"display all tasks.\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_INDEX_BELOW_ONE \u003d \"The index must be greater than 0.\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" private final Index taskIndexToDelete;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" * Creates an DeleteTaskCommand to add the specified {@code index}","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" public DeleteTaskCommand(Index index) {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" taskIndexToDelete \u003d index;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" List\u003cTask\u003e lastShownList \u003d model.getTaskList().getSerializeTaskList();","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" if (taskIndexToDelete.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" throw new CommandException(MESSAGE_INDEX_TOO_LARGE);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" Task taskToDelete \u003d lastShownList.get(taskIndexToDelete.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" model.deleteTask(taskToDelete);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.formatTask(taskToDelete)));","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" if (!(other instanceof DeleteTaskCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand otherDeleteCommand \u003d (DeleteTaskCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":" return taskIndexToDelete.equals(otherDeleteCommand.taskIndexToDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":" .add(\"toDelete\", taskIndexToDelete.getOneBased())","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Yskie":74,"nobodyishappy":7}},{"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.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS]\\n \"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":48,"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":49,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e updatedTasks \u003d personToEdit.getTasks(); // edit command does not allow editing tasks","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return false;","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":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Copy constructor.","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":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"chin-herng"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address);","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"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 setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","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\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","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 setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" this.email \u003d email;","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\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","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 setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" this.address \u003d address;","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\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","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":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":190,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":191,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":195,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":199,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":201,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":203,"author":{"gitId":"chin-herng"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address);","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"chin-herng":6,"-":210}},{"path":"src/main/java/seedu/address/logic/commands/ListTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_TASKS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":" * Lists all tasks in the tasklist to the user.","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"public class ListTaskCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":" public static final String COMMAND_WORD \u003d \"listtask\";","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all tasks\";","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" model.updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"breezetall":24}},{"path":"src/main/java/seedu/address/logic/commands/MarkTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_TASKS;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * Mark a task from the task list as done.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"public class MarkTaskCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" public static final String COMMAND_WORD \u003d \"marktask\";","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" + \": Marks a task from the task list as done. \\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" + \"Parameter: INDEX (Must be a positive integer) \\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_MARK_TASK_SUCCESS \u003d \"Task has been mark as done: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" public MarkTaskCommand(Index targetIndex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" List\u003cTask\u003e lastShownList \u003d model.getTaskList().getSerializeTaskList();","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" Task taskToMark \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" taskToMark.getStatus().setAsDone();","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" model.updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" return new CommandResult(String.format(MESSAGE_MARK_TASK_SUCCESS, Messages.formatTask(taskToMark)));","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof MarkTaskCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand otherMarkTaskCommand \u003d (MarkTaskCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" return targetIndex.equals(otherMarkTaskCommand.targetIndex);","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"nobodyishappy":71}},{"path":"src/main/java/seedu/address/logic/commands/UnmarkTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_TASKS;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * Mark a task from the task list as undone.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"public class UnmarkTaskCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" public static final String COMMAND_WORD \u003d \"unmarktask\";","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" + \": Marks a task from the task list as undone. \\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" + \"Parameter: INDEX (Must be a positive integer) \\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_UNMARK_TASK_SUCCESS \u003d \"Task has been mark as undone: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" public UnmarkTaskCommand(Index targetIndex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" List\u003cTask\u003e lastShownList \u003d model.getTaskList().getSerializeTaskList();","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" Task taskToMark \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" taskToMark.getStatus().setAsUndone();","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" model.updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" return new CommandResult(String.format(MESSAGE_UNMARK_TASK_SUCCESS, Messages.formatTask(taskToMark)));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof UnmarkTaskCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand otherUnmarkTaskCommand \u003d (UnmarkTaskCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" return targetIndex.equals(otherUnmarkTaskCommand.targetIndex);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"nobodyishappy":70}},{"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":"","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-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":"chin-herng"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" Set\u003cTask\u003e taskList \u003d new HashSet\u003c\u003e(); // add command does not allow assigning tasks straight away","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" Person person \u003d new Person(name, phone, email, address, taskList);","lastModifiedDate":"2024-03-17"},{"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":{"chin-herng":5,"-":56}},{"path":"src/main/java/seedu/address/logic/parser/AddTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" * Parses input arguments and creates a new AddTaskCommand object","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"public class AddTaskCommandParser implements Parser\u003cAddTaskCommand\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" * Parses {@code args} into a command and returns it.","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" * @param args","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if {@code args} does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" public AddTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" PREFIX_NAME, PREFIX_TASK_DESCRIPTION);","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_TASK_DESCRIPTION)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TASK_DESCRIPTION);","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" TaskName name \u003d ParserUtil.parseTaskName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription description \u003d ParserUtil.parseTaskDescription(","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" argMultimap.getValue(PREFIX_TASK_DESCRIPTION).get());","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus status \u003d new TaskStatus();","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new Task(name, description, status);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" return new AddTaskCommand(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":24,"nobodyishappy":31}},{"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":"Kaya3842"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":"import seedu.address.logic.commands.ListTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.UnmarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" case AddTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" return new AddTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" case DeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" return new DeleteTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"breezetall"},"content":" case ListTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"breezetall"},"content":" return new ListTaskCommand();","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":" case AssignCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":" return new AssignCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"nobodyishappy"},"content":" case MarkTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"nobodyishappy"},"content":" return new MarkTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"nobodyishappy"},"content":" case UnmarkTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"nobodyishappy"},"content":" return new UnmarkTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Kaya3842":5,"Yskie":3,"chin-herng":4,"nobodyishappy":8,"-":86,"breezetall":4}},{"path":"src/main/java/seedu/address/logic/parser/AssignCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":" * Parses input arguments and creates a new {@code AssignCommand} object","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"public class AssignCommandParser implements Parser\u003cAssignCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" * Parses the given {@code String} of arguments in the context of the {@code AssignCommand}","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":" * and returns a {@code AssignCommand} object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":" public AssignCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" PREFIX_TO);","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_TO);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" Index taskIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" Index personIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" taskIndex \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" personIndex \u003d ParserUtil.parseIndex(argMultimap.getValue(PREFIX_TO).orElse(\"\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" AssignCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" return new AssignCommand(taskIndex, personIndex);","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"chin-herng":39}},{"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":"chin-herng"},"content":" public static final Prefix PREFIX_TO \u003d new Prefix(\"to/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" public static final Prefix PREFIX_TASK_DESCRIPTION \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"chin-herng":1,"nobodyishappy":1,"-":15}},{"path":"src/main/java/seedu/address/logic/parser/DeleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" * Parses input arguments and creates a new DeleteTaskCommand object","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"public class DeleteTaskCommandParser implements Parser\u003cDeleteTaskCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" * @param userInput","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" public DeleteTaskCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" Index taskIndexToDelete \u003d ParserUtil.parseIndex(userInput.trim());","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" return new DeleteTaskCommand(taskIndexToDelete);","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Yskie":31}},{"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":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"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 EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\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 EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"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 EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"chin-herng":1,"-":60}},{"path":"src/main/java/seedu/address/logic/parser/MarkTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" * Parses input arguments and creates a new MarkTaskCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"public class MarkTaskCommandParser implements Parser\u003cMarkTaskCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" * Parses the given {@code String} of arguments in the context of the MarkTaskCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * and returns a MarkTaskCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" public MarkTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" return new MarkTaskCommand(index);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"nobodyishappy":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-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":"-"},"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":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"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":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"nobodyishappy"},"content":" * Parses a {@code String taskName} into an {@code TaskName}.","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"nobodyishappy"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if the given {@code taskName} is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"nobodyishappy"},"content":" public static TaskName parseTaskName(String taskName) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"nobodyishappy"},"content":" String trimmedTaskName \u003d taskName.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskName.isValidTaskName(trimmedTaskName)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"nobodyishappy"},"content":" throw new ParseException(TaskName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"nobodyishappy"},"content":" return new TaskName(trimmedTaskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"nobodyishappy"},"content":" * Parses a {@code String taskDescription} into an {@code TaskDescription}.","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"nobodyishappy"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if the given {@code taskDescription} is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"nobodyishappy"},"content":" public static TaskDescription parseTaskDescription(String taskDescription) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"nobodyishappy"},"content":" String trimmedTaskDescription \u003d taskDescription.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskDescription.isValidTaskDescription(trimmedTaskDescription)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"nobodyishappy"},"content":" throw new ParseException(TaskDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"nobodyishappy"},"content":" return new TaskDescription(trimmedTaskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"nobodyishappy":32,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/UnmarkTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.UnmarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" * Parses input arguments and creates a new UnmarkTaskCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"public class UnmarkTaskCommandParser implements Parser\u003cUnmarkTaskCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" * Parses the given {@code String} of arguments in the context of the UnmarkTaskCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * and returns a UnmarkTaskCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" public UnmarkTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" return new UnmarkTaskCommand(index);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnmarkTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"nobodyishappy":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":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block,","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" * sometimes used to avoid duplication","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" * between constructors. See","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" * https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" * Note that non-static init blocks are not recommended to use. There are other","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" * ways to avoid duplication","lastModifiedDate":"2024-03-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":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" public AddressBook() {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" }","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":" * 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":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" * Returns true if a person with the same identity as {@code person} exists in","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" * the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" * Replaces the given person {@code target} in the list with","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":" * {@code editedPerson}.","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"Yskie"},"content":" * The person identity of {@code editedPerson} must not be the same as another","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"Yskie"},"content":" * existing person in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"Yskie"},"content":" * Removes {@code task} from the {@code person} in {@code AddressBook}.","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"Yskie"},"content":" * {@code task} must exist in the task list.","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"Yskie"},"content":" public void deleteAssignedTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"Yskie"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"Yskie"},"content":" persons.deleteAssignedTask(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"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":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Yskie":24,"-":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":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"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":"breezetall"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" Predicate\u003cTask\u003e PREDICATE_SHOW_ALL_TASKS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":"","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":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","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":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","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":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"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":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":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"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":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":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" * Returns the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" * Sets the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"Kaya3842"},"content":" void setTaskListFilePath(Path addressBookFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"Kaya3842"},"content":" * Replaces task list data with the data in {@code taskList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" static void setTaskList(TaskList taskList) {}","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"Kaya3842"},"content":" * Returns the task list.","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" TaskList getTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"Kaya3842"},"content":" * Adds the given task.","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"Yskie"},"content":" * {@code task} must not already exist in the task list.","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" void addTask(Task task);","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"Yskie"},"content":" * Deletes the given task.","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"Yskie"},"content":" * {@code task} the task must exist in the task list.","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":" void deleteTask(Task task);","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"Kaya3842"},"content":" * Returns true if a task has the same description as a {@code task} in the task list.","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"Kaya3842"},"content":" boolean hasTask(Task task);","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"breezetall"},"content":" * Updates the filter of the filtered task list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"breezetall"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"breezetall"},"content":" void updateFilteredTaskList(Predicate\u003cTask\u003e predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"breezetall"},"content":" /** Returns an unmodifiable view of the filtered task list */","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"breezetall"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":130,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Kaya3842":31,"Yskie":7,"-":87,"breezetall":12}},{"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":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"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":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-03-13"},{"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":"breezetall"},"content":" private final FilteredList\u003cTask\u003e filteredTasks;","lastModifiedDate":"2024-03-19"},{"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":"Kaya3842"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, TaskList taskList, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" requireAllNonNull(addressBook, taskList, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \", task list: \" + taskList","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" + \" and user prefs \" + userPrefs);","lastModifiedDate":"2024-03-13"},{"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":"Kaya3842"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-03-13"},{"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":"breezetall"},"content":" filteredTasks \u003d new FilteredList\u003c\u003e(this.taskList.getSerializeTaskList());","lastModifiedDate":"2024-03-19"},{"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":"Kaya3842"},"content":" this(new AddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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":"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":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" * Returns the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" return userPrefs.getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":" * Sets the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"nobodyishappy"},"content":" * @param taskListFilePath File path to task list.","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath(Path taskListFilePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" userPrefs.setTaskListFilePath(taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"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":"2018-08-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":135,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":140,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Task Manager","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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":142,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"Kaya3842"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"breezetall"},"content":" updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"Yskie"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"Yskie"},"content":" addressBook.deleteAssignedTask(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"Yskie"},"content":" taskList.deleteTask(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"Kaya3842"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"Kaya3842"},"content":" return taskList.hasTask(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":161,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"Kaya3842"},"content":" * Replaces task list data with the data in {@code taskList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"nobodyishappy"},"content":" * @param tasks Instance of the tasklist.","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"Kaya3842"},"content":" public void setTaskList(TaskList tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"Kaya3842"},"content":" taskList.setTaskList(tasks);","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"Kaya3842"},"content":" * Returns the task list.","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"Kaya3842"},"content":" public TaskList getTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"Kaya3842"},"content":" return taskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"breezetall"},"content":" * Returns an unmodifiable view of the list of {@code Task} backed by the internal list of","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"breezetall"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"breezetall"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"breezetall"},"content":" return filteredTasks;","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"breezetall"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"breezetall"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"breezetall"},"content":" filteredTasks.setPredicate(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":197,"author":{"gitId":"Yskie"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"Yskie"},"content":" * internal list of","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":208,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":209,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":214,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":215,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":218,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":220,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":223,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":224,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":225,"author":{"gitId":"chin-herng"},"content":" \u0026\u0026 taskList.equals(otherModelManager.taskList)","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":230,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":54,"Yskie":16,"chin-herng":1,"nobodyishappy":2,"-":139,"breezetall":18}},{"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":"Kaya3842"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"Kaya3842":2,"-":16}},{"path":"src/main/java/seedu/address/model/TaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":" * A class that stores the tasks from users.","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"public class TaskList {","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" //private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" private ObservableList\u003cTask\u003e observableList;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" * Constructor of the class.","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" public TaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" observableList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" * Creates a TaskList using the Tasks in the {@code toBeCopied}","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" public TaskList(TaskList toBeCopied) {","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" this();","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" requireNonNull(toBeCopied);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" setTaskList(toBeCopied);","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" public void setTaskList(TaskList tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" observableList.setAll(tasks.observableList);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" * Adds a task to the end of list.","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" * @param task The task to be added to the list.","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"breezetall"},"content":" observableList.add(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" * Deletes a task based on the index of list.","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" * @param task The task to be deleted.","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" observableList.remove(task);","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" public ObservableList\u003cTask\u003e getSerializeTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"breezetall"},"content":" return observableList;","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" return observableList.contains(task);","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" if (!(other instanceof TaskList)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" TaskList otherTaskList \u003d (TaskList) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" return observableList.equals(otherTaskList.observableList);","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":33,"Yskie":11,"chin-herng":23,"nobodyishappy":8,"breezetall":3}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" private Path taskListFilePath \u003d Paths.get(\"data\", \"tasklist.json\");","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"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":"Kaya3842"},"content":" setTaskListFilePath(newUserPrefs.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" return taskListFilePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath(Path taskListFilePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" this.taskListFilePath \u003d taskListFilePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath)","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" \u0026\u0026 taskListFilePath.equals(otherUserPrefs.taskListFilePath);","lastModifiedDate":"2024-03-13"},{"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 int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" return Objects.hash(guiSettings, addressBookFilePath, taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" sb.append(\"\\nLocal address book file location : \" + addressBookFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":" sb.append(\"\\nLocal task list file location : \" + taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":16,"-":85}},{"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":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"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":"Yskie"},"content":" * Guarantees: details are present and not null, field values are validated,","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" * immutable.","lastModifiedDate":"2024-03-19"},{"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":"chin-herng"},"content":" private final Set\u003cTask\u003e tasks \u003d new HashSet\u003c\u003e();","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":"-"},"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":"chin-herng"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTask\u003e tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" requireAllNonNull(name, phone, email, address);","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" this.tasks.addAll(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return phone;","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":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return email;","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 Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" * Returns an immutable task set, which throws","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" * {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" public Set\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" return Collections.unmodifiableSet(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" * @param task to be assigned to {@code this}","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" * @return a new {@code Person} as a result of assigning {@code task} to","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" * {@code this}","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" public Person addTask(Task task) {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(tasks);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" editedTasks.add(task);","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" return new Person(name, phone, email, address, editedTasks);","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" * @param task to be unassigned from {@code this}","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" * @return a new {@code Person} as a result of unassigning {@code task} to","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":" * {@code this}","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"Yskie"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"Yskie"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"Yskie"},"content":" if (task.equals(t)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"Yskie"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"Yskie"},"content":" * @param task to be unassigned from {@code this}","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"Yskie"},"content":" * @return a new {@code Person} as a result of unassigning {@code task} to","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"Yskie"},"content":" * {@code this}","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" public Person deleteTask(Task task) {","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(tasks);","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" editedTasks.remove(task);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" return new Person(name, phone, email, address, editedTasks);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"chin-herng"},"content":" \u0026\u0026 tasks.equals(otherPerson.tasks);","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 int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":141,"author":{"gitId":"chin-herng"},"content":" return Objects.hash(name, phone, email, address, tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":151,"author":{"gitId":"chin-herng"},"content":" .add(\"tasks\", tasks)","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Yskie":22,"chin-herng":26,"-":107}},{"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":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" * A list of persons that enforces uniqueness between its elements and does not","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" * allow nulls.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" * A person is considered unique by comparing using","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" * {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" * persons uses Person#isSamePerson(Person) for equality so as to ensure that","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" * the person being added or updated is","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" * a person uses Person#equals(Object) so","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * as to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d FXCollections","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" .unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","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":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" * The person identity of {@code editedPerson} must not be the same as another","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" * existing person in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"Yskie"},"content":" * Deletes the assigned task for a {@code persons}.","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"Yskie"},"content":" * {@code task} must exist be assigned to be deleted.","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"Yskie"},"content":" public void deleteAssignedTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"Yskie"},"content":" requireAllNonNull(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":" for (Person person : internalList) {","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":" if (person.hasTask(task)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":" Person taskDeletePerson \u003d person.deleteTask(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" setPerson(person, taskDeletePerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"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-09-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":160,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":161,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":162,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":163,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"lineNumber":164,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Yskie":27,"-":143}},{"path":"src/main/java/seedu/address/model/task/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":" * The representation of a task added by the user.","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"public class Task {","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":" private TaskName name;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" private TaskDescription description;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" private TaskStatus status;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" * The constructor of the class.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" * @param description Description of the task.","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" public Task(TaskName name, TaskDescription description, TaskStatus status) {","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" * Gets the name of a task.","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" * @return The name of the task.","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" public TaskName getName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" return name;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" * Gets the description of a task.","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" * @return The description of the task.","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" public TaskDescription getDescription() {","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" return description;","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" * Gets the status of a task.","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" * @return The statis of the task.","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" public TaskStatus getStatus() {","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" return status;","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" //instanceof handles null","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" if (!(other instanceof Task)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" Task otherTask \u003d (Task) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" return this.name.equals(otherTask.name)","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" \u0026\u0026 this.description.equals(otherTask.description);","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" return Objects.hash(name, description);","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" * Compare with other tasks for sorting in tags","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" * @param otherTask Task to be compared to","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" * @return value of the comparison","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" public int compare(Task otherTask) {","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" if (this.getName().taskName.compareTo(otherTask.getName().taskName) \u003d\u003d 0) {","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" return this.getDescription()","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" .taskDescription.compareTo(otherTask.getDescription().taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":" return this.getName()","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" .taskName.compareTo(otherTask.getName().taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":35,"chin-herng":4,"nobodyishappy":44}},{"path":"src/main/java/seedu/address/model/task/TaskDescription.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":" * Represents a Task\u0027s description in the task list.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"public class TaskDescription {","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" \"Task descriptions can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" public final String taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskDescription}.","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" * @param description A valid description.","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" public TaskDescription(String decription) {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(decription);","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" checkArgument(isValidTaskDescription(decription), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" taskDescription \u003d decription;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" public static boolean isValidTaskDescription(String test) {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" return taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof TaskDescription)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription otherTaskDescription \u003d (TaskDescription) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" return taskDescription.equals(otherTaskDescription.taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" return taskDescription.hashCode();","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"nobodyishappy":65}},{"path":"src/main/java/seedu/address/model/task/TaskName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":" * Represents a Task\u0027s name in the task list.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"public class TaskName {","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Task name can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" public final String taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskName}.","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" * @param name A valid name.","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" public TaskName(String name) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" checkArgument(isValidTaskName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" taskName \u003d name;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" public static boolean isValidTaskName(String test) {","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" return taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof TaskName)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" TaskName otherTaskName \u003d (TaskName) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" return taskName.equals(otherTaskName.taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" return taskName.hashCode();","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"nobodyishappy":63}},{"path":"src/main/java/seedu/address/model/task/TaskStatus.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":" * Represents a Task\u0027s status in the task list.","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"public class TaskStatus {","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":" private boolean taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskStatus}.","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" public TaskStatus() {","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d false;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskStatus}.","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" public TaskStatus(String status) {","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" if (status.equalsIgnoreCase(\"Done\")) {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d true;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d false;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" public boolean getTaskStatus() {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" return taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" public void setAsDone() {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d true;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" public void setAsUndone() {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d false;","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" if (taskStatus) {","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" return \"Done\";","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" return \"Not Done\";","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof TaskStatus)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus otherStatus \u003d (TaskStatus) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" return taskStatus \u003d\u003d otherStatus.taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"nobodyishappy":64}},{"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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"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":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"nobodyishappy"},"content":" getTaskSet(getSampleTasks()[0])),","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":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" getTaskSet(getSampleTasks()[0], getSampleTasks()[1]))","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" public static Task[] getSampleTasks() {","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" return new Task[] {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" new Task(new TaskName(\"Implement find for task\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Find task has to be done\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus()),","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" new Task(new TaskName(\"Implement remind for task\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Remind task has to be done\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus())","lastModifiedDate":"2024-03-21"},{"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":"Kaya3842"},"content":" public static TaskList getSampleTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" for (Task sampleTask : getSampleTasks()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" tasks.addTask(sampleTask);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" return tasks;","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" * Returns a task set containing the list of strings given.","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" public static Set\u003cTask\u003e getTaskSet(Task... tasks) {","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" return Arrays.stream(tasks)","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Kaya3842":7,"chin-herng":1,"nobodyishappy":18,"-":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":"-"},"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":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" private final List\u003cJsonAdaptedTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" @JsonProperty(\"tasks\") List\u003cJsonAdaptedTask\u003e tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" if (tasks !\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" this.tasks.addAll(tasks);","lastModifiedDate":"2024-03-17"},{"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":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" tasks.addAll(source.getTasks().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" .map(JsonAdaptedTask::new)","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","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":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" final List\u003cTask\u003e personTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" for (JsonAdaptedTask task : tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" personTasks.add(task.toModelType());","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" final Set\u003cTask\u003e modelTasks \u003d new HashSet\u003c\u003e(personTasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chin-herng":12,"-":97}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedTask.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" * Jackson-friendly version of {@link Task}.","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"public class JsonAdaptedTask {","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Task\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" private final String taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" private final String taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" private final String taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" @JsonCreator","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" public JsonAdaptedTask(@JsonProperty(\"taskName\") String taskName,","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" @JsonProperty(\"taskDescription\") String taskDescription,","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" @JsonProperty(\"taskStatus\") String taskStatus) {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" this.taskStatus \u003d taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" * Converts a given {@code Task} into this class for Jackson use.","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" public JsonAdaptedTask(Task source) {","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" taskName \u003d source.getName().taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" taskDescription \u003d source.getDescription().taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d source.getStatus().toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" * Converts this Jackson-friendly adapted task object into the model\u0027s {@code Task} object.","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" public Task toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" if (taskName \u003d\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" TaskName.class.getSimpleName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskName.isValidTaskName(taskName)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(TaskName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" final TaskName modelTaskName \u003d new TaskName(taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" if (taskDescription \u003d\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription.class.getSimpleName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskDescription.isValidTaskDescription(taskDescription)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(TaskDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" final TaskDescription modelTaskDescription \u003d new TaskDescription(taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" if (taskStatus \u003d\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus.class.getSimpleName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" final TaskStatus modelTaskStatus \u003d new TaskStatus(taskStatus);","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" return new Task(modelTaskName, modelTaskDescription, modelTaskStatus);","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":37,"nobodyishappy":39}},{"path":"src/main/java/seedu/address/storage/JsonSerializableTaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" * An Immutable TaskList that is serializable to JSON format.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"@JsonRootName(value \u003d \"tasklist\")","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"class JsonSerializableTaskList {","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"Task list contains duplicate task(s).\";","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" private final List\u003cJsonAdaptedTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" * Constructs a {@code JsonSerializableTaskList} with the given persons.","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" @JsonCreator","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" public JsonSerializableTaskList(@JsonProperty(\"tasks\") List\u003cJsonAdaptedTask\u003e tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" this.tasks.addAll(tasks);","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" * Converts a given {@code TaskList} into this class for Jackson use.","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" * {@code JsonSerializableTaskList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" public JsonSerializableTaskList(TaskList source) {","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" tasks.addAll(source.getSerializeTaskList().stream().map(JsonAdaptedTask::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" * Converts this address book into the model\u0027s {@code TaskList} object.","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" public TaskList toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" for (JsonAdaptedTask jsonAdaptedTask : tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" Task task \u003d jsonAdaptedTask.toModelType();","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" if (taskList.hasTask(task)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" return taskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":60}},{"path":"src/main/java/seedu/address/storage/JsonTaskListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" * A class to access TaskList data stored as a json file on the hard disk.","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"public class JsonTaskListStorage implements TaskListStorage {","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonTaskListStorage.class);","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" private Path filePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" public JsonTaskListStorage(Path filePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" return filePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" public Optional\u003cTaskList\u003e readTaskList() throws DataLoadingException {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" return readTaskList(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" * Similar to {@link #readTaskList()}.","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" public Optional\u003cTaskList\u003e readTaskList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cJsonSerializableTaskList\u003e jsonTaskList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" filePath, JsonSerializableTaskList.class);","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" if (!jsonTaskList.isPresent()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" return Optional.of(jsonTaskList.get().toModelType());","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList) throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" saveTaskList(taskList, filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" * Similar to {@link #saveTaskList(TaskList)}.","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList, Path filePath) throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(taskList);","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"Kaya3842"},"content":" JsonUtil.saveJsonFile(new JsonSerializableTaskList(taskList), filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":80}},{"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":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-25"},{"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 Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"public interface Storage extends AddressBookStorage, TaskListStorage, UserPrefsStorage {","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cTaskList\u003e readTaskList() throws DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" void saveTaskList(TaskList taskList) throws IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Kaya3842":11,"-":31}},{"path":"src/main/java/seedu/address/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" private TaskListStorage taskListStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" public StorageManager(AddressBookStorage addressBookStorage, TaskListStorage taskListStorage,","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" this.taskListStorage \u003d taskListStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"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":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d TaskList methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":" return taskListStorage.getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"Kaya3842"},"content":" * Returns TaskList data.","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"Kaya3842"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" public Optional\u003cTaskList\u003e readTaskList() throws DataLoadingException {","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" return readTaskList(taskListStorage.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"Kaya3842"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":" * @see #getTaskListFilePath()","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"Kaya3842"},"content":" public Optional\u003cTaskList\u003e readTaskList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"Kaya3842"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"Kaya3842"},"content":" return taskListStorage.readTaskList(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"Kaya3842"},"content":" * Saves the given {@link TaskList} to the storage.","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"Kaya3842"},"content":" * @param taskList cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"Kaya3842"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList) throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"Kaya3842"},"content":" saveTaskList(taskList, taskListStorage.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"Kaya3842"},"content":" * @see #saveTaskList(TaskList)","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList, Path filePath) throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"Kaya3842"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"Kaya3842"},"content":" taskListStorage.saveTaskList(taskList, filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":56,"-":77}},{"path":"src/main/java/seedu/address/storage/TaskListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" * Represents a storage for {@link seedu.address.model.TaskList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"public interface TaskListStorage {","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" * Returns TaskList data.","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cTaskList\u003e readTaskList() throws DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" * @see #getTaskListFilePath()","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cTaskList\u003e readTaskList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" * Saves the given {@link TaskList} to the storage.","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" * @param taskList cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" void saveTaskList(TaskList taskList) throws IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" * @see #saveTaskList(TaskList)","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" void saveTaskList(TaskList taskList, Path filePath) throws IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":44}},{"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":"breezetall"},"content":" private TaskListPanel taskListPanel;","lastModifiedDate":"2024-03-17"},{"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":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":" private StackPane taskListPanelPlaceholder;","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"breezetall"},"content":" taskListPanel \u003d new TaskListPanel(logic.getFilteredTaskList());","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"breezetall"},"content":" taskListPanelPlaceholder.getChildren().add(taskListPanel.getRoot());","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" primaryStage.show();","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":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":176,"author":{"gitId":"breezetall"},"content":" public TaskListPanel getTaskListPanel() {","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"breezetall"},"content":" return taskListPanel;","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"-":196,"breezetall":10}},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" private FlowPane tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" person.getTasks().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" .sorted((t1, t2) -\u003e t1.compare(t2))","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" .forEach(task -\u003e tasks.getChildren().add(new Label(task.getName().taskName)));","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"chin-herng":2,"nobodyishappy":2,"-":53}},{"path":"src/main/java/seedu/address/ui/TaskCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"public class TaskCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":" private static final String FXML \u003d \"TaskListCard.fxml\";","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" public final Task task;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"breezetall"},"content":" private Label name;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":" private Label id;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" private Label status;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" private Label description;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" * Creates a {@code TaskCode} with the given {@code Task} and index to display.","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"breezetall"},"content":" public TaskCard(Task task, int displayedIndex) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":" super(FXML);","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"breezetall"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"breezetall"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" name.setText(task.getName().taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" status.setText(task.getStatus().toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" description.setText(task.getDescription().taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"nobodyishappy":4,"breezetall":44}},{"path":"src/main/java/seedu/address/ui/TaskListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"public class TaskListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":" private static final String FXML \u003d \"TaskListPanel.fxml\";","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" private final Logger logger \u003d LogsCenter.getLogger(TaskListPanel.class);","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" private ListView\u003cTask\u003e taskListView;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" public TaskListPanel(ObservableList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":" super(FXML);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" taskListView.setItems(taskList);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"breezetall"},"content":" taskListView.setCellFactory(listView -\u003e new TaskListViewCell());","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"breezetall"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" class TaskListViewCell extends ListCell\u003cTask\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" protected void updateItem(Task task, boolean empty) {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" super.updateItem(task, empty);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"breezetall"},"content":" if (empty || task \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"breezetall"},"content":" setText(null);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"breezetall"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"breezetall"},"content":" setGraphic(new TaskCard(task, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"breezetall":49}},{"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":"chin-herng"},"content":"#tasks {","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":"#tasks .label {","lastModifiedDate":"2024-03-17"},{"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":{"chin-herng":2,"-":350}},{"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":"breezetall"},"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":"breezetall"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":"\u003cfx:root minHeight\u003d\"600\" minWidth\u003d\"450\" onCloseRequest\u003d\"#handleExit\" title\u003d\"Address App\" type\u003d\"javafx.stage.Stage\" 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":" \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":"breezetall"},"content":" \u003cStackPane fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-17"},{"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":"breezetall"},"content":" \u003cStackPane fx:id\u003d\"resultDisplayPlaceholder\" maxHeight\u003d\"100\" minHeight\u003d\"100\" prefHeight\u003d\"100\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":44,"author":{"gitId":"breezetall"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-17"},{"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":"breezetall"},"content":" \u003cHBox prefWidth\u003d\"200.0\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":50,"author":{"gitId":"breezetall"},"content":" \u003cVBox fx:id\u003d\"personList\" minWidth\u003d\"340\" prefWidth\u003d\"600.0\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":52,"author":{"gitId":"breezetall"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":57,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"breezetall"},"content":" \u003cVBox fx:id\u003d\"taskList\" minWidth\u003d\"340\" prefWidth\u003d\"340.0\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"breezetall"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"breezetall"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"breezetall"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"breezetall"},"content":" \u003cStackPane fx:id\u003d\"taskListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"breezetall"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"breezetall"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"breezetall"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"-":51,"breezetall":20}},{"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":"chin-herng"},"content":" \u003cFlowPane fx:id\u003d\"tasks\" /\u003e","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chin-herng":1,"-":35}},{"path":"src/main/resources/view/TaskListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"breezetall"},"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":14,"author":{"gitId":"breezetall"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"40.0\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"status\" styleClass\u003d\"cell_medium_label\" text\u003d\"\\$status\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"description\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$description\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"breezetall"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"nobodyishappy":3,"breezetall":32}},{"path":"src/main/resources/view/TaskListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"breezetall"},"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":"breezetall"},"content":" \u003cListView fx:id\u003d\"taskListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"breezetall":8}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"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":"Kaya3842"},"content":"import seedu.address.storage.JsonTaskListStorage;","lastModifiedDate":"2024-03-13"},{"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":"Kaya3842"},"content":" JsonTaskListStorage taskListStorage \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" new JsonTaskListStorage(temporaryFolder.resolve(\"tasklist.json\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, taskListStorage, userPrefsStorage);","lastModifiedDate":"2024-03-13"},{"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":"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":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"breezetall"},"content":" public void getFilteredTaskList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"breezetall"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredTaskList().remove(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"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":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), model.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"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":"Kaya3842"},"content":" // Inject LogicManager with a TaskListStorage that throws the IOException e when saving","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"Kaya3842"},"content":" JsonTaskListStorage taskListStorage \u003d new JsonTaskListStorage(prefPath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList, Path filePath)","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"Kaya3842"},"content":" throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"Kaya3842"},"content":" throw e;","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"Kaya3842"},"content":" };","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":181,"author":{"gitId":"Kaya3842"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, taskListStorage, userPrefsStorage);","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":186,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":188,"author":{"gitId":"chin-herng"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTasks().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":190,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Kaya3842":16,"chin-herng":1,"-":171,"breezetall":5}},{"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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"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":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Kaya3842":3,"-":46}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"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":"Kaya3842"},"content":" * A default model stub that have all methods failing.","lastModifiedDate":"2024-03-13"},{"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":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"Kaya3842"},"content":" * Returns the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":161,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"Kaya3842"},"content":" * Sets the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"Kaya3842"},"content":" * @param addressBookFilePath","lastModifiedDate":"2024-03-13"},{"lineNumber":165,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"Kaya3842"},"content":" * Returns the task list.","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"Kaya3842"},"content":" public TaskList getTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"Kaya3842"},"content":" * Adds the given task.","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"Kaya3842"},"content":" * {@code task} must not already exist in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"Kaya3842"},"content":" * @param task","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"Kaya3842"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"Yskie"},"content":" * Deletes a task based on the index of list.","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"Yskie"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"Yskie"},"content":" * @param task The task to be deleted in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"Yskie"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"Yskie"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"Yskie"},"content":" * Returns true if a task has the same description as a {@code task} in the task","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"Yskie"},"content":" * list.","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":204,"author":{"gitId":"Kaya3842"},"content":" * @param task","lastModifiedDate":"2024-03-13"},{"lineNumber":205,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"Kaya3842"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":208,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":209,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":211,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"breezetall"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"breezetall"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"breezetall"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":218,"author":{"gitId":"breezetall"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":223,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":227,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":228,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"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"},{"lineNumber":232,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":234,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":235,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":236,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":238,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":239,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":240,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":243,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":244,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":246,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"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"},{"lineNumber":251,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":252,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":253,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":254,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":256,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":257,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":258,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":259,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":260,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":263,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":265,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":266,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":268,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":269,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":270,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":272,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":274,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"Kaya3842":49,"Yskie":12,"-":203,"breezetall":10}},{"path":"src/test/java/seedu/address/logic/commands/AddTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"class AddTaskCommandTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" private ModelManager model;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" @BeforeEach","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" public void setUp() {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" model \u003d new ModelManager();","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" public void constructor_nullTask_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddTaskCommand(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" public void execute_taskAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" Task validTask \u003d new Task(new TaskName(\"Implement test\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" CommandResult commandResult \u003d new AddTaskCommand(validTask).execute(model);","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" assertTrue(model.hasTask(validTask));","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" public void execute_duplicateTask_throwsCommandException() throws CommandException {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" Task validTask \u003d new Task(new TaskName(\"Implement test\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" new AddTaskCommand(validTask).execute(model);","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand.MESSAGE_DUPLICATE_TASK, () -\u003e new AddTaskCommand(validTask).execute(model));","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" void testEquals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" Task testTask1 \u003d new Task(new TaskName(\"Implement test1\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"First test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" Task testTask2 \u003d new Task(new TaskName(\"Implement test2\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Second test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand addTaskCommand1 \u003d new AddTaskCommand(testTask1);","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand addTaskCommand2 \u003d new AddTaskCommand(testTask2);","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" assertTrue(addTaskCommand1.equals(addTaskCommand1));","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand addTaskCommandCopy1 \u003d new AddTaskCommand(testTask1);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(addTaskCommandCopy1.equals(addTaskCommand1));","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":" assertFalse(addTaskCommand1.equals(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"Kaya3842"},"content":" assertFalse(addTaskCommand1.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" // different tasks -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" assertFalse(addTaskCommand1.equals(addTaskCommand2));","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" void testToString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"nobodyishappy"},"content":" Task test \u003d new Task(new TaskName(\"Implement test\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(test);","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" String expected \u003d AddTaskCommand.class.getCanonicalName() + \"{toAdd\u003d\" + test + \"}\";","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":" assertEquals(expected, addTaskCommand.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":73,"nobodyishappy":20}},{"path":"src/test/java/seedu/address/logic/commands/AssignCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":"class AssignCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" public void execute_assignTaskUnfilteredList_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(firstPerson.getTasks());","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" Task taskToAssign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" editedTasks.add(taskToAssign);","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withTasks(editedTasks).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(AssignCommand.MESSAGE_SUCCESS, Messages.formatTask(taskToAssign),","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" editedPerson.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(assignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(firstPerson.getTasks());","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" Task taskToAssign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" editedTasks.add(taskToAssign);","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withTasks(editedTasks).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(AssignCommand.MESSAGE_SUCCESS, Messages.formatTask(taskToAssign),","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" editedPerson.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(assignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" public void execute_invalidTaskIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(outOfBoundIndex, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, outOfBoundIndex);","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" * but smaller than size of address book","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, outOfBoundIndex);","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignOneToOneCommand \u003d new AssignCommand(INDEX_FIRST, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignOneToTwoCommand \u003d new AssignCommand(INDEX_FIRST, INDEX_SECOND);","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignTwoToOneCommand \u003d new AssignCommand(INDEX_SECOND, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"chin-herng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"chin-herng"},"content":" assertEquals(assignOneToOneCommand, assignOneToOneCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"chin-herng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommandCopy \u003d new AssignCommand(INDEX_FIRST, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":" assertEquals(assignOneToOneCommand, assignCommandCopy);","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"chin-herng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(assignOneToOneCommand, null);","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"chin-herng"},"content":" // different indices -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(assignOneToOneCommand, assignOneToTwoCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(assignOneToOneCommand, assignTwoToOneCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"chin-herng":126,"nobodyishappy":2}},{"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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"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":{"Kaya3842":3,"-":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.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" public static final TaskName VALID_TASK_NAME_FIRST \u003d new TaskName(\"Implement Testing 1\");","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" public static final TaskName VALID_TASK_NAME_SECOND \u003d new TaskName(\"Implement Testing 2\");","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" public static final TaskDescription VALID_TASK_DESCRIPTION_FIRST \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Code for testing of test 1\");","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" public static final TaskDescription VALID_TASK_DESCRIPTION_SECOND \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Code for testing of test 2\");","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" public static final TaskStatus VALID_TASK_STATUS \u003d new TaskStatus();","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" public static final Task VALID_TASK_FIRST \u003d new Task(VALID_TASK_NAME_FIRST,","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" VALID_TASK_DESCRIPTION_FIRST, VALID_TASK_STATUS);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" public static final Task VALID_TASK_SECOND \u003d new Task(VALID_TASK_NAME_SECOND,","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" VALID_TASK_DESCRIPTION_SECOND, VALID_TASK_STATUS);","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":124,"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":125,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"chin-herng":2,"nobodyishappy":17,"-":118}},{"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":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":"Kaya3842"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":"chin-herng"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"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":"Kaya3842"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"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":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND);","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"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":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Kaya3842":4,"chin-herng":12,"-":105}},{"path":"src/test/java/seedu/address/logic/commands/DeleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"public class DeleteTaskCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), model.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" Task expectedTaskToDelete \u003d expectedModel.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" expectedModel.deleteTask(expectedTaskToDelete);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" Task taskToDelete \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" String expectedMessage \u003d String.format(DeleteTaskCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" Messages.formatTask(taskToDelete));","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" public void execute_invalidTaskIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" assertCommandFailure(deleteTaskCommand, model, DeleteTaskCommand.MESSAGE_INDEX_TOO_LARGE);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand deleteFirstCommand \u003d new DeleteTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand deleteSecondCommand \u003d new DeleteTaskCommand(INDEX_SECOND);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand deleteFirstCommandCopy \u003d new DeleteTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(targetIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":" String expected \u003d DeleteTaskCommand.class.getCanonicalName() + \"{toDelete\u003d\" + targetIndex.getOneBased() + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"Yskie"},"content":" assertEquals(expected, deleteTaskCommand.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"Yskie":74,"nobodyishappy":3}},{"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":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"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":"Kaya3842"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":"chin-herng"},"content":" Person editedPerson \u003d new PersonBuilder().withTasks(model.getFilteredPersonList().get(0).getTasks()).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST, descriptor);","lastModifiedDate":"2024-03-17"},{"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":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":"chin-herng"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" .withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-17"},{"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":"Kaya3842"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"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":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST, new EditPersonDescriptor());","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST,","lastModifiedDate":"2024-03-17"},{"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":"Kaya3842"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":" new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":"chin-herng"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","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":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","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":"chin-herng"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST,","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":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"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":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"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":"chin-herng"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST, DESC_AMY);","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"chin-herng"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST, copyDescriptor);","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND, DESC_AMY)));","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST, DESC_BOB)));","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"Kaya3842":16,"chin-herng":22,"-":153}},{"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":"","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 name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"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 phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_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 email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_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 address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).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":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \"}\";","lastModifiedDate":"2024-03-17"},{"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":{"chin-herng":1,"-":64}},{"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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"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":"Kaya3842"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":{"Kaya3842":3,"-":89}},{"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":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Kaya3842":3,"chin-herng":2,"-":35}},{"path":"src/test/java/seedu/address/logic/commands/ListTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":"public class ListTaskCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" private Model model;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" private Model expectedModel;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"breezetall"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" assertCommandSuccess(new ListTaskCommand(), model, ListTaskCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"breezetall"},"content":" /* Test for find method */","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" /*","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"breezetall":41}},{"path":"src/test/java/seedu/address/logic/commands/MarkTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"public class MarkTaskCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" private Model model \u003d new ModelManager(new AddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" public void execute_validIndexTaskList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" Task taskToMark \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" String expectedMessage \u003d String.format(MarkTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" Messages.formatTask(taskToMark));","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" ModelManager expectedModel \u003d new ModelManager(new AddressBook(), model.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" taskToMark.getStatus().setAsDone();","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" assertCommandSuccess(markTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" public void execute_invalidIndexTaskList_throwsCommandException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" assertCommandFailure(markTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand markTaskFirstCommand \u003d new MarkTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand markTaskSecondCommand \u003d new MarkTaskCommand(INDEX_SECOND);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(markTaskFirstCommand.equals(markTaskFirstCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand markTaskFirstCommandCopy \u003d new MarkTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(markTaskFirstCommand.equals(markTaskFirstCommandCopy));","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(markTaskFirstCommand.equals(1));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(markTaskFirstCommand.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(markTaskFirstCommand.equals(markTaskSecondCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(targetIndex);","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" String expected \u003d MarkTaskCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expected, markTaskCommand.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"nobodyishappy":77}},{"path":"src/test/java/seedu/address/logic/commands/UnmarkTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"public class UnmarkTaskCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" private Model model \u003d new ModelManager(new AddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" public void execute_validIndexTaskList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" Task taskToMark \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" String expectedMessage \u003d String.format(UnmarkTaskCommand.MESSAGE_UNMARK_TASK_SUCCESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" Messages.formatTask(taskToMark));","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" ModelManager expectedModel \u003d new ModelManager(new AddressBook(), model.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" taskToMark.getStatus().setAsUndone();","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" assertCommandSuccess(unmarkTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" public void execute_invalidIndexTaskList_throwsCommandException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" assertCommandFailure(unmarkTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand unmarkTaskFirstCommand \u003d new UnmarkTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand unmarkTaskSecondCommand \u003d new UnmarkTaskCommand(INDEX_SECOND);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(unmarkTaskFirstCommand.equals(unmarkTaskFirstCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand unmarkTaskFirstCommandCopy \u003d new UnmarkTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(unmarkTaskFirstCommand.equals(unmarkTaskFirstCommandCopy));","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(unmarkTaskFirstCommand.equals(1));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(unmarkTaskFirstCommand.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(unmarkTaskFirstCommand.equals(unmarkTaskSecondCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(targetIndex);","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" String expected \u003d UnmarkTaskCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expected, unmarkTaskCommand.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"nobodyishappy":76}},{"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.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","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.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTasks().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" + ADDRESS_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" public void parse_repeatedValue_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" + ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"chin-herng"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"chin-herng"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"chin-herng"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":166,"author":{"gitId":"chin-herng"},"content":" + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"chin-herng":13,"-":156}},{"path":"src/test/java/seedu/address/logic/parser/AddTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"public class AddTaskCommandParserTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" private AddTaskCommandParser parser \u003d new AddTaskCommandParser();","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" public void parse_validInput_success() throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" String userInput \u003d \" \" + PREFIX_NAME + \"test 1 \" + PREFIX_TASK_DESCRIPTION + \"test 1\";","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().withTaskName(\"test 1\").withTaskDescription(\"test 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" assertParseSuccess(parser, userInput, new AddTaskCommand(task));","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" public void parse_emptyInput_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" String userInput \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":24,"nobodyishappy":7}},{"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":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-14"},{"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_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"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":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":"import seedu.address.logic.commands.ListTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.UnmarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"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":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.testutil.TaskUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(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":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" public void parseCommand_addtask() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new Task(new TaskName(\"Implement test\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());;","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand command \u003d (AddTaskCommand) parser.parseCommand(TaskUtil.getAddTaskCommand(task));","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" assertNotNull(command);","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" public void parseCommand_deletetask() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" parser.parseCommand(\"addtask n/ test d/ test description\");","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand command \u003d (DeleteTaskCommand) parser.parseCommand(TaskUtil.getDeleteTaskCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":" Index.fromOneBased(1)));","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" assertEquals(new DeleteTaskCommand(INDEX_FIRST), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"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_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST), command);","lastModifiedDate":"2024-03-17"},{"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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" + INDEX_FIRST.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" assertEquals(new EditCommand(INDEX_FIRST, descriptor), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"nobodyishappy"},"content":" public void parseCommand_assign() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" AssignCommand command \u003d (AssignCommand) parser.parseCommand(","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" AssignCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased() + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" + PREFIX_TO + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" assertEquals(new AssignCommand(INDEX_FIRST, INDEX_FIRST), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"nobodyishappy"},"content":" public void parseCommand_markTask() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand command \u003d (MarkTaskCommand) parser.parseCommand(","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(new MarkTaskCommand(INDEX_FIRST), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"nobodyishappy"},"content":" public void parseCommand_unmarkTask() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand command \u003d (UnmarkTaskCommand) parser.parseCommand(","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(new UnmarkTaskCommand(INDEX_FIRST), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":144,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"breezetall"},"content":" public void parseCommand_listTask() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"breezetall"},"content":" assertTrue(parser.parseCommand(ListTaskCommand.COMMAND_WORD) instanceof ListTaskCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"breezetall"},"content":" assertTrue(parser.parseCommand(ListTaskCommand.COMMAND_WORD + \" 3\") instanceof ListTaskCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":152,"author":{"gitId":"Yskie"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), (","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"Yskie"},"content":" ) -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Kaya3842":9,"Yskie":11,"chin-herng":12,"nobodyishappy":23,"-":96,"breezetall":9}},{"path":"src/test/java/seedu/address/logic/parser/AssignCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"public class AssignCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":" private static final String INVALID_TO \u003d \" \" + PREFIX_TO + \"a\";","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" private static final String TO_ONE \u003d \" \" + PREFIX_TO + \"1\";","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":" private static final String TO_TWO \u003d \" \" + PREFIX_TO + \"2\";","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" private AssignCommandParser parser \u003d new AssignCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" public void parse_validArgs_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" assertParseSuccess(parser, \"1\" + TO_ONE, new AssignCommand(INDEX_FIRST, INDEX_FIRST));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" public void parse_repeatedTo_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\" + TO_ONE + TO_TWO,","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TO));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" // invalid value followed by valid value","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\" + INVALID_TO + TO_ONE,","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TO));","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" // valid value followed by invalid value","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\" + TO_ONE + INVALID_TO,","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TO));","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" // no task index specified","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" // no person index specified","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" // no task index and no person index specified","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \" \", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" // negative index","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"-1\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" // zero index","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"0\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 a\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 i/ a\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" public void parse_invalidTo_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" // negative index","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 \" + PREFIX_TO + \"-1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" // zero index","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 \" + PREFIX_TO + \"0\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" // invalid arguments being parsed as to","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 \" + TO_ONE + \" a\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"chin-herng":86}},{"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":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","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":"chin-herng"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST));","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":{"chin-herng":2,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/DeleteTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"public class DeleteTaskCommandParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" private DeleteTaskCommandParser parser \u003d new DeleteTaskCommandParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" assertParseSuccess(parser, \"1\", new DeleteTaskCommand(INDEX_FIRST));","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"Yskie":32}},{"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.NAME_DESC_AMY;","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.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","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":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" Index targetIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" + ADDRESS_DESC_AMY + NAME_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" Index targetIndex \u003d INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":" Index targetIndex \u003d INDEX_THIRD;","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","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":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":" // AddCommandParserTest#parse_repeatedValue_failure()","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"chin-herng"},"content":" Index targetIndex \u003d INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","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":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"chin-herng"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"chin-herng"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + PHONE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"chin-herng"},"content":" + EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"chin-herng":14,"-":160}},{"path":"src/test/java/seedu/address/logic/parser/MarkTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" * outside of the MarkTaskCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * same path through the MarkTaskCommand, and therefore we test only one of them.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"public class MarkTaskCommandParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" private MarkTaskCommandParser parser \u003d new MarkTaskCommandParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" public void parse_validArgs_returnsMarkTaskCommand() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" assertParseSuccess(parser, \"1\", new MarkTaskCommand(INDEX_FIRST));","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"nobodyishappy":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":"-"},"content":"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":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" assertEquals(INDEX_FIRST, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" assertEquals(INDEX_FIRST, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2024-03-17"},{"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":{"chin-herng":3,"-":193}},{"path":"src/test/java/seedu/address/logic/parser/UnmarkTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.UnmarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"public class UnmarkTaskCommandParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" private UnmarkTaskCommandParser parser \u003d new UnmarkTaskCommandParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" public void parse_validArgs_returnsUnmarkTaskCommand() {","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" assertParseSuccess(parser, \"1\", new UnmarkTaskCommand(INDEX_FIRST));","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnmarkTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"nobodyishappy":23}},{"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":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_FIRST;","lastModifiedDate":"2024-03-21"},{"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":"nobodyishappy"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST)","lastModifiedDate":"2024-03-21"},{"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":"nobodyishappy"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST)","lastModifiedDate":"2024-03-21"},{"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":{"nobodyishappy":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":"Kaya3842"},"content":"import static seedu.address.testutil.TypicalTasks.TASK_1;","lastModifiedDate":"2024-03-14"},{"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":"Kaya3842"},"content":"import seedu.address.testutil.TypicalTasks;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" private TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.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":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.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":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setTaskListFilePath(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath_validPath_setTaskListFilePath() {","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" Path path \u003d Paths.get(\"task/list/file/path\");","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" modelManager.setTaskListFilePath(path);","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"Kaya3842"},"content":" assertEquals(path, modelManager.getTaskListFilePath());","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_nullTask_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"Kaya3842"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasTask(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_taskNotInTaskList_returnsFalse() {","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"Kaya3842"},"content":" assertFalse(modelManager.hasTask(TASK_1));","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_taskInTaskList_returnsTrue() {","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"Kaya3842"},"content":" modelManager.addTask(TASK_1);","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"Kaya3842"},"content":" assertTrue(modelManager.hasTask(TASK_1));","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"Kaya3842"},"content":" TaskList taskList \u003d TypicalTasks.getTypicalTaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":132,"author":{"gitId":"Kaya3842"},"content":" TaskList differentTaskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"Kaya3842"},"content":" modelManager \u003d new ModelManager(addressBook, taskList, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"Kaya3842"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, taskList, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":150,"author":{"gitId":"Kaya3842"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, taskList, userPrefs)));","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":152,"author":{"gitId":"breezetall"},"content":" // different taskList -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"breezetall"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentTaskList, userPrefs)));","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":156,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":158,"author":{"gitId":"Kaya3842"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, taskList, userPrefs)));","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":161,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":164,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":165,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":166,"author":{"gitId":"Kaya3842"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, taskList, differentUserPrefs)));","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"Kaya3842":38,"-":128,"breezetall":2}},{"path":"src/test/java/seedu/address/model/TaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"public class TaskListTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" private TaskList taskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" private Task task1;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" private Task task2;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" @BeforeEach","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" public void setUp() {","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" task1 \u003d new TaskBuilder().withTaskName(\"Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" task2 \u003d new TaskBuilder().withTaskName(\"Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" public void addTask_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task1);","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" assertTrue(taskList.hasTask(task1));","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task1);","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" assertTrue(taskList.hasTask(task1));","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_failure() {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" assertFalse(taskList.hasTask(task1));","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" public void getSerializeTaskList_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task1);","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task2);","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" assertEquals(2, taskList.getSerializeTaskList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":46,"nobodyishappy":3}},{"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":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_FIRST;","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":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"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":"chin-herng"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTasks().remove(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" public void deleteTask() {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" Person person \u003d new PersonBuilder().withTasks(task).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(new PersonBuilder().build(), person.deleteTask(task));","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" public void hasTask() {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" Person person \u003d new PersonBuilder().withTasks(task).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(person.hasTask(task));","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" .withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).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":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" System.out.println(ALICE.equals(5));","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"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 phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_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 email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_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-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":107,"author":{"gitId":"nobodyishappy"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTasks(VALID_TASK_FIRST).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"chin-herng"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"chin-herng"},"content":" + \", tasks\u003d\" + ALICE.getTasks() + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"Yskie":2,"chin-herng":8,"nobodyishappy":12,"-":96}},{"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":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_FIRST;","lastModifiedDate":"2024-03-21"},{"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":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST)","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" public void deletes_assignedTask_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" Task test \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" ALICE.addTask(test);","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Yskie"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"nobodyishappy"},"content":" uniquePersonList.deleteAssignedTask(test);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(ALICE.hasTask(test));","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","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(ALICE);","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_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"nobodyishappy"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST)","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"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 setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","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_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"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_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"Yskie":6,"nobodyishappy":8,"-":172}},{"path":"src/test/java/seedu/address/model/task/TaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"public class TaskTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" public void constructor_validInput_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().withTaskName(\"Test\").withTaskDescription(\"Test\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(\"Test\", task.getName().taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(\"Test\", task.getDescription().taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(task.getStatus().getTaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" public void equals_sameObject_true() {","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" assertTrue(task.equals(task));","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" public void equals_differentObjectSameName_true() {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(task1.equals(task2));","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" public void equals_differentObjectDifferentName_false() {","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().withTaskName(\"Test Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().withTaskName(\"Test Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(task1.equals(task2));","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" public void equals_differentObjectSameDescription_true() {","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" assertTrue(task1.equals(task2));","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" public void equals_differentObjectDifferentDescription_false() {","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().withTaskDescription(\"Test Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().withTaskDescription(\"Test Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" assertFalse(task1.equals(task2));","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" public void equals_differentObjectDifferentType_false() {","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" assertFalse(task.equals(new Object()));","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" public void setAsDone_checkMarkStatus_true() {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" task.getStatus().setAsDone();","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(task.getStatus().getTaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" public void setAsUndone_checkUnmarkStatus_false() {","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" task.getStatus().setAsUndone();","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(task.getStatus().getTaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" public void compare_differentName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().withTaskName(\"Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().withTaskName(\"Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(-1, task1.compare(task2));","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"nobodyishappy"},"content":" public void compare_differentDescription() {","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().withTaskDescription(\"Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().withTaskDescription(\"Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(-1, task1.compare(task2));","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":34,"nobodyishappy":54}},{"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":"nobodyishappy"},"content":" private static final String INVALID_TASK_NAME \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" private static final String INVALID_TASK_DESCRIPTION \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" private static final String TASK_STATUS \u003d \"Not Done\";","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"chin-herng"},"content":" private static final List\u003cJsonAdaptedTask\u003e VALID_TASKS \u003d BENSON.getTasks().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" .map(JsonAdaptedTask::new)","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","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 toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.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":"chin-herng"},"content":" public void toModelType_invalidTasks_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" List\u003cJsonAdaptedTask\u003e invalidTasks \u003d new ArrayList\u003c\u003e(VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"nobodyishappy"},"content":" invalidTasks.add(new JsonAdaptedTask(INVALID_TASK_NAME, INVALID_TASK_DESCRIPTION, TASK_STATUS));","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, 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":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chin-herng":13,"nobodyishappy":4,"-":96}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedTaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"public class JsonAdaptedTaskTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" private static final String VALID_NAME \u003d \"Valid Task Name\";","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" private static final String EMPTY_NAME \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" private static final String VALID_DESCRIPTION \u003d \"Valid Task Description\";","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" private static final String EMPTY_DESCRIPTION \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" private static final String STATUS \u003d \"Not Done\";","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" private static final Task VALID_TASK \u003d new TaskBuilder().withTaskName(VALID_NAME)","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" .withTaskDescription(VALID_DESCRIPTION).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_validTask_success() throws IllegalValueException {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d new JsonAdaptedTask(VALID_NAME, VALID_DESCRIPTION, STATUS);","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" Task modelTask \u003d jsonAdaptedTask.toModelType();","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(VALID_TASK, modelTask);","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_emptyName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d new JsonAdaptedTask(EMPTY_NAME, VALID_DESCRIPTION, STATUS);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_emptyDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d new JsonAdaptedTask(VALID_NAME, EMPTY_DESCRIPTION, STATUS);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d new JsonAdaptedTask(null, VALID_DESCRIPTION, STATUS);","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_nullDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d new JsonAdaptedTask(VALID_NAME, null, STATUS);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_nullStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d new JsonAdaptedTask(VALID_NAME, VALID_DESCRIPTION, null);","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":23,"nobodyishappy":35}},{"path":"src/test/java/seedu/address/storage/JsonSerializableTaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"public class JsonSerializableTaskListTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" private static final Task TASK_1 \u003d new TaskBuilder().withTaskName(\"Test 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" private static final Task TASK_2 \u003d new TaskBuilder().withTaskName(\"Test 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" public void toModelType_validTaskList_success() throws IllegalValueException {","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_1);","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_2);","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" JsonSerializableTaskList jsonSerializableTaskList \u003d new JsonSerializableTaskList(taskList);","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" TaskList modelTaskList \u003d jsonSerializableTaskList.toModelType();","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" assertEquals(taskList.getSerializeTaskList(), modelTaskList.getSerializeTaskList());","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" public void toModelType_duplicateTasks_throwsIllegalValueException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_1);","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_1); // Duplicate task","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" JsonSerializableTaskList jsonSerializableTaskList \u003d new JsonSerializableTaskList(taskList);","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" assertThrows(IllegalValueException.class, jsonSerializableTaskList::toModelType);","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":36,"nobodyishappy":3}},{"path":"src/test/java/seedu/address/storage/JsonTaskListStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.testutil.Assert;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"public class JsonTaskListStorageTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" private static TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonTaskListStorageTest\");","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" @TempDir","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" public Path testFolder;","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" public void readTaskList_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" assertFalse(readTaskList(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList_nullTaskList_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" assertThrows(NullPointerException.class, () -\u003e saveTaskList(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" : null;","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" private Optional\u003cTaskList\u003e readTaskList(String filePath) throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" return new JsonTaskListStorage(Paths.get(filePath)).readTaskList(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" private void saveTaskList(TaskList taskList, String filePath) throws IOException {","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" new JsonTaskListStorage(Paths.get(filePath)).saveTaskList(taskList, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" public void readAndSaveTaskList_allInOrder_success() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" Path filePath \u003d testFolder.resolve(\"TempTaskList.json\");","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" TaskList sample \u003d getTypicalTaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" JsonTaskListStorage jsonTaskListStorage \u003d new JsonTaskListStorage(filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" // Save in new file and read back","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" jsonTaskListStorage.saveTaskList(sample, filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" TaskList readBack \u003d jsonTaskListStorage.readTaskList(filePath).get();","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" assertNotNull(readBack);","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e saveTaskList(new TaskList(), null));","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" private static TaskList getTypicalTaskList() {","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" taskList.addTask(new TaskBuilder().withTaskName(\"Test 1\").build());","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" taskList.addTask(new TaskBuilder().withTaskName(\"Test 2\").build());","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" taskList.addTask(new TaskBuilder().withTaskName(\"Test 3\").build());","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" return taskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":72,"nobodyishappy":4}},{"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":"Kaya3842"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"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":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"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":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" JsonTaskListStorage taskListStorage \u003d new JsonTaskListStorage(getTempFilePath(\"samples\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" storageManager \u003d new StorageManager(addressBookStorage, taskListStorage, userPrefsStorage);","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" public void taskListSaveTest() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" TaskList testList \u003d getTypicalTaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" Path testPath \u003d getTempFilePath(\"test\");","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" storageManager.saveTaskList(testList, testPath);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" assertNotNull(testList);","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" public void getTaskListFilePath() {","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" assertNotNull(storageManager.getTaskListFilePath());","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":17,"-":67}},{"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":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" private Set\u003cTask\u003e tasks;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" tasks \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" tasks \u003d new HashSet\u003c\u003e(personToCopy.getTasks());","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" * Sets the {@code Set\u003cTask\u003e} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" public PersonBuilder withTasks(Set\u003cTask\u003e tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" * Parses the {@code tasks} into a {@code Set\u003cTask\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" public PersonBuilder withTasks(Task ... tasks) {","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" this.tasks \u003d SampleDataUtil.getTaskSet(tasks);","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 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":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" return new Person(name, phone, email, address, tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"chin-herng":15,"nobodyishappy":1,"-":88}},{"path":"src/test/java/seedu/address/testutil/TaskBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":" * A utility class to help with building Task objects.","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"public class TaskBuilder {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" public static final String DEFAULT_TASK_NAME \u003d \"Implement Test\";","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" public static final String DEFAULT_TASK_DESCRIPTION \u003d \"Test to test the code\";","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" private TaskName taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" private TaskDescription taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" * Creates a {@code TaskBuilder} with the default details.","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" public TaskBuilder() {","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" taskName \u003d new TaskName(DEFAULT_TASK_NAME);","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" taskDescription \u003d new TaskDescription(DEFAULT_TASK_DESCRIPTION);","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" * Initializes the TaskBuilder with the data of {@code taskToCopy}.","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" public TaskBuilder(Task taskToCopy) {","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" taskName \u003d taskToCopy.getName();","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" taskDescription \u003d taskToCopy.getDescription();","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" * Sets the {@code TaskName} of the {@code Task} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" public TaskBuilder withTaskName(String taskName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" this.taskName \u003d new TaskName(taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" * Sets the {@code TaskDescription} of the {@code Task} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" public TaskBuilder withTaskDescription(String taskDescription) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" this.taskDescription \u003d new TaskDescription(taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" public Task build() {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" return new Task(taskName, taskDescription, new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"nobodyishappy":54}},{"path":"src/test/java/seedu/address/testutil/TaskUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" * A utility class for Task.","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"public class TaskUtil {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" public static String getAddTaskCommand(Task task) {","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" return AddTaskCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" + PREFIX_NAME + task.getName() + \" \"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" + PREFIX_TASK_DESCRIPTION + task.getDescription();","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" * Returns an delete command string for adding the {@code person}.","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" public static String getDeleteTaskCommand(Index index) {","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" return DeleteTaskCommand.COMMAND_WORD + \" \" + index.getOneBased();","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":16,"Yskie":9,"nobodyishappy":6}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":" public static final Index INDEX_FIRST \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":" public static final Index INDEX_SECOND \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":" public static final Index INDEX_THIRD \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"chin-herng":3,"-":9}},{"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":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_FIRST;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_SECOND;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" .withTasks(new TaskBuilder().withTaskName(\"Testing\").build()).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" .withTasks(new TaskBuilder().withTaskName(\"Testing 1\").build(),","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" new TaskBuilder().withTaskName(\"Testing 2\").build()).build();","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05"},{"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":"nobodyishappy"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" .withTasks(new TaskBuilder().withTaskName(\"Testing\").build()).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":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"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":"nobodyishappy"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTasks(VALID_TASK_SECOND).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST, VALID_TASK_SECOND)","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"nobodyishappy":9,"-":69}},{"path":"src/test/java/seedu/address/testutil/TypicalTasks.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":" * A utility class containing a list of {@code Task} objects to be used in tests.","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"public class TypicalTasks {","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" public static final Task TASK_1 \u003d new TaskBuilder().withTaskName(\"task1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" public static final Task TASK_2 \u003d new TaskBuilder().withTaskName(\"task2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" public static final Task TASK_3 \u003d new TaskBuilder().withTaskName(\"task3\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" private static TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" public static TaskList get() {","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" return tasks;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" * Returns an {@code TaskList} with all the sample tasks.","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" public static TaskList getTypicalTaskList() {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" tasks.addTask(TASK_1);","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" tasks.addTask(TASK_2);","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" tasks.addTask(TASK_3);","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" return TypicalTasks.get();","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":26,"nobodyishappy":3}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2324S2-CS2103T-W13-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":"chin-herng"},"content":"# TeamTracker","lastModifiedDate":"2024-03-06"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"## Description","lastModifiedDate":"2024-03-06"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"TeamTracker is a productivity app designed for leaders managing teams, aimed at reducing the stress of task management and team coordination. It helps keep track of team members\u0027 contact info, roles, tasks, deadlines, and meetings, offering leaders a clearer overview of their team\u0027s structure and responsibilities.","lastModifiedDate":"2024-03-06"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"## Table of Contents","lastModifiedDate":"2024-03-06"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"- [TeamTracker](#teamtracker)","lastModifiedDate":"2024-03-06"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":" - [Description](#description)","lastModifiedDate":"2024-03-06"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":" - [Table of Contents](#table-of-contents)","lastModifiedDate":"2024-03-06"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":" - [Installation](#installation)","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":" - [Usage](#usage)","lastModifiedDate":"2024-03-06"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" - [Credits](#credits)","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"## Installation","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"Download the latest `teamtracker.jar` from [here](https://github.com/AY2324S2-CS2103T-W13-4/tp/releases).","lastModifiedDate":"2024-03-06"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"## Usage","lastModifiedDate":"2024-03-06"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":"1. Ensure you have Java `11` or above installed in your computer.","lastModifiedDate":"2024-03-06"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"2. Copy `teamtracker.jar` to the folder you want to use as the _home folder_ for TeamTracker.","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"3. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar teamtracker.jar` command to run the application.","lastModifiedDate":"2024-03-06"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"## Credits","lastModifiedDate":"2024-03-06"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":"This project is evolved from the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"chin-herng":25,"-":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":"Yskie"},"content":" String jUnitVersion \u003d \u00275.10.0\u0027","lastModifiedDate":"2024-03-18"},{"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":"-"},"content":" archiveFileName \u003d \u0027addressbook.jar\u0027","lastModifiedDate":"2022-06-17"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Yskie":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":"breezetall"},"content":"### Abdul Khaliq","lastModifiedDate":"2024-03-06"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"\u003cimg src\u003d\"images/breezetall.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":"[[github](https://github.com/breezetall)]","lastModifiedDate":"2024-03-06"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":20,"author":{"gitId":"-"},"content":"* Role: Project Advisor","lastModifiedDate":"2020-05-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"### Chong Chin Herng","lastModifiedDate":"2024-03-06"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"\u003cimg src\u003d\"images/chin-herng.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"[[github](http://github.com/chin-herng)]","lastModifiedDate":"2024-03-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":29,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23"},{"lineNumber":30,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":"### Dinh Tran Hai Chien","lastModifiedDate":"2024-03-06"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":"\u003cimg src\u003d\"images/kaya3842.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":"[[github](http://github.com/Kaya3842)]","lastModifiedDate":"2024-03-06"},{"lineNumber":37,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":40,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":"### Tang Hao Liang","lastModifiedDate":"2024-03-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":"\u003cimg src\u003d\"images/nobodyishappy.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":"[[github](http://github.com/nobodyishappy)]","lastModifiedDate":"2024-03-06"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2024-03-06"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":"* Responsibilities: Mark/Unmark Feature","lastModifiedDate":"2024-03-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":52,"author":{"gitId":"breezetall"},"content":"### Yong Shi Kang","lastModifiedDate":"2024-03-06"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"\u003cimg src\u003d\"images/yskie.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-03-06"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":"[[github](http://github.com/yskie)]","lastModifiedDate":"2024-03-06"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":"* Responsibilities: Deletion Feature","lastModifiedDate":"2024-03-06"}],"authorContributionMap":{"Kaya3842":3,"Yskie":2,"chin-herng":3,"nobodyishappy":6,"-":42,"breezetall":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":"Kaya3842"},"content":"# TeamTracker Developer Guide","lastModifiedDate":"2024-03-07"},{"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":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23"},{"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":"nobodyishappy"},"content":"* are currently managing people for groups","lastModifiedDate":"2024-03-06"},{"lineNumber":283,"author":{"gitId":"nobodyishappy"},"content":"* has a tendency to forget tasks to complete","lastModifiedDate":"2024-03-06"},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":285,"author":{"gitId":"nobodyishappy"},"content":"**Value proposition**: This app aims to help leaders to keep track of members of formed groups and their contact information. This app helps to keep track of individual and group tasks, deadlines and meetings, thus allowing them to have a better overview of the structure.","lastModifiedDate":"2024-03-06"},{"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":"nobodyishappy"},"content":"|----------|--------------------------------------------|-------------------------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-03-06"},{"lineNumber":294,"author":{"gitId":"nobodyishappy"},"content":"| `* * *` | student | add personal tasks | keep up to date with the different tasks to complete |","lastModifiedDate":"2024-03-06"},{"lineNumber":295,"author":{"gitId":"nobodyishappy"},"content":"| `* * *` | student | delete tasks | |","lastModifiedDate":"2024-03-06"},{"lineNumber":296,"author":{"gitId":"nobodyishappy"},"content":"| `* * *` | student | mark/unmark the tasks as done/not done | keep track of tasks that are completed |","lastModifiedDate":"2024-03-06"},{"lineNumber":297,"author":{"gitId":"nobodyishappy"},"content":"| `* *` | group leader | assign tasks to individuals within the group | manage individual tasks |","lastModifiedDate":"2024-03-06"},{"lineNumber":298,"author":{"gitId":"nobodyishappy"},"content":"| `* *` | busy group leader | see an overview of all the saved task | save time |","lastModifiedDate":"2024-03-06"},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"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":"-"},"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":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":306,"author":{"gitId":"breezetall"},"content":"**Use case: Assigns a task**","lastModifiedDate":"2024-03-06"},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":308,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23"},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":310,"author":{"gitId":"breezetall"},"content":"1. User requests to list of contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":311,"author":{"gitId":"breezetall"},"content":"2. TeamTracker shows a list of contacts","lastModifiedDate":"2024-03-06"},{"lineNumber":312,"author":{"gitId":"breezetall"},"content":"3. User requests to assign a task to a contact","lastModifiedDate":"2024-03-06"},{"lineNumber":313,"author":{"gitId":"breezetall"},"content":"4. TeamTracker assigns the task to the contact","lastModifiedDate":"2024-03-06"},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-07"},{"lineNumber":315,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":317,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":319,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-03-06"},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":321,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":323,"author":{"gitId":"breezetall"},"content":"* 4a. The task given does not exist.","lastModifiedDate":"2024-03-06"},{"lineNumber":324,"author":{"gitId":"breezetall"},"content":"* 4a1. TeamTracker shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":325,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":326,"author":{"gitId":"breezetall"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":327,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":328,"author":{"gitId":"breezetall"},"content":"**Use case: Delete a task**","lastModifiedDate":"2024-03-06"},{"lineNumber":329,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":330,"author":{"gitId":"breezetall"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":331,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":332,"author":{"gitId":"breezetall"},"content":"1. User requests to list tasks","lastModifiedDate":"2024-03-06"},{"lineNumber":333,"author":{"gitId":"breezetall"},"content":"2. TeamTracker shows a list of tasks","lastModifiedDate":"2024-03-06"},{"lineNumber":334,"author":{"gitId":"breezetall"},"content":"3. User requests to delete a specific task in the list","lastModifiedDate":"2024-03-06"},{"lineNumber":335,"author":{"gitId":"breezetall"},"content":"4. TeamTracker deletes the task","lastModifiedDate":"2024-03-06"},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":337,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":339,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23"},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":341,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23"},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":343,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23"},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":345,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23"},{"lineNumber":346,"author":{"gitId":"breezetall"},"content":"* 3a1. TeamTracker shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":348,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23"},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":350,"author":{"gitId":"breezetall"},"content":"**Use case: Add a task**","lastModifiedDate":"2024-03-06"},{"lineNumber":351,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":352,"author":{"gitId":"breezetall"},"content":"**MSS**","lastModifiedDate":"2024-03-06"},{"lineNumber":353,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":354,"author":{"gitId":"breezetall"},"content":"1. User requests to add a task to the list of tasks","lastModifiedDate":"2024-03-06"},{"lineNumber":355,"author":{"gitId":"breezetall"},"content":"2. TeamTracker adds to the list","lastModifiedDate":"2024-03-06"},{"lineNumber":356,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":357,"author":{"gitId":"breezetall"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":358,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":359,"author":{"gitId":"breezetall"},"content":"**Extensions**","lastModifiedDate":"2024-03-06"},{"lineNumber":360,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":361,"author":{"gitId":"breezetall"},"content":"* 2a. The given parameters is invalid.","lastModifiedDate":"2024-03-06"},{"lineNumber":362,"author":{"gitId":"breezetall"},"content":"* 2a1. TeamTracker shows an error message.","lastModifiedDate":"2024-03-06"},{"lineNumber":363,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":364,"author":{"gitId":"breezetall"},"content":" Use case ends.","lastModifiedDate":"2024-03-06"},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-06"},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":367,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23"},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":369,"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":370,"author":{"gitId":"Yskie"},"content":"2. Should be able to be used for long periods without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-03-06"},{"lineNumber":371,"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":372,"author":{"gitId":"Yskie"},"content":"4. Should respond within one seconds.","lastModifiedDate":"2024-03-06"},{"lineNumber":373,"author":{"gitId":"Yskie"},"content":"5. Documentation should be easy for users that are inexperienced in command line to follow.","lastModifiedDate":"2024-03-06"},{"lineNumber":374,"author":{"gitId":"Kaya3842"},"content":"6. User Interface should be straightforward and intuitive to navigate even for first-time users.","lastModifiedDate":"2024-03-07"},{"lineNumber":375,"author":{"gitId":"Yskie"},"content":"7. Should be able to store more than 10,000 tasks.","lastModifiedDate":"2024-03-06"},{"lineNumber":376,"author":{"gitId":"Yskie"},"content":"8. Should lose no more than 1 command worth of work in case of an app crash.","lastModifiedDate":"2024-03-08"},{"lineNumber":377,"author":{"gitId":"Yskie"},"content":"9. Should work without internet access.","lastModifiedDate":"2024-03-06"},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":379,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23"},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":381,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09"},{"lineNumber":382,"author":{"gitId":"Kaya3842"},"content":"* **System admin commands**: commands or instructions that are used through a command-line interface (CLI) ","lastModifiedDate":"2024-03-07"},{"lineNumber":383,"author":{"gitId":"Kaya3842"},"content":"or a terminal window","lastModifiedDate":"2024-03-07"},{"lineNumber":384,"author":{"gitId":"Kaya3842"},"content":"* **Action**: The AddressBook processing a user command","lastModifiedDate":"2024-03-07"},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":386,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":388,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23"},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":390,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23"},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":392,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":394,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12"},{"lineNumber":395,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23"},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":397,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":398,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":399,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23"},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":401,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23"},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":403,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23"},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":405,"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":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":407,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23"},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":409,"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":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":411,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":412,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23"},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":414,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":416,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23"},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":418,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23"},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":420,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23"},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":422,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":423,"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":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":425,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":426,"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":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":428,"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":429,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23"},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":431,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":433,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23"},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":435,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23"},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":437,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23"},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":439,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"Kaya3842":5,"Yskie":6,"nobodyishappy":9,"-":385,"breezetall":34}},{"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":"nobodyishappy"},"content":"# TeamTracker User Guide","lastModifiedDate":"2024-03-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"TeamTracker 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":"2024-03-25"},{"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":"nobodyishappy"},"content":"1. Download the latest `addressbook.jar` from [here](https://github.com/AY2324S2-CS2103T-W13-4/tp/releases/download/TeamTracker_v1.2/TeamTracker_v1.2.jar).","lastModifiedDate":"2024-03-25"},{"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":"nobodyishappy"},"content":" * `add n/Task 1 d/Do homework` : Add a task named `Task 1`","lastModifiedDate":"2024-03-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-25"},{"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":"### Viewing help : `help`","lastModifiedDate":"2020-05-23"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":73,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":75,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":77,"author":{"gitId":"-"},"content":"Format: `help`","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":"### Adding a person: `add`","lastModifiedDate":"2020-05-23"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":82,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":88,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12"},{"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":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23"},{"lineNumber":93,"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":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":"-"},"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":111,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":114,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":115,"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":116,"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":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23"},{"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 the name is searched.","lastModifiedDate":"2020-05-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23"},{"lineNumber":129,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23"},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23"},{"lineNumber":133,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":134,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":138,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":142,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23"},{"lineNumber":143,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":146,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":148,"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":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":152,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":154,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":156,"author":{"gitId":"nobodyishappy"},"content":"### Adding a task: `addtask`","lastModifiedDate":"2024-03-25"},{"lineNumber":157,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":158,"author":{"gitId":"nobodyishappy"},"content":"Adds a task to the task list.","lastModifiedDate":"2024-03-25"},{"lineNumber":159,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":160,"author":{"gitId":"nobodyishappy"},"content":"Format: `add n/NAME d/DESCRIPTION​`","lastModifiedDate":"2024-03-25"},{"lineNumber":161,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":162,"author":{"gitId":"nobodyishappy"},"content":"Examples:","lastModifiedDate":"2024-03-25"},{"lineNumber":163,"author":{"gitId":"nobodyishappy"},"content":"* `add n/Task 1 d/Do homework`","lastModifiedDate":"2024-03-25"},{"lineNumber":164,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":165,"author":{"gitId":"nobodyishappy"},"content":"* ### Assigning a task: `assign`","lastModifiedDate":"2024-03-25"},{"lineNumber":166,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":167,"author":{"gitId":"nobodyishappy"},"content":"Assign a task to a person","lastModifiedDate":"2024-03-25"},{"lineNumber":168,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":169,"author":{"gitId":"nobodyishappy"},"content":"Format: `assign TASK_INDEX to/PERSON_INDEX​`","lastModifiedDate":"2024-03-25"},{"lineNumber":170,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":171,"author":{"gitId":"nobodyishappy"},"content":"Examples:","lastModifiedDate":"2024-03-25"},{"lineNumber":172,"author":{"gitId":"nobodyishappy"},"content":"* `assign 1 to/ 1`","lastModifiedDate":"2024-03-25"},{"lineNumber":173,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":174,"author":{"gitId":"nobodyishappy"},"content":"### Adding a person: `marktask`","lastModifiedDate":"2024-03-25"},{"lineNumber":175,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":176,"author":{"gitId":"nobodyishappy"},"content":"Marks a task to the task list as done.","lastModifiedDate":"2024-03-25"},{"lineNumber":177,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":178,"author":{"gitId":"nobodyishappy"},"content":"Format: `marktask TASK_INDEX`","lastModifiedDate":"2024-03-25"},{"lineNumber":179,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":180,"author":{"gitId":"nobodyishappy"},"content":"Examples:","lastModifiedDate":"2024-03-25"},{"lineNumber":181,"author":{"gitId":"nobodyishappy"},"content":"* `marktask 1`","lastModifiedDate":"2024-03-25"},{"lineNumber":182,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":183,"author":{"gitId":"nobodyishappy"},"content":"### Adding a person: `unmarktask`","lastModifiedDate":"2024-03-25"},{"lineNumber":184,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":185,"author":{"gitId":"nobodyishappy"},"content":"Marks a task to the task list as not done.","lastModifiedDate":"2024-03-25"},{"lineNumber":186,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":187,"author":{"gitId":"nobodyishappy"},"content":"Format: `unmarktask TASK_INDEX`","lastModifiedDate":"2024-03-25"},{"lineNumber":188,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":189,"author":{"gitId":"nobodyishappy"},"content":"Examples:","lastModifiedDate":"2024-03-25"},{"lineNumber":190,"author":{"gitId":"nobodyishappy"},"content":"* `unmarktask 1`","lastModifiedDate":"2024-03-25"},{"lineNumber":191,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":192,"author":{"gitId":"nobodyishappy"},"content":"### Adding a person: `deletetask`","lastModifiedDate":"2024-03-25"},{"lineNumber":193,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":194,"author":{"gitId":"nobodyishappy"},"content":"Format: `deletetask TASK_INDEX`","lastModifiedDate":"2024-03-25"},{"lineNumber":195,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":196,"author":{"gitId":"nobodyishappy"},"content":"Examples:","lastModifiedDate":"2024-03-25"},{"lineNumber":197,"author":{"gitId":"nobodyishappy"},"content":"* `deletetask 1`","lastModifiedDate":"2024-03-25"},{"lineNumber":198,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-25"},{"lineNumber":199,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":201,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23"},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":203,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23"},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":205,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":207,"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":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04"},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":211,"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":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12"},{"lineNumber":215,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12"},{"lineNumber":216,"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":217,"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":218,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12"},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04"},{"lineNumber":220,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23"},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":222,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04"},{"lineNumber":223,"author":{"gitId":"-"},"content":"","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":"## FAQ","lastModifiedDate":"2020-05-23"},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":228,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23"},{"lineNumber":229,"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":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":231,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23"},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":233,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08"},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":235,"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":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":237,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08"},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08"},{"lineNumber":239,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23"},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23"},{"lineNumber":241,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23"},{"lineNumber":242,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12"},{"lineNumber":243,"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":244,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23"},{"lineNumber":245,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23"},{"lineNumber":246,"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":247,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23"},{"lineNumber":248,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23"},{"lineNumber":249,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23"}],"authorContributionMap":{"nobodyishappy":47,"-":202}},{"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":"nobodyishappy"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eTeamTracker\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":{"nobodyishappy":1,"-":66}},{"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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.storage.JsonTaskListStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.storage.TaskListStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01"},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":48,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25"},{"lineNumber":50,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"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":55,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":57,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":61,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25"},{"lineNumber":62,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06"},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" TaskListStorage taskListStorage \u003d new JsonTaskListStorage(userPrefs.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" storage \u003d new StorageManager(addressBookStorage, taskListStorage, userPrefsStorage);","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":67,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":69,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":75,"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":76,"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":77,"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":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":79,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath() + \", \"","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" + storage.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":83,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24"},{"lineNumber":84,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cTaskList\u003e taskListOptional;","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" TaskList initialTasks;","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24"},{"lineNumber":90,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15"},{"lineNumber":91,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20"},{"lineNumber":94,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":96,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":97,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" taskListOptional \u003d storage.readTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" if (!taskListOptional.isPresent()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":" logger.info(\"Creating a new data file \" + storage.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"Kaya3842"},"content":" initialTasks \u003d taskListOptional.orElseGet(SampleDataUtil::getSampleTaskList);","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" logger.warning(\"Data file at \" + storage.getTaskListFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"Kaya3842"},"content":" + \" Will be starting with an empty task list.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"Kaya3842"},"content":" initialTasks \u003d new TaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"Kaya3842"},"content":" return new ModelManager(initialData, initialTasks, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24"},{"lineNumber":116,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16"},{"lineNumber":122,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16"},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":124,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":125,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":126,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24"},{"lineNumber":131,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24"},{"lineNumber":132,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24"},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":137,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":138,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":140,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":142,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":144,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":145,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24"},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":149,"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":150,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":151,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24"},{"lineNumber":152,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16"},{"lineNumber":160,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":163,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25"},{"lineNumber":164,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":167,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":168,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":169,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25"},{"lineNumber":170,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03"},{"lineNumber":171,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15"},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03"},{"lineNumber":173,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24"},{"lineNumber":174,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14"},{"lineNumber":175,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15"},{"lineNumber":176,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15"},{"lineNumber":177,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":180,"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":181,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25"},{"lineNumber":183,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":187,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":190,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":191,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08"},{"lineNumber":192,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29"},{"lineNumber":193,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25"},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08"},{"lineNumber":198,"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":199,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24"},{"lineNumber":200,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":201,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24"},{"lineNumber":202,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24"},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":22,"-":183}},{"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":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"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":"breezetall"},"content":" /** Returns an unmodifiable view of the filtered list of tasks */","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"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":{"-":50,"breezetall":4}},{"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":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"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":"Kaya3842"},"content":" storage.saveTaskList(model.getTaskList());","lastModifiedDate":"2024-03-13"},{"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":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"breezetall"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"breezetall"},"content":" return model.getFilteredTaskList();","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Kaya3842":1,"-":88,"breezetall":6}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"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":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"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":"chin-herng"},"content":" public static final String MESSAGE_INVALID_TASK_DISPLAYED_INDEX \u003d \"The task index provided is invalid\";","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" .append(\"; Tasks: \");","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" person.getTasks().forEach(builder::append);","lastModifiedDate":"2024-03-17"},{"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":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" * Formats the {@code task} for display to the user.","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" public static String formatTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" return task.getName().taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Kaya3842":7,"chin-herng":3,"nobodyishappy":1,"-":49}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15"},{"lineNumber":4,"author":{"gitId":"-"},"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.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":"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":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","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 + \": 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":"chin-herng"},"content":" + PREFIX_ADDRESS + \"ADDRESS\\n \"","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06"},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06"},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \";","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10"},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10"},{"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-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":55,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23"},{"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":"2017-06-22"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22"},{"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 AddCommand)) {","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":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22"},{"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":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23"},{"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":{"chin-herng":2,"-":78}},{"path":"src/main/java/seedu/address/logic/commands/AddTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" * Adds a task to the task list.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"public class AddTaskCommand extends Command {","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" public static final String COMMAND_WORD \u003d \"addtask\";","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a task to the task list. \"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" + \"Parameter: \"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" + PREFIX_NAME + \"TASK NAME \"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" + PREFIX_TASK_DESCRIPTION + \"TASK DESCRIPTION \";","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New task added: %1$s\";","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"This task already exists in the task list.\";","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" private final Task toAdd;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" * Creates an AddTaskCommand to add the specified {@code Task}","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" public AddTaskCommand(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" toAdd \u003d task;","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" if (model.hasTask(toAdd)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" throw new CommandException(MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" model.addTask(toAdd);","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.formatTask(toAdd)));","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" return true;","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof AddTaskCommand)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" return false;","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand otherAddTaskCommand \u003d (AddTaskCommand) other;","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" return toAdd.equals(otherAddTaskCommand.toAdd);","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" public String toString() {","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":" .toString();","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":70,"nobodyishappy":6}},{"path":"src/main/java/seedu/address/logic/commands/AssignCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import java.util.List;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" * Assigns an existing task to an existing person in the address book.","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"public class AssignCommand extends Command {","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" public static final String COMMAND_WORD \u003d \"assign\";","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" + \": Assigns the task identified \"","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" + \"by the index number used in the last task listing \"","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" + \"to the person identified \"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" + \"by the index number used in the last person listing. \"","lastModifiedDate":"2024-03-16"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" + \"Does nothing if the task is already assigned to the person.\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" + \"Parameters: TASK_INDEX (must be a positive integer) \"","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" + \"to/ [PERSON_INDEX (must be a positive integer)]\\n\"","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" + \"to/ 2\";","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" public static final String MESSAGE_SUCCESS \u003d \"%1$s has been assigned to %2$s.\";","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" private final Index taskIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" private final Index personIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" * @param taskIndex of the task in the filtered task list to be assigned to the person","lastModifiedDate":"2024-03-16"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" * @param personIndex of the person in the filtered person list to be assigned the task","lastModifiedDate":"2024-03-16"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" public AssignCommand(Index taskIndex, Index personIndex) {","lastModifiedDate":"2024-03-16"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" requireAllNonNull(taskIndex, personIndex);","lastModifiedDate":"2024-03-16"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" this.taskIndex \u003d taskIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" this.personIndex \u003d personIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-16"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" List\u003cTask\u003e lastShownTaskList \u003d model.getTaskList().getSerializeTaskList();","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" List\u003cPerson\u003e lastShownPersonList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" if (taskIndex.getZeroBased() \u003e\u003d lastShownTaskList.size()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" if (personIndex.getZeroBased() \u003e\u003d lastShownPersonList.size()) {","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" Person personToBeAssigned \u003d lastShownPersonList.get(personIndex.getZeroBased());","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" Task taskToAssign \u003d lastShownTaskList.get(taskIndex.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" Person assignedPerson \u003d personToBeAssigned.addTask(taskToAssign);","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" model.setPerson(personToBeAssigned, assignedPerson);","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.formatTask(taskToAssign),","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" assignedPerson.getName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-16"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-16"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-16"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" return true;","lastModifiedDate":"2024-03-16"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-16"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":" if (!(other instanceof AssignCommand)) {","lastModifiedDate":"2024-03-16"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" return false;","lastModifiedDate":"2024-03-16"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" AssignCommand e \u003d (AssignCommand) other;","lastModifiedDate":"2024-03-16"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" return taskIndex.equals(e.taskIndex)","lastModifiedDate":"2024-03-16"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" \u0026\u0026 personIndex.equals(e.personIndex);","lastModifiedDate":"2024-03-16"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"chin-herng":87,"nobodyishappy":1}},{"path":"src/main/java/seedu/address/logic/commands/DeleteTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import java.util.List;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" * Deletes a task in the task list.","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"public class DeleteTaskCommand extends Command {","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" public static final String COMMAND_WORD \u003d \"deletetask\";","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" + \": Deletes the task identified by the index number used in the displayed task list.\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Deleted Task: %1$s\";","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_INDEX_TOO_LARGE \u003d \"The index is not valid, use \\\"listtask\\\" to \"","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" + \"display all tasks.\";","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" public static final String MESSAGE_INDEX_BELOW_ONE \u003d \"The index must be greater than 0.\";","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" private final Index taskIndexToDelete;","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" * Creates an DeleteTaskCommand to add the specified {@code index}","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" public DeleteTaskCommand(Index index) {","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" taskIndexToDelete \u003d index;","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" * Executes the command and returns the result message.","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" * @param model {@code Model} which the command should operate on.","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" * @return feedback message of the operation result for display","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" List\u003cTask\u003e lastShownList \u003d model.getTaskList().getSerializeTaskList();","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" if (taskIndexToDelete.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":" throw new CommandException(MESSAGE_INDEX_TOO_LARGE);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" Task taskToDelete \u003d lastShownList.get(taskIndexToDelete.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" model.deleteTask(taskToDelete);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.formatTask(taskToDelete)));","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" return true;","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" if (!(other instanceof DeleteTaskCommand)) {","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" return false;","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand otherDeleteCommand \u003d (DeleteTaskCommand) other;","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":" return taskIndexToDelete.equals(otherDeleteCommand.taskIndexToDelete);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":" public String toString() {","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":" .add(\"toDelete\", taskIndexToDelete.getOneBased())","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" .toString();","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Yskie":74,"nobodyishappy":7}},{"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.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07"},{"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":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26"},{"lineNumber":36,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01"},{"lineNumber":37,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06"},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06"},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS]\\n \"","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":44,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09"},{"lineNumber":45,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26"},{"lineNumber":48,"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":49,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":52,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26"},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25"},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17"},{"lineNumber":83,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26"},{"lineNumber":89,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":91,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":94,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e updatedTasks \u003d personToEdit.getTasks(); // edit command does not allow editing tasks","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return false;","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":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":115,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13"},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":121,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":122,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26"},{"lineNumber":129,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26"},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26"},{"lineNumber":132,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21"},{"lineNumber":135,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":137,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Copy constructor.","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":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26"},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26"},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26"},{"lineNumber":152,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26"},{"lineNumber":153,"author":{"gitId":"chin-herng"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address);","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21"},{"lineNumber":157,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21"},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26"},{"lineNumber":160,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26"},{"lineNumber":161,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21"},{"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 setPhone(Phone phone) {","lastModifiedDate":"2017-06-21"},{"lineNumber":165,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","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\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26"},{"lineNumber":169,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","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 setEmail(Email email) {","lastModifiedDate":"2017-06-21"},{"lineNumber":173,"author":{"gitId":"-"},"content":" this.email \u003d email;","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\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26"},{"lineNumber":177,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","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 setAddress(Address address) {","lastModifiedDate":"2017-06-21"},{"lineNumber":181,"author":{"gitId":"-"},"content":" this.address \u003d address;","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\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26"},{"lineNumber":185,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","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":" @Override","lastModifiedDate":"2017-05-05"},{"lineNumber":189,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05"},{"lineNumber":190,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05"},{"lineNumber":191,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":194,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05"},{"lineNumber":195,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05"},{"lineNumber":196,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05"},{"lineNumber":199,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":200,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":201,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":203,"author":{"gitId":"chin-herng"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address);","lastModifiedDate":"2024-03-17"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23"},{"lineNumber":208,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":209,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":210,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":211,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":212,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":213,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26"},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26"}],"authorContributionMap":{"chin-herng":6,"-":210}},{"path":"src/main/java/seedu/address/logic/commands/ListTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_TASKS;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":" * Lists all tasks in the tasklist to the user.","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"public class ListTaskCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":" public static final String COMMAND_WORD \u003d \"listtask\";","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all tasks\";","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" model.updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"breezetall":24}},{"path":"src/main/java/seedu/address/logic/commands/MarkTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_TASKS;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * Mark a task from the task list as done.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"public class MarkTaskCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" public static final String COMMAND_WORD \u003d \"marktask\";","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" + \": Marks a task from the task list as done. \\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" + \"Parameter: INDEX (Must be a positive integer) \\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_MARK_TASK_SUCCESS \u003d \"Task has been mark as done: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" public MarkTaskCommand(Index targetIndex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" List\u003cTask\u003e lastShownList \u003d model.getTaskList().getSerializeTaskList();","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" Task taskToMark \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" taskToMark.getStatus().setAsDone();","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" model.updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" return new CommandResult(String.format(MESSAGE_MARK_TASK_SUCCESS, Messages.formatTask(taskToMark)));","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof MarkTaskCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand otherMarkTaskCommand \u003d (MarkTaskCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" return targetIndex.equals(otherMarkTaskCommand.targetIndex);","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"nobodyishappy":71}},{"path":"src/main/java/seedu/address/logic/commands/UnmarkTaskCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_TASKS;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import java.util.List;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * Mark a task from the task list as undone.","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"public class UnmarkTaskCommand extends Command {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" public static final String COMMAND_WORD \u003d \"unmarktask\";","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" + \": Marks a task from the task list as undone. \\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" + \"Parameter: INDEX (Must be a positive integer) \\n\"","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_UNMARK_TASK_SUCCESS \u003d \"Task has been mark as undone: %1$s\";","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" public UnmarkTaskCommand(Index targetIndex) {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(model);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" List\u003cTask\u003e lastShownList \u003d model.getTaskList().getSerializeTaskList();","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" Task taskToMark \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" taskToMark.getStatus().setAsUndone();","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" model.updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" return new CommandResult(String.format(MESSAGE_UNMARK_TASK_SUCCESS, Messages.formatTask(taskToMark)));","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof UnmarkTaskCommand)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand otherUnmarkTaskCommand \u003d (UnmarkTaskCommand) other;","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" return targetIndex.equals(otherUnmarkTaskCommand.targetIndex);","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" .toString();","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"nobodyishappy":70}},{"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":"","lastModifiedDate":"2017-02-05"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-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":"chin-herng"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" Set\u003cTask\u003e taskList \u003d new HashSet\u003c\u003e(); // add command does not allow assigning tasks straight away","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" Person person \u003d new Person(name, phone, email, address, taskList);","lastModifiedDate":"2024-03-17"},{"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":{"chin-herng":5,"-":56}},{"path":"src/main/java/seedu/address/logic/parser/AddTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" * Parses input arguments and creates a new AddTaskCommand object","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"public class AddTaskCommandParser implements Parser\u003cAddTaskCommand\u003e {","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" * Parses {@code args} into a command and returns it.","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" * @param args","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if {@code args} does not conform the expected format","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" public AddTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" PREFIX_NAME, PREFIX_TASK_DESCRIPTION);","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_TASK_DESCRIPTION)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TASK_DESCRIPTION);","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" TaskName name \u003d ParserUtil.parseTaskName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription description \u003d ParserUtil.parseTaskDescription(","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" argMultimap.getValue(PREFIX_TASK_DESCRIPTION).get());","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus status \u003d new TaskStatus();","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new Task(name, description, status);","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" return new AddTaskCommand(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":24,"nobodyishappy":31}},{"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":"Kaya3842"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":"import seedu.address.logic.commands.ListTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.UnmarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24"},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22"},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":47,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24"},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":55,"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":56,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29"},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29"},{"lineNumber":58,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29"},{"lineNumber":60,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":62,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" case AddTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" return new AddTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" case DeleteTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" return new DeleteTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":83,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21"},{"lineNumber":84,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"breezetall"},"content":" case ListTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"breezetall"},"content":" return new ListTaskCommand();","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":" case AssignCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-16"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":" return new AssignCommandParser().parse(arguments);","lastModifiedDate":"2024-03-16"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":92,"author":{"gitId":"nobodyishappy"},"content":" case MarkTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"nobodyishappy"},"content":" return new MarkTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"nobodyishappy"},"content":" case UnmarkTaskCommand.COMMAND_WORD:","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"nobodyishappy"},"content":" return new UnmarkTaskCommandParser().parse(arguments);","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24"},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26"},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26"},{"lineNumber":105,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29"},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Kaya3842":5,"Yskie":3,"chin-herng":4,"nobodyishappy":8,"-":86,"breezetall":4}},{"path":"src/main/java/seedu/address/logic/parser/AssignCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-16"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-16"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-16"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-03-16"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-16"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-16"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-16"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-16"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"/**","lastModifiedDate":"2024-03-16"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":" * Parses input arguments and creates a new {@code AssignCommand} object","lastModifiedDate":"2024-03-16"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"public class AssignCommandParser implements Parser\u003cAssignCommand\u003e {","lastModifiedDate":"2024-03-16"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-16"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" * Parses the given {@code String} of arguments in the context of the {@code AssignCommand}","lastModifiedDate":"2024-03-16"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":" * and returns a {@code AssignCommand} object for execution.","lastModifiedDate":"2024-03-16"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-16"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-16"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":" public AssignCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-16"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":" requireNonNull(args);","lastModifiedDate":"2024-03-16"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args,","lastModifiedDate":"2024-03-16"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" PREFIX_TO);","lastModifiedDate":"2024-03-16"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_TO);","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" Index taskIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" Index personIndex;","lastModifiedDate":"2024-03-16"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" try {","lastModifiedDate":"2024-03-16"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" taskIndex \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2024-03-16"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" personIndex \u003d ParserUtil.parseIndex(argMultimap.getValue(PREFIX_TO).orElse(\"\"));","lastModifiedDate":"2024-03-16"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-16"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-03-16"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" AssignCommand.MESSAGE_USAGE), ive);","lastModifiedDate":"2024-03-16"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-16"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" return new AssignCommand(taskIndex, personIndex);","lastModifiedDate":"2024-03-16"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-16"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-16"}],"authorContributionMap":{"chin-herng":39}},{"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":"chin-herng"},"content":" public static final Prefix PREFIX_TO \u003d new Prefix(\"to/\");","lastModifiedDate":"2024-03-16"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" public static final Prefix PREFIX_TASK_DESCRIPTION \u003d new Prefix(\"d/\");","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"chin-herng":1,"nobodyishappy":1,"-":15}},{"path":"src/main/java/seedu/address/logic/parser/DeleteTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":" * Parses input arguments and creates a new DeleteTaskCommand object","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"public class DeleteTaskCommandParser implements Parser\u003cDeleteTaskCommand\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" * @param userInput","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" * @throws ParseException if {@code userInput} does not conform the expected format","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" public DeleteTaskCommand parse(String userInput) throws ParseException {","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" try {","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" Index taskIndexToDelete \u003d ParserUtil.parseIndex(userInput.trim());","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" return new DeleteTaskCommand(taskIndexToDelete);","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"Yskie":31}},{"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":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"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 EditCommand object","lastModifiedDate":"2017-01-26"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\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 EditCommand","lastModifiedDate":"2017-01-26"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26"},{"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 EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15"},{"lineNumber":27,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06"},{"lineNumber":34,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10"},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":38,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":43,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":49,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10"},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10"},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26"},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26"},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26"}],"authorContributionMap":{"chin-herng":1,"-":60}},{"path":"src/main/java/seedu/address/logic/parser/MarkTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" * Parses input arguments and creates a new MarkTaskCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"public class MarkTaskCommandParser implements Parser\u003cMarkTaskCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" * Parses the given {@code String} of arguments in the context of the MarkTaskCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * and returns a MarkTaskCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" public MarkTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" return new MarkTaskCommand(index);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"nobodyishappy":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-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":"-"},"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":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"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":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":127,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":128,"author":{"gitId":"nobodyishappy"},"content":" * Parses a {@code String taskName} into an {@code TaskName}.","lastModifiedDate":"2024-03-21"},{"lineNumber":129,"author":{"gitId":"nobodyishappy"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-21"},{"lineNumber":130,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":131,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if the given {@code taskName} is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":132,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":133,"author":{"gitId":"nobodyishappy"},"content":" public static TaskName parseTaskName(String taskName) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":134,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":135,"author":{"gitId":"nobodyishappy"},"content":" String trimmedTaskName \u003d taskName.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":136,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskName.isValidTaskName(trimmedTaskName)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":137,"author":{"gitId":"nobodyishappy"},"content":" throw new ParseException(TaskName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":138,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":139,"author":{"gitId":"nobodyishappy"},"content":" return new TaskName(trimmedTaskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":140,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":141,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":142,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":143,"author":{"gitId":"nobodyishappy"},"content":" * Parses a {@code String taskDescription} into an {@code TaskDescription}.","lastModifiedDate":"2024-03-21"},{"lineNumber":144,"author":{"gitId":"nobodyishappy"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-03-21"},{"lineNumber":145,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":146,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if the given {@code taskDescription} is invalid.","lastModifiedDate":"2024-03-21"},{"lineNumber":147,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":148,"author":{"gitId":"nobodyishappy"},"content":" public static TaskDescription parseTaskDescription(String taskDescription) throws ParseException {","lastModifiedDate":"2024-03-21"},{"lineNumber":149,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":150,"author":{"gitId":"nobodyishappy"},"content":" String trimmedTaskDescription \u003d taskDescription.trim();","lastModifiedDate":"2024-03-21"},{"lineNumber":151,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskDescription.isValidTaskDescription(trimmedTaskDescription)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":152,"author":{"gitId":"nobodyishappy"},"content":" throw new ParseException(TaskDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":153,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":154,"author":{"gitId":"nobodyishappy"},"content":" return new TaskDescription(trimmedTaskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":155,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11"}],"authorContributionMap":{"nobodyishappy":32,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/UnmarkTaskCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.UnmarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" * Parses input arguments and creates a new UnmarkTaskCommand object","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"public class UnmarkTaskCommandParser implements Parser\u003cUnmarkTaskCommand\u003e {","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" * Parses the given {@code String} of arguments in the context of the UnmarkTaskCommand","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * and returns a UnmarkTaskCommand object for execution.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" public UnmarkTaskCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" try {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" return new UnmarkTaskCommand(index);","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" throw new ParseException(","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnmarkTaskCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"nobodyishappy":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":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19"},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block,","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" * sometimes used to avoid duplication","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" * between constructors. See","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" * https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" * Note that non-static init blocks are not recommended to use. There are other","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" * ways to avoid duplication","lastModifiedDate":"2024-03-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":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" public AddressBook() {","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" }","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":" * 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":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20"},{"lineNumber":62,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" * Returns true if a person with the same identity as {@code person} exists in","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" * the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06"},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21"},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21"},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07"},{"lineNumber":81,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29"},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" * Replaces the given person {@code target} in the list with","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":" * {@code editedPerson}.","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":88,"author":{"gitId":"Yskie"},"content":" * The person identity of {@code editedPerson} must not be the same as another","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"Yskie"},"content":" * existing person in the address book.","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28"},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":105,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"Yskie"},"content":" * Removes {@code task} from the {@code person} in {@code AddressBook}.","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"Yskie"},"content":" * {@code task} must exist in the task list.","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"Yskie"},"content":" public void deleteAssignedTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"Yskie"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"Yskie"},"content":" persons.deleteAssignedTask(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08"},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":119,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23"},{"lineNumber":120,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"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":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":145,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29"},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Yskie":24,"-":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":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"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":"breezetall"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" Predicate\u003cTask\u003e PREDICATE_SHOW_ALL_TASKS \u003d unused -\u003e true;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":"","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":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","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":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","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":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25"},{"lineNumber":57,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06"},{"lineNumber":60,"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":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":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07"},{"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":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07"},{"lineNumber":79,"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":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":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" * Returns the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" * Sets the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"Kaya3842"},"content":" void setTaskListFilePath(Path addressBookFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"Kaya3842"},"content":" * Replaces task list data with the data in {@code taskList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" static void setTaskList(TaskList taskList) {}","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"Kaya3842"},"content":" * Returns the task list.","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" TaskList getTaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"Kaya3842"},"content":" * Adds the given task.","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"Yskie"},"content":" * {@code task} must not already exist in the task list.","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" void addTask(Task task);","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"Yskie"},"content":" * Deletes the given task.","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"Yskie"},"content":" * {@code task} the task must exist in the task list.","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":" void deleteTask(Task task);","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"Kaya3842"},"content":" * Returns true if a task has the same description as a {@code task} in the task list.","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"Kaya3842"},"content":" boolean hasTask(Task task);","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":121,"author":{"gitId":"breezetall"},"content":" * Updates the filter of the filtered task list to filter by the given {@code predicate}.","lastModifiedDate":"2024-03-20"},{"lineNumber":122,"author":{"gitId":"breezetall"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-03-19"},{"lineNumber":123,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":124,"author":{"gitId":"breezetall"},"content":" void updateFilteredTaskList(Predicate\u003cTask\u003e predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":125,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":126,"author":{"gitId":"breezetall"},"content":" /** Returns an unmodifiable view of the filtered task list */","lastModifiedDate":"2024-03-19"},{"lineNumber":127,"author":{"gitId":"breezetall"},"content":" ObservableList\u003cTask\u003e getFilteredTaskList();","lastModifiedDate":"2024-03-19"},{"lineNumber":128,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":129,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01"},{"lineNumber":130,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05"},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05"},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Kaya3842":31,"Yskie":7,"-":87,"breezetall":12}},{"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":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"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":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" private final TaskList taskList;","lastModifiedDate":"2024-03-13"},{"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":"breezetall"},"content":" private final FilteredList\u003cTask\u003e filteredTasks;","lastModifiedDate":"2024-03-19"},{"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":"Kaya3842"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, TaskList taskList, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" requireAllNonNull(addressBook, taskList, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \", task list: \" + taskList","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" + \" and user prefs \" + userPrefs);","lastModifiedDate":"2024-03-13"},{"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":"Kaya3842"},"content":" this.taskList \u003d taskList;","lastModifiedDate":"2024-03-13"},{"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":"breezetall"},"content":" filteredTasks \u003d new FilteredList\u003c\u003e(this.taskList.getSerializeTaskList());","lastModifiedDate":"2024-03-19"},{"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":"Kaya3842"},"content":" this(new AddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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":"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":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" * Returns the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" return userPrefs.getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27"},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":" * Sets the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"nobodyishappy"},"content":" * @param taskListFilePath File path to task list.","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath(Path taskListFilePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" userPrefs.setTaskListFilePath(taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook","lastModifiedDate":"2024-03-19"},{"lineNumber":104,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27"},{"lineNumber":108,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21"},{"lineNumber":113,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25"},{"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":"2018-08-06"},{"lineNumber":117,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06"},{"lineNumber":119,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15"},{"lineNumber":124,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25"},{"lineNumber":130,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17"},{"lineNumber":135,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":140,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Task Manager","lastModifiedDate":"2024-03-19"},{"lineNumber":141,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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":142,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":143,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":144,"author":{"gitId":"Kaya3842"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":145,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":146,"author":{"gitId":"breezetall"},"content":" updateFilteredTaskList(PREDICATE_SHOW_ALL_TASKS);","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":148,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":149,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"Yskie"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":151,"author":{"gitId":"Yskie"},"content":" addressBook.deleteAssignedTask(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":152,"author":{"gitId":"Yskie"},"content":" taskList.deleteTask(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"Kaya3842"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"Kaya3842"},"content":" return taskList.hasTask(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":161,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"Kaya3842"},"content":" * Replaces task list data with the data in {@code taskList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"nobodyishappy"},"content":" * @param tasks Instance of the tasklist.","lastModifiedDate":"2024-03-19"},{"lineNumber":165,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"Kaya3842"},"content":" public void setTaskList(TaskList tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"Kaya3842"},"content":" taskList.setTaskList(tasks);","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"Kaya3842"},"content":" * Returns the task list.","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"Kaya3842"},"content":" public TaskList getTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"Kaya3842"},"content":" return taskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"breezetall"},"content":" * Returns an unmodifiable view of the list of {@code Task} backed by the internal list of","lastModifiedDate":"2024-03-20"},{"lineNumber":180,"author":{"gitId":"breezetall"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2024-03-19"},{"lineNumber":181,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":182,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":183,"author":{"gitId":"breezetall"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":184,"author":{"gitId":"breezetall"},"content":" return filteredTasks;","lastModifiedDate":"2024-03-19"},{"lineNumber":185,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":186,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":187,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":188,"author":{"gitId":"breezetall"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":189,"author":{"gitId":"breezetall"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":190,"author":{"gitId":"breezetall"},"content":" filteredTasks.setPredicate(predicate);","lastModifiedDate":"2024-03-19"},{"lineNumber":191,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":192,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":193,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"Yskie"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\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":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":196,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19"},{"lineNumber":197,"author":{"gitId":"Yskie"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"Yskie"},"content":" * internal list of","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11"},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19"},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":202,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":203,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":208,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05"},{"lineNumber":209,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12"},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31"},{"lineNumber":213,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13"},{"lineNumber":214,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":215,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31"},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":218,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31"},{"lineNumber":219,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":220,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31"},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":223,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":224,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13"},{"lineNumber":225,"author":{"gitId":"chin-herng"},"content":" \u0026\u0026 taskList.equals(otherModelManager.taskList)","lastModifiedDate":"2024-03-17"},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13"},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2024-03-19"},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":230,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":54,"Yskie":16,"chin-herng":1,"nobodyishappy":2,"-":139,"breezetall":18}},{"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":"Kaya3842"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27"}],"authorContributionMap":{"Kaya3842":2,"-":16}},{"path":"src/main/java/seedu/address/model/TaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":" * A class that stores the tasks from users.","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"public class TaskList {","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" //private ArrayList\u003cTask\u003e taskList;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" private ObservableList\u003cTask\u003e observableList;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" * Constructor of the class.","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" public TaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" observableList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":" * Creates a TaskList using the Tasks in the {@code toBeCopied}","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" public TaskList(TaskList toBeCopied) {","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" this();","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" requireNonNull(toBeCopied);","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" setTaskList(toBeCopied);","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" public void setTaskList(TaskList tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" observableList.setAll(tasks.observableList);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" * Adds a task to the end of list.","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" * @param task The task to be added to the list.","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"breezetall"},"content":" observableList.add(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":" * Deletes a task based on the index of list.","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" * @param task The task to be deleted.","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" observableList.remove(task);","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" public ObservableList\u003cTask\u003e getSerializeTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"breezetall"},"content":" return observableList;","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" return observableList.contains(task);","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" return true;","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" if (!(other instanceof TaskList)) {","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" return false;","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" TaskList otherTaskList \u003d (TaskList) other;","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" return observableList.equals(otherTaskList.observableList);","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":33,"Yskie":11,"chin-herng":23,"nobodyishappy":8,"breezetall":3}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08"},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27"},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" private Path taskListFilePath \u003d Paths.get(\"data\", \"tasklist.json\");","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"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":"Kaya3842"},"content":" setTaskListFilePath(newUserPrefs.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" return taskListFilePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath(Path taskListFilePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" this.taskListFilePath \u003d taskListFilePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath)","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" \u0026\u0026 taskListFilePath.equals(otherUserPrefs.taskListFilePath);","lastModifiedDate":"2024-03-13"},{"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 int hashCode() {","lastModifiedDate":"2016-09-24"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" return Objects.hash(guiSettings, addressBookFilePath, taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":93,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24"},{"lineNumber":94,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25"},{"lineNumber":95,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" sb.append(\"\\nLocal address book file location : \" + addressBookFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":" sb.append(\"\\nLocal task list file location : \" + taskListFilePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24"},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":16,"-":85}},{"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":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"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":"Yskie"},"content":" * Guarantees: details are present and not null, field values are validated,","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" * immutable.","lastModifiedDate":"2024-03-19"},{"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":"chin-herng"},"content":" private final Set\u003cTask\u003e tasks \u003d new HashSet\u003c\u003e();","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":"-"},"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":"chin-herng"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTask\u003e tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" requireAllNonNull(name, phone, email, address);","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" this.tasks.addAll(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12"},{"lineNumber":42,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20"},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12"},{"lineNumber":46,"author":{"gitId":"-"},"content":" return phone;","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":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12"},{"lineNumber":50,"author":{"gitId":"-"},"content":" return email;","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 Address getAddress() {","lastModifiedDate":"2017-07-12"},{"lineNumber":54,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" * Returns an immutable task set, which throws","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" * {@code UnsupportedOperationException}","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" public Set\u003cTask\u003e getTasks() {","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" return Collections.unmodifiableSet(tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" * @param task to be assigned to {@code this}","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" * @return a new {@code Person} as a result of assigning {@code task} to","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" * {@code this}","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" public Person addTask(Task task) {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(tasks);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" editedTasks.add(task);","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" return new Person(name, phone, email, address, editedTasks);","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" * @param task to be unassigned from {@code this}","lastModifiedDate":"2024-03-18"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" * @return a new {@code Person} as a result of unassigning {@code task} to","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"Yskie"},"content":" * {@code this}","lastModifiedDate":"2024-03-19"},{"lineNumber":81,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":82,"author":{"gitId":"Yskie"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"Yskie"},"content":" for (Task t : tasks) {","lastModifiedDate":"2024-03-19"},{"lineNumber":84,"author":{"gitId":"Yskie"},"content":" if (task.equals(t)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" return true;","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":88,"author":{"gitId":"Yskie"},"content":" return false;","lastModifiedDate":"2024-03-19"},{"lineNumber":89,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":90,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":91,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":92,"author":{"gitId":"Yskie"},"content":" * @param task to be unassigned from {@code this}","lastModifiedDate":"2024-03-19"},{"lineNumber":93,"author":{"gitId":"Yskie"},"content":" * @return a new {@code Person} as a result of unassigning {@code task} to","lastModifiedDate":"2024-03-19"},{"lineNumber":94,"author":{"gitId":"Yskie"},"content":" * {@code this}","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" public Person deleteTask(Task task) {","lastModifiedDate":"2024-03-18"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(tasks);","lastModifiedDate":"2024-03-18"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" editedTasks.remove(task);","lastModifiedDate":"2024-03-18"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" return new Person(name, phone, email, address, editedTasks);","lastModifiedDate":"2024-03-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19"},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19"},{"lineNumber":108,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":111,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19"},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":120,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24"},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10"},{"lineNumber":122,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10"},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10"},{"lineNumber":127,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10"},{"lineNumber":131,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13"},{"lineNumber":132,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13"},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"chin-herng"},"content":" \u0026\u0026 tasks.equals(otherPerson.tasks);","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 int hashCode() {","lastModifiedDate":"2016-08-24"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24"},{"lineNumber":141,"author":{"gitId":"chin-herng"},"content":" return Objects.hash(name, phone, email, address, tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":145,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24"},{"lineNumber":146,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23"},{"lineNumber":147,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23"},{"lineNumber":148,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23"},{"lineNumber":149,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23"},{"lineNumber":150,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23"},{"lineNumber":151,"author":{"gitId":"chin-herng"},"content":" .add(\"tasks\", tasks)","lastModifiedDate":"2024-03-17"},{"lineNumber":152,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Yskie":22,"chin-herng":26,"-":107}},{"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":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" * A list of persons that enforces uniqueness between its elements and does not","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" * allow nulls.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" * A person is considered unique by comparing using","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":" * {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":" * persons uses Person#isSamePerson(Person) for equality so as to ensure that","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" * the person being added or updated is","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" * a person uses Person#equals(Object) so","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":" * as to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2018-04-19"},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22"},{"lineNumber":27,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24"},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d FXCollections","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" .unmodifiableObservableList(internalList);","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22"},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10"},{"lineNumber":40,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","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":" * Adds a person to the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15"},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":53,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10"},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":" * The person identity of {@code editedPerson} must not be the same as another","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" * existing person in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07"},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07"},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07"},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07"},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24"},{"lineNumber":79,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07"},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24"},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07"},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15"},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28"},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24"},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19"},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19"},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07"},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07"},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07"},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10"},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19"},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21"},{"lineNumber":103,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":106,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"Yskie"},"content":" * Deletes the assigned task for a {@code persons}.","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"Yskie"},"content":" * {@code task} must exist be assigned to be deleted.","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"Yskie"},"content":" public void deleteAssignedTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"Yskie"},"content":" requireAllNonNull(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"Yskie"},"content":" for (Person person : internalList) {","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"Yskie"},"content":" if (person.hasTask(task)) {","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"Yskie"},"content":" Person taskDeletePerson \u003d person.deleteTask(task);","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"Yskie"},"content":" setPerson(person, taskDeletePerson);","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":119,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01"},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01"},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05"},{"lineNumber":124,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24"},{"lineNumber":129,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24"},{"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-09-21"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21"},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13"},{"lineNumber":135,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13"},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13"},{"lineNumber":140,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13"},{"lineNumber":143,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13"},{"lineNumber":144,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13"},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21"},{"lineNumber":149,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21"},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24"},{"lineNumber":153,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24"},{"lineNumber":154,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24"},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19"},{"lineNumber":158,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19"},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19"},{"lineNumber":160,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19"},{"lineNumber":161,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":162,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19"},{"lineNumber":163,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19"},{"lineNumber":164,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19"},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":168,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19"},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24"}],"authorContributionMap":{"Yskie":27,"-":143}},{"path":"src/main/java/seedu/address/model/task/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import java.util.Objects;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":" * The representation of a task added by the user.","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"public class Task {","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":" private TaskName name;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" private TaskDescription description;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" private TaskStatus status;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" * The constructor of the class.","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" * @param description Description of the task.","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" public Task(TaskName name, TaskDescription description, TaskStatus status) {","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" this.name \u003d name;","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" this.description \u003d description;","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" this.status \u003d status;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" * Gets the name of a task.","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" * @return The name of the task.","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" public TaskName getName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" return name;","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" * Gets the description of a task.","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" * @return The description of the task.","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" public TaskDescription getDescription() {","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" return description;","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" * Gets the status of a task.","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" * @return The statis of the task.","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" public TaskStatus getStatus() {","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" return status;","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" return true;","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" //instanceof handles null","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" if (!(other instanceof Task)) {","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" return false;","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" Task otherTask \u003d (Task) other;","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" return this.name.equals(otherTask.name)","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" \u0026\u0026 this.description.equals(otherTask.description);","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" return Objects.hash(name, description);","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" * Compare with other tasks for sorting in tags","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" * @param otherTask Task to be compared to","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" * @return value of the comparison","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" public int compare(Task otherTask) {","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" if (this.getName().taskName.compareTo(otherTask.getName().taskName) \u003d\u003d 0) {","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" return this.getDescription()","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" .taskDescription.compareTo(otherTask.getDescription().taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":" return this.getName()","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" .taskName.compareTo(otherTask.getName().taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":35,"chin-herng":4,"nobodyishappy":44}},{"path":"src/main/java/seedu/address/model/task/TaskDescription.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":" * Represents a Task\u0027s description in the task list.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"public class TaskDescription {","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" \"Task descriptions can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" public final String taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskDescription}.","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" * @param description A valid description.","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" public TaskDescription(String decription) {","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(decription);","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" checkArgument(isValidTaskDescription(decription), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" taskDescription \u003d decription;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" public static boolean isValidTaskDescription(String test) {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" return taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof TaskDescription)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription otherTaskDescription \u003d (TaskDescription) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" return taskDescription.equals(otherTaskDescription.taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" return taskDescription.hashCode();","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"nobodyishappy":65}},{"path":"src/main/java/seedu/address/model/task/TaskName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":" * Represents a Task\u0027s name in the task list.","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"public class TaskName {","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Task name can take any values, and it should not be blank\";","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" /*","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" public final String taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskName}.","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" *","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" * @param name A valid name.","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" public TaskName(String name) {","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" requireNonNull(name);","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" checkArgument(isValidTaskName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" taskName \u003d name;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" public static boolean isValidTaskName(String test) {","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" return taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof TaskName)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" TaskName otherTaskName \u003d (TaskName) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" return taskName.equals(otherTaskName.taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" public int hashCode() {","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" return taskName.hashCode();","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"nobodyishappy":63}},{"path":"src/main/java/seedu/address/model/task/TaskStatus.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":" * Represents a Task\u0027s status in the task list.","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"public class TaskStatus {","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":" private boolean taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskStatus}.","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" public TaskStatus() {","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d false;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" * Constructs an {@code TaskStatus}.","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" public TaskStatus(String status) {","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" if (status.equalsIgnoreCase(\"Done\")) {","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d true;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d false;","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" public boolean getTaskStatus() {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" return taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" public void setAsDone() {","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d true;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" public void setAsUndone() {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d false;","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" public String toString() {","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" if (taskStatus) {","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" return \"Done\";","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" } else {","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" return \"Not Done\";","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" @Override","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" return true;","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" if (!(other instanceof TaskStatus)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" return false;","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus otherStatus \u003d (TaskStatus) other;","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" return taskStatus \u003d\u003d otherStatus.taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"nobodyishappy":64}},{"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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20"},{"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":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"nobodyishappy"},"content":" getTaskSet(getSampleTasks()[0])),","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":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" getTaskSet(getSampleTasks()[0], getSampleTasks()[1]))","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" public static Task[] getSampleTasks() {","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" return new Task[] {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" new Task(new TaskName(\"Implement find for task\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Find task has to be done\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus()),","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" new Task(new TaskName(\"Implement remind for task\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Remind task has to be done\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus())","lastModifiedDate":"2024-03-21"},{"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":"Kaya3842"},"content":" public static TaskList getSampleTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" for (Task sampleTask : getSampleTasks()) {","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" tasks.addTask(sampleTask);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" return tasks;","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20"},{"lineNumber":55,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07"},{"lineNumber":56,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20"},{"lineNumber":57,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":59,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07"},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" * Returns a task set containing the list of strings given.","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" public static Set\u003cTask\u003e getTaskSet(Task... tasks) {","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" return Arrays.stream(tasks)","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20"}],"authorContributionMap":{"Kaya3842":7,"chin-herng":1,"nobodyishappy":18,"-":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":"-"},"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":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" private final List\u003cJsonAdaptedTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" @JsonProperty(\"tasks\") List\u003cJsonAdaptedTask\u003e tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13"},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" if (tasks !\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":" this.tasks.addAll(tasks);","lastModifiedDate":"2024-03-17"},{"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":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13"},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":52,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13"},{"lineNumber":53,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":56,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" tasks.addAll(source.getTasks().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" .map(JsonAdaptedTask::new)","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","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":" /**","lastModifiedDate":"2018-08-13"},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13"},{"lineNumber":64,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" final List\u003cTask\u003e personTasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" for (JsonAdaptedTask task : tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" personTasks.add(task.toModelType());","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":79,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":87,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":95,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":103,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13"},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" final Set\u003cTask\u003e modelTasks \u003d new HashSet\u003c\u003e(personTasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chin-herng":12,"-":97}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedTask.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" * Jackson-friendly version of {@link Task}.","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"public class JsonAdaptedTask {","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Task\u0027s %s field is missing!\";","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" private final String taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" private final String taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" private final String taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" @JsonCreator","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" public JsonAdaptedTask(@JsonProperty(\"taskName\") String taskName,","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" @JsonProperty(\"taskDescription\") String taskDescription,","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" @JsonProperty(\"taskStatus\") String taskStatus) {","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" this.taskName \u003d taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" this.taskDescription \u003d taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" this.taskStatus \u003d taskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" * Converts a given {@code Task} into this class for Jackson use.","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" public JsonAdaptedTask(Task source) {","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" taskName \u003d source.getName().taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" taskDescription \u003d source.getDescription().taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" taskStatus \u003d source.getStatus().toString();","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" * Converts this Jackson-friendly adapted task object into the model\u0027s {@code Task} object.","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" public Task toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" if (taskName \u003d\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" TaskName.class.getSimpleName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskName.isValidTaskName(taskName)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(TaskName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" final TaskName modelTaskName \u003d new TaskName(taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" if (taskDescription \u003d\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" TaskDescription.class.getSimpleName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" if (!TaskDescription.isValidTaskDescription(taskDescription)) {","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(TaskDescription.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" final TaskDescription modelTaskDescription \u003d new TaskDescription(taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" if (taskStatus \u003d\u003d null) {","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" TaskStatus.class.getSimpleName()));","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" final TaskStatus modelTaskStatus \u003d new TaskStatus(taskStatus);","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" return new Task(modelTaskName, modelTaskDescription, modelTaskStatus);","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":37,"nobodyishappy":39}},{"path":"src/main/java/seedu/address/storage/JsonSerializableTaskList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import java.util.List;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" * An Immutable TaskList that is serializable to JSON format.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"@JsonRootName(value \u003d \"tasklist\")","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"class JsonSerializableTaskList {","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" public static final String MESSAGE_DUPLICATE_TASK \u003d \"Task list contains duplicate task(s).\";","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" private final List\u003cJsonAdaptedTask\u003e tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" * Constructs a {@code JsonSerializableTaskList} with the given persons.","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" @JsonCreator","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" public JsonSerializableTaskList(@JsonProperty(\"tasks\") List\u003cJsonAdaptedTask\u003e tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" this.tasks.addAll(tasks);","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" * Converts a given {@code TaskList} into this class for Jackson use.","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" * @param source future changes to this will not affect the created","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" * {@code JsonSerializableTaskList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" public JsonSerializableTaskList(TaskList source) {","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" tasks.addAll(source.getSerializeTaskList().stream().map(JsonAdaptedTask::new).collect(Collectors.toList()));","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" * Converts this address book into the model\u0027s {@code TaskList} object.","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" public TaskList toModelType() throws IllegalValueException {","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" for (JsonAdaptedTask jsonAdaptedTask : tasks) {","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" Task task \u003d jsonAdaptedTask.toModelType();","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" if (taskList.hasTask(task)) {","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_TASK);","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task);","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" return taskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":60}},{"path":"src/main/java/seedu/address/storage/JsonTaskListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" * A class to access TaskList data stored as a json file on the hard disk.","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"public class JsonTaskListStorage implements TaskListStorage {","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonTaskListStorage.class);","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" private Path filePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" public JsonTaskListStorage(Path filePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" return filePath;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" public Optional\u003cTaskList\u003e readTaskList() throws DataLoadingException {","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" return readTaskList(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" * Similar to {@link #readTaskList()}.","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" public Optional\u003cTaskList\u003e readTaskList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-13"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cJsonSerializableTaskList\u003e jsonTaskList \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-03-13"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" filePath, JsonSerializableTaskList.class);","lastModifiedDate":"2024-03-13"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" if (!jsonTaskList.isPresent()) {","lastModifiedDate":"2024-03-13"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" return Optional.empty();","lastModifiedDate":"2024-03-13"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" try {","lastModifiedDate":"2024-03-13"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" return Optional.of(jsonTaskList.get().toModelType());","lastModifiedDate":"2024-03-13"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-03-13"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-03-13"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-03-13"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList) throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" saveTaskList(taskList, filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" * Similar to {@link #saveTaskList(TaskList)}.","lastModifiedDate":"2024-03-13"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList, Path filePath) throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(taskList);","lastModifiedDate":"2024-03-13"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":77,"author":{"gitId":"Kaya3842"},"content":" JsonUtil.saveJsonFile(new JsonSerializableTaskList(taskList), filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":80}},{"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":"2016-09-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-25"},{"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 Storage component","lastModifiedDate":"2016-09-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"public interface Storage extends AddressBookStorage, TaskListStorage, UserPrefsStorage {","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cTaskList\u003e readTaskList() throws DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" void saveTaskList(TaskList taskList) throws IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25"}],"authorContributionMap":{"Kaya3842":11,"-":31}},{"path":"src/main/java/seedu/address/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-24"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24"},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08"},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23"},{"lineNumber":21,"author":{"gitId":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" private TaskListStorage taskListStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" public StorageManager(AddressBookStorage addressBookStorage, TaskListStorage taskListStorage,","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" UserPrefsStorage userPrefsStorage) {","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" this.taskListStorage \u003d taskListStorage;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":35,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27"},{"lineNumber":49,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"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":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21"},{"lineNumber":57,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24"},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":61,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":62,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-15"},{"lineNumber":67,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":68,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21"},{"lineNumber":78,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":79,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d TaskList methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-03-13"},{"lineNumber":87,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":" return taskListStorage.getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":91,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":94,"author":{"gitId":"Kaya3842"},"content":" * Returns TaskList data.","lastModifiedDate":"2024-03-13"},{"lineNumber":95,"author":{"gitId":"Kaya3842"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-03-13"},{"lineNumber":96,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":97,"author":{"gitId":"Kaya3842"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-13"},{"lineNumber":98,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":99,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" public Optional\u003cTaskList\u003e readTaskList() throws DataLoadingException {","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"Kaya3842"},"content":" return readTaskList(taskListStorage.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":104,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":105,"author":{"gitId":"Kaya3842"},"content":" * @param filePath cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":" * @see #getTaskListFilePath()","lastModifiedDate":"2024-03-13"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":108,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":109,"author":{"gitId":"Kaya3842"},"content":" public Optional\u003cTaskList\u003e readTaskList(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-03-13"},{"lineNumber":110,"author":{"gitId":"Kaya3842"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":111,"author":{"gitId":"Kaya3842"},"content":" return taskListStorage.readTaskList(filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":112,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":113,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":114,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":115,"author":{"gitId":"Kaya3842"},"content":" * Saves the given {@link TaskList} to the storage.","lastModifiedDate":"2024-03-13"},{"lineNumber":116,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":117,"author":{"gitId":"Kaya3842"},"content":" * @param taskList cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":118,"author":{"gitId":"Kaya3842"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-13"},{"lineNumber":119,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":120,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":121,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList) throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":122,"author":{"gitId":"Kaya3842"},"content":" saveTaskList(taskList, taskListStorage.getTaskListFilePath());","lastModifiedDate":"2024-03-13"},{"lineNumber":123,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":124,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":125,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":126,"author":{"gitId":"Kaya3842"},"content":" * @see #saveTaskList(TaskList)","lastModifiedDate":"2024-03-13"},{"lineNumber":127,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":128,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList, Path filePath) throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":129,"author":{"gitId":"Kaya3842"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":130,"author":{"gitId":"Kaya3842"},"content":" taskListStorage.saveTaskList(taskList, filePath);","lastModifiedDate":"2024-03-13"},{"lineNumber":131,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":132,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":56,"-":77}},{"path":"src/main/java/seedu/address/storage/TaskListStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-13"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-13"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-13"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-13"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":" * Represents a storage for {@link seedu.address.model.TaskList}.","lastModifiedDate":"2024-03-13"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"public interface TaskListStorage {","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-03-13"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" Path getTaskListFilePath();","lastModifiedDate":"2024-03-13"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" * Returns TaskList data.","lastModifiedDate":"2024-03-13"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-03-13"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-03-13"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cTaskList\u003e readTaskList() throws DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" * @see #getTaskListFilePath()","lastModifiedDate":"2024-03-13"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" Optional\u003cTaskList\u003e readTaskList(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-03-13"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" * Saves the given {@link TaskList} to the storage.","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" * @param taskList cannot be null.","lastModifiedDate":"2024-03-13"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-03-13"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" void saveTaskList(TaskList taskList) throws IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" * @see #saveTaskList(TaskList)","lastModifiedDate":"2024-03-13"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" void saveTaskList(TaskList taskList, Path filePath) throws IOException;","lastModifiedDate":"2024-03-13"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-13"}],"authorContributionMap":{"Kaya3842":44}},{"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":"breezetall"},"content":" private TaskListPanel taskListPanel;","lastModifiedDate":"2024-03-17"},{"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":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":" private StackPane taskListPanelPlaceholder;","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21"},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02"},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21"},{"lineNumber":67,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":69,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15"},{"lineNumber":71,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15"},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24"},{"lineNumber":75,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24"},{"lineNumber":78,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21"},{"lineNumber":79,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18"},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":86,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18"},{"lineNumber":87,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18"},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18"},{"lineNumber":89,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18"},{"lineNumber":90,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18"},{"lineNumber":91,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18"},{"lineNumber":92,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18"},{"lineNumber":93,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":94,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18"},{"lineNumber":95,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18"},{"lineNumber":96,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18"},{"lineNumber":97,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18"},{"lineNumber":99,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18"},{"lineNumber":100,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18"},{"lineNumber":101,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18"},{"lineNumber":102,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18"},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18"},{"lineNumber":104,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18"},{"lineNumber":107,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18"},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18"},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16"},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":115,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21"},{"lineNumber":116,"author":{"gitId":"breezetall"},"content":" taskListPanel \u003d new TaskListPanel(logic.getFilteredTaskList());","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"breezetall"},"content":" taskListPanelPlaceholder.getChildren().add(taskListPanel.getRoot());","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"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":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":135,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16"},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15"},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":147,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15"},{"lineNumber":150,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18"},{"lineNumber":151,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18"},{"lineNumber":156,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15"},{"lineNumber":157,"author":{"gitId":"-"},"content":" primaryStage.show();","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":" /**","lastModifiedDate":"2016-08-18"},{"lineNumber":161,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18"},{"lineNumber":162,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18"},{"lineNumber":163,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18"},{"lineNumber":164,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18"},{"lineNumber":165,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18"},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25"},{"lineNumber":172,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25"},{"lineNumber":173,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":176,"author":{"gitId":"breezetall"},"content":" public TaskListPanel getTaskListPanel() {","lastModifiedDate":"2024-03-19"},{"lineNumber":177,"author":{"gitId":"breezetall"},"content":" return taskListPanel;","lastModifiedDate":"2024-03-19"},{"lineNumber":178,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":179,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":181,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09"},{"lineNumber":182,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09"},{"lineNumber":183,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09"},{"lineNumber":184,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":185,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09"},{"lineNumber":186,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09"},{"lineNumber":187,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09"},{"lineNumber":188,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":189,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":192,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":195,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09"},{"lineNumber":196,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09"},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":199,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09"},{"lineNumber":200,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09"},{"lineNumber":201,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13"},{"lineNumber":202,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09"},{"lineNumber":203,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09"},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":206,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18"}],"authorContributionMap":{"-":196,"breezetall":10}},{"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":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16"},{"lineNumber":11,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16"},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16"},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12"},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":28,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21"},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21"},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" private FlowPane tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10"},{"lineNumber":46,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12"},{"lineNumber":48,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21"},{"lineNumber":49,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20"},{"lineNumber":50,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":51,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":52,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":" person.getTasks().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" .sorted((t1, t2) -\u003e t1.compare(t2))","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" .forEach(task -\u003e tasks.getChildren().add(new Label(task.getName().taskName)));","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"chin-herng":2,"nobodyishappy":2,"-":53}},{"path":"src/main/java/seedu/address/ui/TaskCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"public class TaskCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":" private static final String FXML \u003d \"TaskListCard.fxml\";","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" public final Task task;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":" private HBox cardPane;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"breezetall"},"content":" private Label name;","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":" private Label id;","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" private Label status;","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" private Label description;","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" * Creates a {@code TaskCode} with the given {@code Task} and index to display.","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"breezetall"},"content":" public TaskCard(Task task, int displayedIndex) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":" super(FXML);","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"breezetall"},"content":" this.task \u003d task;","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"breezetall"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" name.setText(task.getName().taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" status.setText(task.getStatus().toString());","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" description.setText(task.getDescription().taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"nobodyishappy":4,"breezetall":44}},{"path":"src/main/java/seedu/address/ui/TaskListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":"public class TaskListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":" private static final String FXML \u003d \"TaskListPanel.fxml\";","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" private final Logger logger \u003d LogsCenter.getLogger(TaskListPanel.class);","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" @FXML","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" private ListView\u003cTask\u003e taskListView;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" public TaskListPanel(ObservableList\u003cTask\u003e taskList) {","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":" super(FXML);","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" taskListView.setItems(taskList);","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"breezetall"},"content":" taskListView.setCellFactory(listView -\u003e new TaskListViewCell());","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"breezetall"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" class TaskListViewCell extends ListCell\u003cTask\u003e {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" protected void updateItem(Task task, boolean empty) {","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" super.updateItem(task, empty);","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"breezetall"},"content":" if (empty || task \u003d\u003d null) {","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":" setGraphic(null);","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"breezetall"},"content":" setText(null);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"breezetall"},"content":" } else {","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"breezetall"},"content":" setGraphic(new TaskCard(task, getIndex() + 1).getRoot());","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"breezetall":49}},{"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":"chin-herng"},"content":"#tasks {","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":"#tasks .label {","lastModifiedDate":"2024-03-17"},{"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":{"chin-herng":2,"-":350}},{"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":"breezetall"},"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":"breezetall"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":"\u003cfx:root minHeight\u003d\"600\" minWidth\u003d\"450\" onCloseRequest\u003d\"#handleExit\" title\u003d\"Address App\" type\u003d\"javafx.stage.Stage\" 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":" \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":"breezetall"},"content":" \u003cStackPane fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-17"},{"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":"breezetall"},"content":" \u003cStackPane fx:id\u003d\"resultDisplayPlaceholder\" maxHeight\u003d\"100\" minHeight\u003d\"100\" prefHeight\u003d\"100\" styleClass\u003d\"pane-with-border\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14"},{"lineNumber":44,"author":{"gitId":"breezetall"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"10\" right\u003d\"10\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-17"},{"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":"breezetall"},"content":" \u003cHBox prefWidth\u003d\"200.0\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"breezetall"},"content":" \u003cchildren\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":50,"author":{"gitId":"breezetall"},"content":" \u003cVBox fx:id\u003d\"personList\" minWidth\u003d\"340\" prefWidth\u003d\"600.0\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":52,"author":{"gitId":"breezetall"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2017-06-21"},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25"},{"lineNumber":57,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"breezetall"},"content":" \u003cVBox fx:id\u003d\"taskList\" minWidth\u003d\"340\" prefWidth\u003d\"340.0\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"breezetall"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"breezetall"},"content":" \u003cInsets bottom\u003d\"10\" left\u003d\"10\" right\u003d\"10\" top\u003d\"10\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"breezetall"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"breezetall"},"content":" \u003cStackPane fx:id\u003d\"taskListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"breezetall"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"breezetall"},"content":" \u003c/children\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"breezetall"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09"},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29"},{"lineNumber":71,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29"}],"authorContributionMap":{"-":51,"breezetall":20}},{"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":"chin-herng"},"content":" \u003cFlowPane fx:id\u003d\"tasks\" /\u003e","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"chin-herng":1,"-":35}},{"path":"src/main/resources/view/TaskListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.RowConstraints?\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"breezetall"},"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":14,"author":{"gitId":"breezetall"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"40.0\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"status\" styleClass\u003d\"cell_medium_label\" text\u003d\"\\$status\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" \u003cLabel fx:id\u003d\"description\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$description\" /\u003e","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"breezetall"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"nobodyishappy":3,"breezetall":32}},{"path":"src/main/resources/view/TaskListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"breezetall"},"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":"breezetall"},"content":" \u003cListView fx:id\u003d\"taskListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"breezetall":8}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09"},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11"},{"lineNumber":26,"author":{"gitId":"-"},"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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"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":"Kaya3842"},"content":"import seedu.address.storage.JsonTaskListStorage;","lastModifiedDate":"2024-03-13"},{"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":"Kaya3842"},"content":" JsonTaskListStorage taskListStorage \u003d","lastModifiedDate":"2024-03-13"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" new JsonTaskListStorage(temporaryFolder.resolve(\"tasklist.json\"));","lastModifiedDate":"2024-03-13"},{"lineNumber":54,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, taskListStorage, userPrefsStorage);","lastModifiedDate":"2024-03-13"},{"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":"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":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":95,"author":{"gitId":"breezetall"},"content":" public void getFilteredTaskList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":96,"author":{"gitId":"breezetall"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredTaskList().remove(0));","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"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":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), model.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31"},{"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":"Kaya3842"},"content":" // Inject LogicManager with a TaskListStorage that throws the IOException e when saving","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"Kaya3842"},"content":" JsonTaskListStorage taskListStorage \u003d new JsonTaskListStorage(prefPath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList(TaskList taskList, Path filePath)","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"Kaya3842"},"content":" throws IOException {","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"Kaya3842"},"content":" throw e;","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"Kaya3842"},"content":" };","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13"},{"lineNumber":180,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13"},{"lineNumber":181,"author":{"gitId":"Kaya3842"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, taskListStorage, userPrefsStorage);","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13"},{"lineNumber":186,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13"},{"lineNumber":187,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13"},{"lineNumber":188,"author":{"gitId":"chin-herng"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTasks().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":189,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13"},{"lineNumber":190,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13"},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13"},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21"}],"authorContributionMap":{"Kaya3842":16,"chin-herng":1,"-":171,"breezetall":5}},{"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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15"},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15"},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15"},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07"},{"lineNumber":32,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15"},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":35,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15"},{"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":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10"},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23"},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23"},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"Kaya3842":3,"-":46}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10"},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15"},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15"},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23"},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-13"},{"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":"Kaya3842"},"content":" * A default model stub that have all methods failing.","lastModifiedDate":"2024-03-13"},{"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":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":154,"author":{"gitId":"Kaya3842"},"content":" * Returns the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":155,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":156,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":157,"author":{"gitId":"Kaya3842"},"content":" public Path getTaskListFilePath() {","lastModifiedDate":"2024-03-13"},{"lineNumber":158,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":160,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":161,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":162,"author":{"gitId":"Kaya3842"},"content":" * Sets the user prefs\u0027 task list file path.","lastModifiedDate":"2024-03-13"},{"lineNumber":163,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":164,"author":{"gitId":"Kaya3842"},"content":" * @param addressBookFilePath","lastModifiedDate":"2024-03-13"},{"lineNumber":165,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":166,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-03-13"},{"lineNumber":168,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":169,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":170,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":171,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":172,"author":{"gitId":"Kaya3842"},"content":" * Returns the task list.","lastModifiedDate":"2024-03-13"},{"lineNumber":173,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":174,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":175,"author":{"gitId":"Kaya3842"},"content":" public TaskList getTaskList() {","lastModifiedDate":"2024-03-13"},{"lineNumber":176,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":177,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":178,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":179,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":180,"author":{"gitId":"Kaya3842"},"content":" * Adds the given task.","lastModifiedDate":"2024-03-13"},{"lineNumber":181,"author":{"gitId":"Kaya3842"},"content":" * {@code task} must not already exist in the address book.","lastModifiedDate":"2024-03-13"},{"lineNumber":182,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":183,"author":{"gitId":"Kaya3842"},"content":" * @param task","lastModifiedDate":"2024-03-13"},{"lineNumber":184,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":185,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":186,"author":{"gitId":"Kaya3842"},"content":" public void addTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":187,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":188,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":189,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":190,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-13"},{"lineNumber":191,"author":{"gitId":"Yskie"},"content":" * Deletes a task based on the index of list.","lastModifiedDate":"2024-03-17"},{"lineNumber":192,"author":{"gitId":"Yskie"},"content":" *","lastModifiedDate":"2024-03-17"},{"lineNumber":193,"author":{"gitId":"Yskie"},"content":" * @param task The task to be deleted in the list.","lastModifiedDate":"2024-03-19"},{"lineNumber":194,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":195,"author":{"gitId":"Yskie"},"content":" @Override","lastModifiedDate":"2024-03-17"},{"lineNumber":196,"author":{"gitId":"Yskie"},"content":" public void deleteTask(Task task) {","lastModifiedDate":"2024-03-19"},{"lineNumber":197,"author":{"gitId":"Yskie"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":198,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":199,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":200,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":201,"author":{"gitId":"Yskie"},"content":" * Returns true if a task has the same description as a {@code task} in the task","lastModifiedDate":"2024-03-17"},{"lineNumber":202,"author":{"gitId":"Yskie"},"content":" * list.","lastModifiedDate":"2024-03-17"},{"lineNumber":203,"author":{"gitId":"Kaya3842"},"content":" *","lastModifiedDate":"2024-03-13"},{"lineNumber":204,"author":{"gitId":"Kaya3842"},"content":" * @param task","lastModifiedDate":"2024-03-13"},{"lineNumber":205,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-13"},{"lineNumber":206,"author":{"gitId":"Kaya3842"},"content":" @Override","lastModifiedDate":"2024-03-13"},{"lineNumber":207,"author":{"gitId":"Kaya3842"},"content":" public boolean hasTask(Task task) {","lastModifiedDate":"2024-03-13"},{"lineNumber":208,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-13"},{"lineNumber":209,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-13"},{"lineNumber":210,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-13"},{"lineNumber":211,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":212,"author":{"gitId":"breezetall"},"content":" public ObservableList\u003cTask\u003e getFilteredTaskList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":213,"author":{"gitId":"breezetall"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":214,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":215,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":216,"author":{"gitId":"breezetall"},"content":" @Override","lastModifiedDate":"2024-03-19"},{"lineNumber":217,"author":{"gitId":"breezetall"},"content":" public void updateFilteredTaskList(Predicate\u003cTask\u003e predicate) {","lastModifiedDate":"2024-03-19"},{"lineNumber":218,"author":{"gitId":"breezetall"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-03-19"},{"lineNumber":219,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":220,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":221,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":222,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10"},{"lineNumber":223,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":226,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":227,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10"},{"lineNumber":228,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06"},{"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"},{"lineNumber":232,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12"},{"lineNumber":233,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07"},{"lineNumber":234,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":235,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07"},{"lineNumber":236,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07"},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":238,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":239,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":240,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07"},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":243,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":244,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":245,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":246,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07"},{"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"},{"lineNumber":251,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12"},{"lineNumber":252,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12"},{"lineNumber":253,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12"},{"lineNumber":254,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12"},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":256,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07"},{"lineNumber":257,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07"},{"lineNumber":258,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07"},{"lineNumber":259,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07"},{"lineNumber":260,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07"},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07"},{"lineNumber":262,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12"},{"lineNumber":263,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08"},{"lineNumber":264,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":265,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10"},{"lineNumber":266,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":268,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04"},{"lineNumber":269,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04"},{"lineNumber":270,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04"},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":272,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12"},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12"},{"lineNumber":274,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12"}],"authorContributionMap":{"Kaya3842":49,"Yskie":12,"-":203,"breezetall":10}},{"path":"src/test/java/seedu/address/logic/commands/AddTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"class AddTaskCommandTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" private ModelManager model;","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" @BeforeEach","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" public void setUp() {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" model \u003d new ModelManager();","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" public void constructor_nullTask_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddTaskCommand(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" public void execute_taskAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" Task validTask \u003d new Task(new TaskName(\"Implement test\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" CommandResult commandResult \u003d new AddTaskCommand(validTask).execute(model);","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" assertTrue(model.hasTask(validTask));","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" public void execute_duplicateTask_throwsCommandException() throws CommandException {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" Task validTask \u003d new Task(new TaskName(\"Implement test\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" new AddTaskCommand(validTask).execute(model);","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand.MESSAGE_DUPLICATE_TASK, () -\u003e new AddTaskCommand(validTask).execute(model));","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" void testEquals() {","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" Task testTask1 \u003d new Task(new TaskName(\"Implement test1\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"First test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" Task testTask2 \u003d new Task(new TaskName(\"Implement test2\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Second test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand addTaskCommand1 \u003d new AddTaskCommand(testTask1);","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand addTaskCommand2 \u003d new AddTaskCommand(testTask2);","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" assertTrue(addTaskCommand1.equals(addTaskCommand1));","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand addTaskCommandCopy1 \u003d new AddTaskCommand(testTask1);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(addTaskCommandCopy1.equals(addTaskCommand1));","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":" assertFalse(addTaskCommand1.equals(1));","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":77,"author":{"gitId":"Kaya3842"},"content":" assertFalse(addTaskCommand1.equals(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":78,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" // different tasks -\u003e returns false","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" assertFalse(addTaskCommand1.equals(addTaskCommand2));","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" void testToString() {","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"nobodyishappy"},"content":" Task test \u003d new Task(new TaskName(\"Implement test\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand addTaskCommand \u003d new AddTaskCommand(test);","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":" String expected \u003d AddTaskCommand.class.getCanonicalName() + \"{toAdd\u003d\" + test + \"}\";","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"Kaya3842"},"content":" assertEquals(expected, addTaskCommand.toString());","lastModifiedDate":"2024-03-14"},{"lineNumber":91,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":92,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":93,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":73,"nobodyishappy":20}},{"path":"src/test/java/seedu/address/logic/commands/AssignCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":"import java.util.Set;","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":"class AssignCommandTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" public void execute_assignTaskUnfilteredList_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(firstPerson.getTasks());","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" Task taskToAssign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":" editedTasks.add(taskToAssign);","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withTasks(editedTasks).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(AssignCommand.MESSAGE_SUCCESS, Messages.formatTask(taskToAssign),","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" editedPerson.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(assignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" Set\u003cTask\u003e editedTasks \u003d new HashSet\u003c\u003e(firstPerson.getTasks());","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" Task taskToAssign \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" editedTasks.add(taskToAssign);","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withTasks(editedTasks).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" String expectedMessage \u003d String.format(AssignCommand.MESSAGE_SUCCESS, Messages.formatTask(taskToAssign),","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" editedPerson.getName());","lastModifiedDate":"2024-03-21"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" new AddressBook(model.getAddressBook()), new TaskList(model.getTaskList()), new UserPrefs());","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" assertCommandSuccess(assignCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":" public void execute_invalidTaskIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(outOfBoundIndex, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, outOfBoundIndex);","lastModifiedDate":"2024-03-17"},{"lineNumber":88,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":89,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":90,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":91,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" * but smaller than size of address book","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommand \u003d new AssignCommand(INDEX_FIRST, outOfBoundIndex);","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" assertCommandFailure(assignCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":108,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" public void equals() {","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignOneToOneCommand \u003d new AssignCommand(INDEX_FIRST, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":111,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignOneToTwoCommand \u003d new AssignCommand(INDEX_FIRST, INDEX_SECOND);","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignTwoToOneCommand \u003d new AssignCommand(INDEX_SECOND, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"chin-herng"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"chin-herng"},"content":" assertEquals(assignOneToOneCommand, assignOneToOneCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":117,"author":{"gitId":"chin-herng"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-17"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":" AssignCommand assignCommandCopy \u003d new AssignCommand(INDEX_FIRST, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"chin-herng"},"content":" assertEquals(assignOneToOneCommand, assignCommandCopy);","lastModifiedDate":"2024-03-17"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":121,"author":{"gitId":"chin-herng"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":122,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(assignOneToOneCommand, null);","lastModifiedDate":"2024-03-17"},{"lineNumber":123,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"chin-herng"},"content":" // different indices -\u003e returns false","lastModifiedDate":"2024-03-17"},{"lineNumber":125,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(assignOneToOneCommand, assignOneToTwoCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":126,"author":{"gitId":"chin-herng"},"content":" assertNotEquals(assignOneToOneCommand, assignTwoToOneCommand);","lastModifiedDate":"2024-03-17"},{"lineNumber":127,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":128,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"chin-herng":126,"nobodyishappy":2}},{"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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08"},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27"},{"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":{"Kaya3842":3,"-":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.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05"},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-21"},{"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":"-"},"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":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" public static final TaskName VALID_TASK_NAME_FIRST \u003d new TaskName(\"Implement Testing 1\");","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" public static final TaskName VALID_TASK_NAME_SECOND \u003d new TaskName(\"Implement Testing 2\");","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" public static final TaskDescription VALID_TASK_DESCRIPTION_FIRST \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Code for testing of test 1\");","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" public static final TaskDescription VALID_TASK_DESCRIPTION_SECOND \u003d","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Code for testing of test 2\");","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" public static final TaskStatus VALID_TASK_STATUS \u003d new TaskStatus();","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" public static final Task VALID_TASK_FIRST \u003d new Task(VALID_TASK_NAME_FIRST,","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" VALID_TASK_DESCRIPTION_FIRST, VALID_TASK_STATUS);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" public static final Task VALID_TASK_SECOND \u003d new Task(VALID_TASK_NAME_SECOND,","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" VALID_TASK_DESCRIPTION_SECOND, VALID_TASK_STATUS);","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"","lastModifiedDate":"2017-07-05"},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05"},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":74,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05"},{"lineNumber":75,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05"},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09"},{"lineNumber":84,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25"},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":88,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15"},{"lineNumber":89,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05"},{"lineNumber":92,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15"},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09"},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25"},{"lineNumber":99,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09"},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25"},{"lineNumber":103,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09"},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":109,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":110,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05"},{"lineNumber":111,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25"},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25"},{"lineNumber":114,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20"},{"lineNumber":124,"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":125,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31"},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20"},{"lineNumber":127,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31"},{"lineNumber":130,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31"},{"lineNumber":131,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20"},{"lineNumber":132,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20"},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"chin-herng":2,"nobodyishappy":17,"-":118}},{"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":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":"Kaya3842"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":"chin-herng"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"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":"Kaya3842"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":"-"},"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":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"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":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":78,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23"},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND);","lastModifiedDate":"2024-03-17"},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":88,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27"},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":101,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27"},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27"},{"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":"2019-02-23"},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":107,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23"},{"lineNumber":108,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23"},{"lineNumber":109,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05"},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05"},{"lineNumber":116,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05"},{"lineNumber":117,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12"},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05"},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05"}],"authorContributionMap":{"Kaya3842":4,"chin-herng":12,"-":105}},{"path":"src/test/java/seedu/address/logic/commands/DeleteTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"public class DeleteTaskCommandTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), model.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" Task expectedTaskToDelete \u003d expectedModel.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" expectedModel.deleteTask(expectedTaskToDelete);","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" Task taskToDelete \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":34,"author":{"gitId":"Yskie"},"content":" String expectedMessage \u003d String.format(DeleteTaskCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"Yskie"},"content":" Messages.formatTask(taskToDelete));","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" assertCommandSuccess(deleteTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-18"},{"lineNumber":38,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":39,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":40,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":41,"author":{"gitId":"Yskie"},"content":" public void execute_invalidTaskIndexUnfilteredList_failure() {","lastModifiedDate":"2024-03-18"},{"lineNumber":42,"author":{"gitId":"Yskie"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-18"},{"lineNumber":43,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":44,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":45,"author":{"gitId":"Yskie"},"content":" assertCommandFailure(deleteTaskCommand, model, DeleteTaskCommand.MESSAGE_INDEX_TOO_LARGE);","lastModifiedDate":"2024-03-18"},{"lineNumber":46,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":47,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":48,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":49,"author":{"gitId":"Yskie"},"content":" public void equals() {","lastModifiedDate":"2024-03-18"},{"lineNumber":50,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand deleteFirstCommand \u003d new DeleteTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand deleteSecondCommand \u003d new DeleteTaskCommand(INDEX_SECOND);","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":53,"author":{"gitId":"Yskie"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":54,"author":{"gitId":"Yskie"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":55,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":56,"author":{"gitId":"Yskie"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-18"},{"lineNumber":57,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand deleteFirstCommandCopy \u003d new DeleteTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"Yskie"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-03-18"},{"lineNumber":59,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":60,"author":{"gitId":"Yskie"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":61,"author":{"gitId":"Yskie"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2024-03-18"},{"lineNumber":62,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":63,"author":{"gitId":"Yskie"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":64,"author":{"gitId":"Yskie"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-03-18"},{"lineNumber":65,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-18"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand deleteTaskCommand \u003d new DeleteTaskCommand(targetIndex);","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"Yskie"},"content":" String expected \u003d DeleteTaskCommand.class.getCanonicalName() + \"{toDelete\u003d\" + targetIndex.getOneBased() + \"}\";","lastModifiedDate":"2024-03-18"},{"lineNumber":75,"author":{"gitId":"Yskie"},"content":" assertEquals(expected, deleteTaskCommand.toString());","lastModifiedDate":"2024-03-18"},{"lineNumber":76,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":77,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"Yskie":74,"nobodyishappy":3}},{"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":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"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":"Kaya3842"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":"chin-herng"},"content":" Person editedPerson \u003d new PersonBuilder().withTasks(model.getFilteredPersonList().get(0).getTasks()).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST, descriptor);","lastModifiedDate":"2024-03-17"},{"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":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-03-13"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":"chin-herng"},"content":" .build();","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" .withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-03-17"},{"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":"Kaya3842"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-13"},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-03-13"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25"},{"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":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST, new EditPersonDescriptor());","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-13"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-03-13"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18"},{"lineNumber":96,"author":{"gitId":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST,","lastModifiedDate":"2024-03-17"},{"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":"Kaya3842"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-03-13"},{"lineNumber":100,"author":{"gitId":"Kaya3842"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-03-13"},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":102,"author":{"gitId":"Kaya3842"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-03-13"},{"lineNumber":103,"author":{"gitId":"Kaya3842"},"content":" new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":"chin-herng"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":112,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05"},{"lineNumber":113,"author":{"gitId":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND, descriptor);","lastModifiedDate":"2024-03-17"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","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":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":120,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","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":"chin-herng"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND.getZeroBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":124,"author":{"gitId":"chin-herng"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST,","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":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25"},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18"},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18"},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15"},{"lineNumber":132,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18"},{"lineNumber":133,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22"},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18"},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18"},{"lineNumber":141,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18"},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18"},{"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":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18"},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18"},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18"},{"lineNumber":150,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18"},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05"},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25"},{"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":"chin-herng"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST, DESC_AMY);","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08"},{"lineNumber":162,"author":{"gitId":"chin-herng"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST, copyDescriptor);","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND, DESC_AMY)));","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST, DESC_BOB)));","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23"},{"lineNumber":185,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23"},{"lineNumber":186,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":187,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23"},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":191,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08"}],"authorContributionMap":{"Kaya3842":16,"chin-herng":22,"-":153}},{"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":"","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 name -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":39,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05"},{"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 phone -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_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 email -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":47,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_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 address -\u003e returns false","lastModifiedDate":"2017-05-05"},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).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":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":59,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":60,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \"}\";","lastModifiedDate":"2024-03-17"},{"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":{"chin-herng":1,"-":64}},{"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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"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":"Kaya3842"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"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":{"Kaya3842":3,"-":89}},{"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":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"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":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-13"},{"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":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27"},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-13"},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12"},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12"}],"authorContributionMap":{"Kaya3842":3,"chin-herng":2,"-":35}},{"path":"src/test/java/seedu/address/logic/commands/ListTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"breezetall"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"breezetall"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"breezetall"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"breezetall"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"breezetall"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"breezetall"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"breezetall"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"breezetall"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"breezetall"},"content":"public class ListTaskCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"breezetall"},"content":" private Model model;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":" private Model expectedModel;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"breezetall"},"content":" @BeforeEach","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"breezetall"},"content":" public void setUp() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"breezetall"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"breezetall"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new TaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"breezetall"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"breezetall"},"content":" assertCommandSuccess(new ListTaskCommand(), model, ListTaskCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"breezetall"},"content":" /* Test for find method */","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"breezetall"},"content":" /*","lastModifiedDate":"2024-03-19"},{"lineNumber":35,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"breezetall"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"breezetall"},"content":" showPersonAtIndex(model, INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"breezetall"},"content":" assertCommandSuccess(new ListCommand(), model, ListCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"breezetall"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"breezetall"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"breezetall":41}},{"path":"src/test/java/seedu/address/logic/commands/MarkTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"public class MarkTaskCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" private Model model \u003d new ModelManager(new AddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" public void execute_validIndexTaskList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" Task taskToMark \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" String expectedMessage \u003d String.format(MarkTaskCommand.MESSAGE_MARK_TASK_SUCCESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" Messages.formatTask(taskToMark));","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" ModelManager expectedModel \u003d new ModelManager(new AddressBook(), model.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" taskToMark.getStatus().setAsDone();","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" assertCommandSuccess(markTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" public void execute_invalidIndexTaskList_throwsCommandException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" assertCommandFailure(markTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand markTaskFirstCommand \u003d new MarkTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand markTaskSecondCommand \u003d new MarkTaskCommand(INDEX_SECOND);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(markTaskFirstCommand.equals(markTaskFirstCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand markTaskFirstCommandCopy \u003d new MarkTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(markTaskFirstCommand.equals(markTaskFirstCommandCopy));","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(markTaskFirstCommand.equals(1));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(markTaskFirstCommand.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(markTaskFirstCommand.equals(markTaskSecondCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand markTaskCommand \u003d new MarkTaskCommand(targetIndex);","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" String expected \u003d MarkTaskCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expected, markTaskCommand.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"nobodyishappy":77}},{"path":"src/test/java/seedu/address/logic/commands/UnmarkTaskCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"public class UnmarkTaskCommandTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" private Model model \u003d new ModelManager(new AddressBook(), getTypicalTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" public void execute_validIndexTaskList_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" Task taskToMark \u003d model.getTaskList().getSerializeTaskList().get(INDEX_FIRST.getZeroBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" String expectedMessage \u003d String.format(UnmarkTaskCommand.MESSAGE_UNMARK_TASK_SUCCESS,","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" Messages.formatTask(taskToMark));","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" ModelManager expectedModel \u003d new ModelManager(new AddressBook(), model.getTaskList(), new UserPrefs());","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" taskToMark.getStatus().setAsUndone();","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" assertCommandSuccess(unmarkTaskCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" public void execute_invalidIndexTaskList_throwsCommandException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getTaskList().getSerializeTaskList().size() + 1);","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(outOfBoundIndex);","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" assertCommandFailure(unmarkTaskCommand, model, Messages.MESSAGE_INVALID_TASK_DISPLAYED_INDEX);","lastModifiedDate":"2024-03-19"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" public void equals() {","lastModifiedDate":"2024-03-19"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand unmarkTaskFirstCommand \u003d new UnmarkTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand unmarkTaskSecondCommand \u003d new UnmarkTaskCommand(INDEX_SECOND);","lastModifiedDate":"2024-03-19"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(unmarkTaskFirstCommand.equals(unmarkTaskFirstCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-03-19"},{"lineNumber":56,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand unmarkTaskFirstCommandCopy \u003d new UnmarkTaskCommand(INDEX_FIRST);","lastModifiedDate":"2024-03-19"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(unmarkTaskFirstCommand.equals(unmarkTaskFirstCommandCopy));","lastModifiedDate":"2024-03-19"},{"lineNumber":58,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(unmarkTaskFirstCommand.equals(1));","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(unmarkTaskFirstCommand.equals(null));","lastModifiedDate":"2024-03-19"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(unmarkTaskFirstCommand.equals(unmarkTaskSecondCommand));","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-03-19"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand unmarkTaskCommand \u003d new UnmarkTaskCommand(targetIndex);","lastModifiedDate":"2024-03-19"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" String expected \u003d UnmarkTaskCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(expected, unmarkTaskCommand.toString());","lastModifiedDate":"2024-03-19"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"nobodyishappy":76}},{"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.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","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.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23"},{"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":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15"},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15"},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15"},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15"},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15"},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":41,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15"},{"lineNumber":42,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTasks().build();","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":" + ADDRESS_DESC_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" public void parse_repeatedValue_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" + ADDRESS_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":58,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14"},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":60,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":62,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":64,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":66,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":68,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":70,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14"},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":72,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14"},{"lineNumber":76,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":77,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":78,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":88,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":92,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14"},{"lineNumber":96,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":98,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":100,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14"},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":102,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":104,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14"},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":106,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":108,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14"},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":110,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":112,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14"},{"lineNumber":114,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15"},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":121,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":123,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":125,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":127,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":133,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":135,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":137,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23"},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23"},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15"},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15"},{"lineNumber":144,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15"},{"lineNumber":145,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15"},{"lineNumber":149,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"chin-herng"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":152,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15"},{"lineNumber":153,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":154,"author":{"gitId":"chin-herng"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":156,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15"},{"lineNumber":157,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-03-17"},{"lineNumber":158,"author":{"gitId":"chin-herng"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-03-17"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15"},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23"},{"lineNumber":162,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23"},{"lineNumber":164,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23"},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23"},{"lineNumber":166,"author":{"gitId":"chin-herng"},"content":" + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-03-17"},{"lineNumber":167,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15"},{"lineNumber":169,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15"}],"authorContributionMap":{"chin-herng":13,"-":156}},{"path":"src/test/java/seedu/address/logic/parser/AddTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"public class AddTaskCommandParserTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" private AddTaskCommandParser parser \u003d new AddTaskCommandParser();","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" public void parse_validInput_success() throws ParseException {","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" String userInput \u003d \" \" + PREFIX_NAME + \"test 1 \" + PREFIX_TASK_DESCRIPTION + \"test 1\";","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().withTaskName(\"test 1\").withTaskDescription(\"test 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" assertParseSuccess(parser, userInput, new AddTaskCommand(task));","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" public void parse_emptyInput_throwsParseException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" String userInput \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" assertThrows(ParseException.class, () -\u003e parser.parse(userInput));","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":24,"nobodyishappy":7}},{"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":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-14"},{"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_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13"},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"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":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"breezetall"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"breezetall"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27"},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"breezetall"},"content":"import seedu.address.logic.commands.ListTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.UnmarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24"},{"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":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.testutil.TaskUtil;","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":46,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07"},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24"},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(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":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" public void parseCommand_addtask() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new Task(new TaskName(\"Implement test\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":" new TaskDescription(\"Test to test the code\"),","lastModifiedDate":"2024-03-21"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" new TaskStatus());;","lastModifiedDate":"2024-03-21"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" AddTaskCommand command \u003d (AddTaskCommand) parser.parseCommand(TaskUtil.getAddTaskCommand(task));","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" assertNotNull(command);","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":67,"author":{"gitId":"Yskie"},"content":" public void parseCommand_deletetask() throws Exception {","lastModifiedDate":"2024-03-18"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" parser.parseCommand(\"addtask n/ test d/ test description\");","lastModifiedDate":"2024-03-21"},{"lineNumber":69,"author":{"gitId":"Yskie"},"content":" DeleteTaskCommand command \u003d (DeleteTaskCommand) parser.parseCommand(TaskUtil.getDeleteTaskCommand(","lastModifiedDate":"2024-03-18"},{"lineNumber":70,"author":{"gitId":"Yskie"},"content":" Index.fromOneBased(1)));","lastModifiedDate":"2024-03-18"},{"lineNumber":71,"author":{"gitId":"Yskie"},"content":" assertEquals(new DeleteTaskCommand(INDEX_FIRST), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":72,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":73,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27"},{"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_delete() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":82,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST), command);","lastModifiedDate":"2024-03-17"},{"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_edit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27"},{"lineNumber":90,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27"},{"lineNumber":91,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" + INDEX_FIRST.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" assertEquals(new EditCommand(INDEX_FIRST, descriptor), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":96,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":97,"author":{"gitId":"nobodyishappy"},"content":" public void parseCommand_assign() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":98,"author":{"gitId":"chin-herng"},"content":" AssignCommand command \u003d (AssignCommand) parser.parseCommand(","lastModifiedDate":"2024-03-17"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" AssignCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased() + \" \"","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"chin-herng"},"content":" + PREFIX_TO + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-17"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" assertEquals(new AssignCommand(INDEX_FIRST, INDEX_FIRST), command);","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":103,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":104,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":105,"author":{"gitId":"nobodyishappy"},"content":" public void parseCommand_markTask() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":106,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand command \u003d (MarkTaskCommand) parser.parseCommand(","lastModifiedDate":"2024-03-19"},{"lineNumber":107,"author":{"gitId":"nobodyishappy"},"content":" MarkTaskCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":108,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(new MarkTaskCommand(INDEX_FIRST), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":109,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":110,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":111,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":112,"author":{"gitId":"nobodyishappy"},"content":" public void parseCommand_unmarkTask() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":113,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand command \u003d (UnmarkTaskCommand) parser.parseCommand(","lastModifiedDate":"2024-03-19"},{"lineNumber":114,"author":{"gitId":"nobodyishappy"},"content":" UnmarkTaskCommand.COMMAND_WORD + \" \" + INDEX_FIRST.getOneBased());","lastModifiedDate":"2024-03-19"},{"lineNumber":115,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(new UnmarkTaskCommand(INDEX_FIRST), command);","lastModifiedDate":"2024-03-19"},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":126,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12"},{"lineNumber":127,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27"},{"lineNumber":128,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27"},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12"},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27"},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":144,"author":{"gitId":"breezetall"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":145,"author":{"gitId":"breezetall"},"content":" public void parseCommand_listTask() throws Exception {","lastModifiedDate":"2024-03-19"},{"lineNumber":146,"author":{"gitId":"breezetall"},"content":" assertTrue(parser.parseCommand(ListTaskCommand.COMMAND_WORD) instanceof ListTaskCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":147,"author":{"gitId":"breezetall"},"content":" assertTrue(parser.parseCommand(ListTaskCommand.COMMAND_WORD + \" 3\") instanceof ListTaskCommand);","lastModifiedDate":"2024-03-19"},{"lineNumber":148,"author":{"gitId":"breezetall"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":149,"author":{"gitId":"breezetall"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":152,"author":{"gitId":"Yskie"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), (","lastModifiedDate":"2024-03-18"},{"lineNumber":153,"author":{"gitId":"Yskie"},"content":" ) -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2024-03-18"},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27"},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27"},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23"},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23"},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27"},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24"}],"authorContributionMap":{"Kaya3842":9,"Yskie":11,"chin-herng":12,"nobodyishappy":23,"-":96,"breezetall":9}},{"path":"src/test/java/seedu/address/logic/parser/AssignCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"chin-herng"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-17"},{"lineNumber":2,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":3,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-17"},{"lineNumber":4,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-03-17"},{"lineNumber":5,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-17"},{"lineNumber":6,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-17"},{"lineNumber":7,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":8,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"chin-herng"},"content":"import seedu.address.logic.commands.AssignCommand;","lastModifiedDate":"2024-03-17"},{"lineNumber":13,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":14,"author":{"gitId":"chin-herng"},"content":"public class AssignCommandParserTest {","lastModifiedDate":"2024-03-17"},{"lineNumber":15,"author":{"gitId":"chin-herng"},"content":" private static final String INVALID_TO \u003d \" \" + PREFIX_TO + \"a\";","lastModifiedDate":"2024-03-17"},{"lineNumber":16,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":17,"author":{"gitId":"chin-herng"},"content":" private static final String TO_ONE \u003d \" \" + PREFIX_TO + \"1\";","lastModifiedDate":"2024-03-17"},{"lineNumber":18,"author":{"gitId":"chin-herng"},"content":" private static final String TO_TWO \u003d \" \" + PREFIX_TO + \"2\";","lastModifiedDate":"2024-03-17"},{"lineNumber":19,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":20,"author":{"gitId":"chin-herng"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2024-03-17"},{"lineNumber":21,"author":{"gitId":"chin-herng"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AssignCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-03-17"},{"lineNumber":22,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":23,"author":{"gitId":"chin-herng"},"content":" private AssignCommandParser parser \u003d new AssignCommandParser();","lastModifiedDate":"2024-03-17"},{"lineNumber":24,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":" public void parse_validArgs_success() {","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":" assertParseSuccess(parser, \"1\" + TO_ONE, new AssignCommand(INDEX_FIRST, INDEX_FIRST));","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":31,"author":{"gitId":"chin-herng"},"content":" public void parse_repeatedTo_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":32,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\" + TO_ONE + TO_TWO,","lastModifiedDate":"2024-03-17"},{"lineNumber":33,"author":{"gitId":"chin-herng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TO));","lastModifiedDate":"2024-03-17"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" // invalid value followed by valid value","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":37,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\" + INVALID_TO + TO_ONE,","lastModifiedDate":"2024-03-17"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TO));","lastModifiedDate":"2024-03-17"},{"lineNumber":39,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":40,"author":{"gitId":"chin-herng"},"content":" // valid value followed by invalid value","lastModifiedDate":"2024-03-17"},{"lineNumber":41,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":42,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\" + TO_ONE + INVALID_TO,","lastModifiedDate":"2024-03-17"},{"lineNumber":43,"author":{"gitId":"chin-herng"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TO));","lastModifiedDate":"2024-03-17"},{"lineNumber":44,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":45,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":46,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":48,"author":{"gitId":"chin-herng"},"content":" // no task index specified","lastModifiedDate":"2024-03-17"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":50,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":51,"author":{"gitId":"chin-herng"},"content":" // no person index specified","lastModifiedDate":"2024-03-17"},{"lineNumber":52,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":53,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":54,"author":{"gitId":"chin-herng"},"content":" // no task index and no person index specified","lastModifiedDate":"2024-03-17"},{"lineNumber":55,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \" \", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":56,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":57,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":58,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":59,"author":{"gitId":"chin-herng"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":60,"author":{"gitId":"chin-herng"},"content":" // negative index","lastModifiedDate":"2024-03-17"},{"lineNumber":61,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"-1\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" // zero index","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"0\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 a\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 i/ a\" + TO_ONE, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":73,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-17"},{"lineNumber":74,"author":{"gitId":"chin-herng"},"content":" public void parse_invalidTo_failure() {","lastModifiedDate":"2024-03-17"},{"lineNumber":75,"author":{"gitId":"chin-herng"},"content":" // negative index","lastModifiedDate":"2024-03-17"},{"lineNumber":76,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 \" + PREFIX_TO + \"-1\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":77,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":78,"author":{"gitId":"chin-herng"},"content":" // zero index","lastModifiedDate":"2024-03-17"},{"lineNumber":79,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 \" + PREFIX_TO + \"0\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":80,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":81,"author":{"gitId":"chin-herng"},"content":" // invalid arguments being parsed as to","lastModifiedDate":"2024-03-17"},{"lineNumber":82,"author":{"gitId":"chin-herng"},"content":" assertParseFailure(parser, \"1 \" + TO_ONE + \" a\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-03-17"},{"lineNumber":83,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":84,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":85,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":86,"author":{"gitId":"chin-herng"},"content":"}","lastModifiedDate":"2024-03-17"}],"authorContributionMap":{"chin-herng":86}},{"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":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","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":"chin-herng"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST));","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":{"chin-herng":2,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/DeleteTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Yskie"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-18"},{"lineNumber":2,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":3,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-18"},{"lineNumber":4,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-18"},{"lineNumber":5,"author":{"gitId":"Yskie"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-18"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":10,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":11,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":12,"author":{"gitId":"Yskie"},"content":"/**","lastModifiedDate":"2024-03-18"},{"lineNumber":13,"author":{"gitId":"Yskie"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2024-03-18"},{"lineNumber":14,"author":{"gitId":"Yskie"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-03-18"},{"lineNumber":15,"author":{"gitId":"Yskie"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2024-03-18"},{"lineNumber":16,"author":{"gitId":"Yskie"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2024-03-18"},{"lineNumber":17,"author":{"gitId":"Yskie"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":19,"author":{"gitId":"Yskie"},"content":"public class DeleteTaskCommandParserTest {","lastModifiedDate":"2024-03-18"},{"lineNumber":20,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":21,"author":{"gitId":"Yskie"},"content":" private DeleteTaskCommandParser parser \u003d new DeleteTaskCommandParser();","lastModifiedDate":"2024-03-18"},{"lineNumber":22,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":23,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" assertParseSuccess(parser, \"1\", new DeleteTaskCommand(INDEX_FIRST));","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":32,"author":{"gitId":"Yskie"},"content":"}","lastModifiedDate":"2024-03-18"}],"authorContributionMap":{"Yskie":32}},{"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.NAME_DESC_AMY;","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.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05"},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14"},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06"},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06"},{"lineNumber":25,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":26,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD;","lastModifiedDate":"2024-03-17"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":29,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14"},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04"},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04"},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","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":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22"},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04"},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04"},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06"},{"lineNumber":87,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22"},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" Index targetIndex \u003d INDEX_SECOND;","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"chin-herng"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY","lastModifiedDate":"2024-03-17"},{"lineNumber":94,"author":{"gitId":"chin-herng"},"content":" + ADDRESS_DESC_AMY + NAME_DESC_AMY;","lastModifiedDate":"2024-03-17"},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":96,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04"},{"lineNumber":97,"author":{"gitId":"chin-herng"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2024-03-17"},{"lineNumber":98,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":105,"author":{"gitId":"chin-herng"},"content":" Index targetIndex \u003d INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":108,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04"},{"lineNumber":109,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":110,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15"},{"lineNumber":117,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04"},{"lineNumber":118,"author":{"gitId":"chin-herng"},"content":" Index targetIndex \u003d INDEX_THIRD;","lastModifiedDate":"2024-03-17"},{"lineNumber":119,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":124,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04"},{"lineNumber":125,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":126,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":127,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","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":" // email","lastModifiedDate":"2017-05-04"},{"lineNumber":131,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":132,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":133,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":136,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04"},{"lineNumber":137,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25"},{"lineNumber":138,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04"},{"lineNumber":139,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04"},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06"},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04"},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14"},{"lineNumber":145,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14"},{"lineNumber":146,"author":{"gitId":"chin-herng"},"content":" // AddCommandParserTest#parse_repeatedValue_failure()","lastModifiedDate":"2024-03-17"},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":148,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14"},{"lineNumber":149,"author":{"gitId":"chin-herng"},"content":" Index targetIndex \u003d INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"lineNumber":150,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","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":" // invalid followed by valid","lastModifiedDate":"2023-07-14"},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14"},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14"},{"lineNumber":159,"author":{"gitId":"chin-herng"},"content":" // multiple valid fields repeated","lastModifiedDate":"2024-03-17"},{"lineNumber":160,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14"},{"lineNumber":161,"author":{"gitId":"chin-herng"},"content":" + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + PHONE_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-03-17"},{"lineNumber":162,"author":{"gitId":"chin-herng"},"content":" + EMAIL_DESC_BOB;","lastModifiedDate":"2024-03-17"},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":165,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":167,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14"},{"lineNumber":168,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14"},{"lineNumber":169,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14"},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04"},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14"},{"lineNumber":172,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14"},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04"},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04"}],"authorContributionMap":{"chin-herng":14,"-":160}},{"path":"src/test/java/seedu/address/logic/parser/MarkTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.MarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" * outside of the MarkTaskCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" * same path through the MarkTaskCommand, and therefore we test only one of them.","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"public class MarkTaskCommandParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" private MarkTaskCommandParser parser \u003d new MarkTaskCommandParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" public void parse_validArgs_returnsMarkTaskCommand() {","lastModifiedDate":"2024-03-19"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" assertParseSuccess(parser, \"1\", new MarkTaskCommand(INDEX_FIRST));","lastModifiedDate":"2024-03-19"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"nobodyishappy":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":"-"},"content":"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":"chin-herng"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" assertEquals(INDEX_FIRST, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" assertEquals(INDEX_FIRST, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2024-03-17"},{"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":{"chin-herng":3,"-":193}},{"path":"src/test/java/seedu/address/logic/parser/UnmarkTaskCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-03-19"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-03-19"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-03-19"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-03-19"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST;","lastModifiedDate":"2024-03-19"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-19"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.logic.commands.UnmarkTaskCommand;","lastModifiedDate":"2024-03-19"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"public class UnmarkTaskCommandParserTest {","lastModifiedDate":"2024-03-19"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" private UnmarkTaskCommandParser parser \u003d new UnmarkTaskCommandParser();","lastModifiedDate":"2024-03-19"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" public void parse_validArgs_returnsUnmarkTaskCommand() {","lastModifiedDate":"2024-03-19"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" assertParseSuccess(parser, \"1\", new UnmarkTaskCommand(INDEX_FIRST));","lastModifiedDate":"2024-03-19"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnmarkTaskCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-03-19"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-19"}],"authorContributionMap":{"nobodyishappy":23}},{"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":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_FIRST;","lastModifiedDate":"2024-03-21"},{"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":"nobodyishappy"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST)","lastModifiedDate":"2024-03-21"},{"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":"nobodyishappy"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST)","lastModifiedDate":"2024-03-21"},{"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":{"nobodyishappy":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":"Kaya3842"},"content":"import static seedu.address.testutil.TypicalTasks.TASK_1;","lastModifiedDate":"2024-03-14"},{"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":"Kaya3842"},"content":"import seedu.address.testutil.TypicalTasks;","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" private TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27"},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06"},{"lineNumber":42,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27"},{"lineNumber":43,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":44,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27"},{"lineNumber":45,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06"},{"lineNumber":49,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06"},{"lineNumber":50,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06"},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06"},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27"},{"lineNumber":61,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27"},{"lineNumber":62,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.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":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27"},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27"},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27"},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27"},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27"},{"lineNumber":73,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27"},{"lineNumber":74,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.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":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setTaskListFilePath(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"Kaya3842"},"content":" public void setTaskListFilePath_validPath_setTaskListFilePath() {","lastModifiedDate":"2024-03-14"},{"lineNumber":85,"author":{"gitId":"Kaya3842"},"content":" Path path \u003d Paths.get(\"task/list/file/path\");","lastModifiedDate":"2024-03-14"},{"lineNumber":86,"author":{"gitId":"Kaya3842"},"content":" modelManager.setTaskListFilePath(path);","lastModifiedDate":"2024-03-14"},{"lineNumber":87,"author":{"gitId":"Kaya3842"},"content":" assertEquals(path, modelManager.getTaskListFilePath());","lastModifiedDate":"2024-03-14"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":89,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06"},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06"},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06"},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07"},{"lineNumber":102,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06"},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06"},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06"},{"lineNumber":106,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":107,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_nullTask_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":108,"author":{"gitId":"Kaya3842"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasTask(null));","lastModifiedDate":"2024-03-14"},{"lineNumber":109,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":110,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":111,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":112,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_taskNotInTaskList_returnsFalse() {","lastModifiedDate":"2024-03-14"},{"lineNumber":113,"author":{"gitId":"Kaya3842"},"content":" assertFalse(modelManager.hasTask(TASK_1));","lastModifiedDate":"2024-03-14"},{"lineNumber":114,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":115,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":116,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":117,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_taskInTaskList_returnsTrue() {","lastModifiedDate":"2024-03-14"},{"lineNumber":118,"author":{"gitId":"Kaya3842"},"content":" modelManager.addTask(TASK_1);","lastModifiedDate":"2024-03-14"},{"lineNumber":119,"author":{"gitId":"Kaya3842"},"content":" assertTrue(modelManager.hasTask(TASK_1));","lastModifiedDate":"2024-03-14"},{"lineNumber":120,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":121,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01"},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31"},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15"},{"lineNumber":129,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19"},{"lineNumber":130,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31"},{"lineNumber":131,"author":{"gitId":"Kaya3842"},"content":" TaskList taskList \u003d TypicalTasks.getTypicalTaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":132,"author":{"gitId":"Kaya3842"},"content":" TaskList differentTaskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":133,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":135,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":136,"author":{"gitId":"Kaya3842"},"content":" modelManager \u003d new ModelManager(addressBook, taskList, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":137,"author":{"gitId":"Kaya3842"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, taskList, userPrefs);","lastModifiedDate":"2024-03-13"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31"},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":140,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31"},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31"},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":143,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":146,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31"},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":149,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":150,"author":{"gitId":"Kaya3842"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, taskList, userPrefs)));","lastModifiedDate":"2024-03-13"},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":152,"author":{"gitId":"breezetall"},"content":" // different taskList -\u003e returns false","lastModifiedDate":"2024-03-19"},{"lineNumber":153,"author":{"gitId":"breezetall"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentTaskList, userPrefs)));","lastModifiedDate":"2024-03-19"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":155,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31"},{"lineNumber":156,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19"},{"lineNumber":157,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12"},{"lineNumber":158,"author":{"gitId":"Kaya3842"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, taskList, userPrefs)));","lastModifiedDate":"2024-03-13"},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":160,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05"},{"lineNumber":161,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05"},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31"},{"lineNumber":163,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27"},{"lineNumber":164,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31"},{"lineNumber":165,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09"},{"lineNumber":166,"author":{"gitId":"Kaya3842"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, taskList, differentUserPrefs)));","lastModifiedDate":"2024-03-13"},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31"},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31"}],"authorContributionMap":{"Kaya3842":38,"-":128,"breezetall":2}},{"path":"src/test/java/seedu/address/model/TaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"public class TaskListTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":" private TaskList taskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" private Task task1;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" private Task task2;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" @BeforeEach","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" public void setUp() {","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" task1 \u003d new TaskBuilder().withTaskName(\"Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" task2 \u003d new TaskBuilder().withTaskName(\"Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" public void addTask_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task1);","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" assertTrue(taskList.hasTask(task1));","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task1);","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" assertTrue(taskList.hasTask(task1));","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" public void hasTask_failure() {","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":" assertFalse(taskList.hasTask(task1));","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" public void getSerializeTaskList_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task1);","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(task2);","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" assertEquals(2, taskList.getSerializeTaskList().size());","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":46,"nobodyishappy":3}},{"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":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_FIRST;","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":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-18"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"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":"chin-herng"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTasks().remove(0));","lastModifiedDate":"2024-03-17"},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"chin-herng"},"content":" @Test","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"chin-herng"},"content":" public void deleteTask() {","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" Person person \u003d new PersonBuilder().withTasks(task).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(new PersonBuilder().build(), person.deleteTask(task));","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":36,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":37,"author":{"gitId":"Yskie"},"content":" public void hasTask() {","lastModifiedDate":"2024-03-19"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" Person person \u003d new PersonBuilder().withTasks(task).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(person.hasTask(task));","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19"},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":48,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":51,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18"},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" .withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18"},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":57,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":60,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).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":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18"},{"lineNumber":65,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18"},{"lineNumber":66,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18"},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18"},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19"},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" System.out.println(ALICE.equals(5));","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":74,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":75,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":78,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19"},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19"},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":81,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19"},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19"},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19"},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19"},{"lineNumber":90,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":91,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19"},{"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 phone -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":95,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_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 email -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":99,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_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-19"},{"lineNumber":102,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19"},{"lineNumber":103,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19"},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18"},{"lineNumber":106,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18"},{"lineNumber":107,"author":{"gitId":"nobodyishappy"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTasks(VALID_TASK_FIRST).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18"},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19"},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23"},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23"},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23"},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23"},{"lineNumber":114,"author":{"gitId":"chin-herng"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-03-17"},{"lineNumber":115,"author":{"gitId":"chin-herng"},"content":" + \", tasks\u003d\" + ALICE.getTasks() + \"}\";","lastModifiedDate":"2024-03-17"},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23"},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23"},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"Yskie":2,"chin-herng":8,"nobodyishappy":12,"-":96}},{"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":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_FIRST;","lastModifiedDate":"2024-03-21"},{"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":"Yskie"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-19"},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01"},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":40,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08"},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08"},{"lineNumber":46,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST)","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08"},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":59,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":78,"author":{"gitId":"Yskie"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":79,"author":{"gitId":"Yskie"},"content":" public void deletes_assignedTask_success() {","lastModifiedDate":"2024-03-19"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" Task test \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":" ALICE.addTask(test);","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"Yskie"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2024-03-19"},{"lineNumber":83,"author":{"gitId":"nobodyishappy"},"content":" uniquePersonList.deleteAssignedTask(test);","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(ALICE.hasTask(test));","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":86,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":89,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":90,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","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(ALICE);","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_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":98,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":99,"author":{"gitId":"nobodyishappy"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST)","lastModifiedDate":"2024-03-21"},{"lineNumber":100,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08"},{"lineNumber":101,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":102,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":103,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08"},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08"},{"lineNumber":109,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":110,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":111,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":112,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"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 setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":118,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":119,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","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_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23"},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23"},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08"},{"lineNumber":135,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":136,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":137,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23"},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":148,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":149,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":151,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23"},{"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_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08"},{"lineNumber":162,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":163,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":164,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08"},{"lineNumber":165,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08"},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08"},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08"},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08"},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08"},{"lineNumber":172,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08"},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23"},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08"},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08"},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01"},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05"},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23"},{"lineNumber":179,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23"},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01"},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24"},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24"},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24"},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24"},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24"},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01"}],"authorContributionMap":{"Yskie":6,"nobodyishappy":8,"-":172}},{"path":"src/test/java/seedu/address/model/task/TaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"public class TaskTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" public void constructor_validInput_success() {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().withTaskName(\"Test\").withTaskDescription(\"Test\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(\"Test\", task.getName().taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(\"Test\", task.getDescription().taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(task.getStatus().getTaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" public void equals_sameObject_true() {","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" assertTrue(task.equals(task));","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" public void equals_differentObjectSameName_true() {","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(task1.equals(task2));","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" public void equals_differentObjectDifferentName_false() {","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().withTaskName(\"Test Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().withTaskName(\"Test Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(task1.equals(task2));","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" public void equals_differentObjectSameDescription_true() {","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" assertTrue(task1.equals(task2));","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" public void equals_differentObjectDifferentDescription_false() {","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().withTaskDescription(\"Test Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().withTaskDescription(\"Test Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" assertFalse(task1.equals(task2));","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" public void equals_differentObjectDifferentType_false() {","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" assertFalse(task.equals(new Object()));","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":61,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":62,"author":{"gitId":"nobodyishappy"},"content":" public void setAsDone_checkMarkStatus_true() {","lastModifiedDate":"2024-03-19"},{"lineNumber":63,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":64,"author":{"gitId":"nobodyishappy"},"content":" task.getStatus().setAsDone();","lastModifiedDate":"2024-03-21"},{"lineNumber":65,"author":{"gitId":"nobodyishappy"},"content":" assertTrue(task.getStatus().getTaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":66,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":67,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-19"},{"lineNumber":68,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-19"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" public void setAsUndone_checkUnmarkStatus_false() {","lastModifiedDate":"2024-03-19"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" Task task \u003d new TaskBuilder().build();","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" task.getStatus().setAsUndone();","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"nobodyishappy"},"content":" assertFalse(task.getStatus().getTaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":73,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-19"},{"lineNumber":74,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":75,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":76,"author":{"gitId":"nobodyishappy"},"content":" public void compare_differentName() {","lastModifiedDate":"2024-03-21"},{"lineNumber":77,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().withTaskName(\"Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":78,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().withTaskName(\"Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":79,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(-1, task1.compare(task2));","lastModifiedDate":"2024-03-21"},{"lineNumber":80,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":81,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":82,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":83,"author":{"gitId":"nobodyishappy"},"content":" public void compare_differentDescription() {","lastModifiedDate":"2024-03-21"},{"lineNumber":84,"author":{"gitId":"nobodyishappy"},"content":" Task task1 \u003d new TaskBuilder().withTaskDescription(\"Task 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":85,"author":{"gitId":"nobodyishappy"},"content":" Task task2 \u003d new TaskBuilder().withTaskDescription(\"Task 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":86,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(-1, task1.compare(task2));","lastModifiedDate":"2024-03-21"},{"lineNumber":87,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":88,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":34,"nobodyishappy":54}},{"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":"nobodyishappy"},"content":" private static final String INVALID_TASK_NAME \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" private static final String INVALID_TASK_DESCRIPTION \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" private static final String TASK_STATUS \u003d \"Not Done\";","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-03-21"},{"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":"chin-herng"},"content":" private static final List\u003cJsonAdaptedTask\u003e VALID_TASKS \u003d BENSON.getTasks().stream()","lastModifiedDate":"2024-03-17"},{"lineNumber":35,"author":{"gitId":"chin-herng"},"content":" .map(JsonAdaptedTask::new)","lastModifiedDate":"2024-03-17"},{"lineNumber":36,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13"},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13"},{"lineNumber":40,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13"},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","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 toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":47,"author":{"gitId":"chin-herng"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":91,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":92,"author":{"gitId":"chin-herng"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":93,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13"},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14"},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13"},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13"},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13"},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13"},{"lineNumber":99,"author":{"gitId":"chin-herng"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.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":"chin-herng"},"content":" public void toModelType_invalidTasks_throwsIllegalValueException() {","lastModifiedDate":"2024-03-17"},{"lineNumber":106,"author":{"gitId":"chin-herng"},"content":" List\u003cJsonAdaptedTask\u003e invalidTasks \u003d new ArrayList\u003c\u003e(VALID_TASKS);","lastModifiedDate":"2024-03-17"},{"lineNumber":107,"author":{"gitId":"nobodyishappy"},"content":" invalidTasks.add(new JsonAdaptedTask(INVALID_TASK_NAME, INVALID_TASK_DESCRIPTION, TASK_STATUS));","lastModifiedDate":"2024-03-21"},{"lineNumber":108,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13"},{"lineNumber":109,"author":{"gitId":"chin-herng"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, 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":"}","lastModifiedDate":"2018-08-13"}],"authorContributionMap":{"chin-herng":13,"nobodyishappy":4,"-":96}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedTaskTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"public class JsonAdaptedTaskTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" private static final String VALID_NAME \u003d \"Valid Task Name\";","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" private static final String EMPTY_NAME \u003d \"\";","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" private static final String VALID_DESCRIPTION \u003d \"Valid Task Description\";","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" private static final String EMPTY_DESCRIPTION \u003d \"\";","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":" private static final String STATUS \u003d \"Not Done\";","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" private static final Task VALID_TASK \u003d new TaskBuilder().withTaskName(VALID_NAME)","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" .withTaskDescription(VALID_DESCRIPTION).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_validTask_success() throws IllegalValueException {","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d new JsonAdaptedTask(VALID_NAME, VALID_DESCRIPTION, STATUS);","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" Task modelTask \u003d jsonAdaptedTask.toModelType();","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":" assertEquals(VALID_TASK, modelTask);","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_emptyName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d new JsonAdaptedTask(EMPTY_NAME, VALID_DESCRIPTION, STATUS);","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_emptyDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d new JsonAdaptedTask(VALID_NAME, EMPTY_DESCRIPTION, STATUS);","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d new JsonAdaptedTask(null, VALID_DESCRIPTION, STATUS);","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_nullDescription_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d new JsonAdaptedTask(VALID_NAME, null, STATUS);","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" @Test","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":" public void toModelType_nullStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-03-21"},{"lineNumber":55,"author":{"gitId":"nobodyishappy"},"content":" JsonAdaptedTask jsonAdaptedTask \u003d new JsonAdaptedTask(VALID_NAME, VALID_DESCRIPTION, null);","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" assertThrows(IllegalValueException.class, jsonAdaptedTask::toModelType);","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":23,"nobodyishappy":35}},{"path":"src/test/java/seedu/address/storage/JsonSerializableTaskListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"public class JsonSerializableTaskListTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":" private static final Task TASK_1 \u003d new TaskBuilder().withTaskName(\"Test 1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" private static final Task TASK_2 \u003d new TaskBuilder().withTaskName(\"Test 2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" public void toModelType_validTaskList_success() throws IllegalValueException {","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_1);","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_2);","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" JsonSerializableTaskList jsonSerializableTaskList \u003d new JsonSerializableTaskList(taskList);","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" TaskList modelTaskList \u003d jsonSerializableTaskList.toModelType();","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" assertEquals(taskList.getSerializeTaskList(), modelTaskList.getSerializeTaskList());","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" public void toModelType_duplicateTasks_throwsIllegalValueException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_1);","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" taskList.addTask(TASK_1); // Duplicate task","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" JsonSerializableTaskList jsonSerializableTaskList \u003d new JsonSerializableTaskList(taskList);","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" assertThrows(IllegalValueException.class, jsonSerializableTaskList::toModelType);","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":36,"nobodyishappy":3}},{"path":"src/test/java/seedu/address/storage/JsonTaskListStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import java.io.IOException;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"import java.util.Optional;","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.testutil.Assert;","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.testutil.TaskBuilder;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"public class JsonTaskListStorageTest {","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" private static TaskList taskList \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonTaskListStorageTest\");","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" @TempDir","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" public Path testFolder;","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" public void readTaskList_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":" assertFalse(readTaskList(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-03-14"},{"lineNumber":30,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList_nullTaskList_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":33,"author":{"gitId":"Kaya3842"},"content":" assertThrows(NullPointerException.class, () -\u003e saveTaskList(null, \"SomeFile.json\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":34,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":35,"author":{"gitId":"Kaya3842"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-03-14"},{"lineNumber":36,"author":{"gitId":"Kaya3842"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2024-03-14"},{"lineNumber":37,"author":{"gitId":"Kaya3842"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2024-03-14"},{"lineNumber":38,"author":{"gitId":"Kaya3842"},"content":" : null;","lastModifiedDate":"2024-03-14"},{"lineNumber":39,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":40,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":41,"author":{"gitId":"Kaya3842"},"content":" private Optional\u003cTaskList\u003e readTaskList(String filePath) throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":42,"author":{"gitId":"Kaya3842"},"content":" return new JsonTaskListStorage(Paths.get(filePath)).readTaskList(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-14"},{"lineNumber":43,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":44,"author":{"gitId":"Kaya3842"},"content":" private void saveTaskList(TaskList taskList, String filePath) throws IOException {","lastModifiedDate":"2024-03-14"},{"lineNumber":45,"author":{"gitId":"Kaya3842"},"content":" try {","lastModifiedDate":"2024-03-14"},{"lineNumber":46,"author":{"gitId":"Kaya3842"},"content":" new JsonTaskListStorage(Paths.get(filePath)).saveTaskList(taskList, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-03-14"},{"lineNumber":47,"author":{"gitId":"Kaya3842"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-03-14"},{"lineNumber":48,"author":{"gitId":"Kaya3842"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2024-03-14"},{"lineNumber":49,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":50,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":51,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":52,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":53,"author":{"gitId":"Kaya3842"},"content":" public void readAndSaveTaskList_allInOrder_success() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":54,"author":{"gitId":"Kaya3842"},"content":" Path filePath \u003d testFolder.resolve(\"TempTaskList.json\");","lastModifiedDate":"2024-03-14"},{"lineNumber":55,"author":{"gitId":"Kaya3842"},"content":" TaskList sample \u003d getTypicalTaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":56,"author":{"gitId":"Kaya3842"},"content":" JsonTaskListStorage jsonTaskListStorage \u003d new JsonTaskListStorage(filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":57,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":58,"author":{"gitId":"Kaya3842"},"content":" // Save in new file and read back","lastModifiedDate":"2024-03-14"},{"lineNumber":59,"author":{"gitId":"Kaya3842"},"content":" jsonTaskListStorage.saveTaskList(sample, filePath);","lastModifiedDate":"2024-03-14"},{"lineNumber":60,"author":{"gitId":"Kaya3842"},"content":" TaskList readBack \u003d jsonTaskListStorage.readTaskList(filePath).get();","lastModifiedDate":"2024-03-14"},{"lineNumber":61,"author":{"gitId":"Kaya3842"},"content":" assertNotNull(readBack);","lastModifiedDate":"2024-03-14"},{"lineNumber":62,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":63,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":64,"author":{"gitId":"Kaya3842"},"content":" public void saveTaskList_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-03-14"},{"lineNumber":65,"author":{"gitId":"Kaya3842"},"content":" Assert.assertThrows(NullPointerException.class, () -\u003e saveTaskList(new TaskList(), null));","lastModifiedDate":"2024-03-14"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" private static TaskList getTypicalTaskList() {","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"nobodyishappy"},"content":" taskList.addTask(new TaskBuilder().withTaskName(\"Test 1\").build());","lastModifiedDate":"2024-03-21"},{"lineNumber":70,"author":{"gitId":"nobodyishappy"},"content":" taskList.addTask(new TaskBuilder().withTaskName(\"Test 2\").build());","lastModifiedDate":"2024-03-21"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" taskList.addTask(new TaskBuilder().withTaskName(\"Test 3\").build());","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" return taskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":75,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"},{"lineNumber":76,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":72,"nobodyishappy":4}},{"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":"Kaya3842"},"content":"import static seedu.address.testutil.TypicalTasks.getTypicalTaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19"},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21"},{"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":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24"},{"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":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27"},{"lineNumber":30,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":" JsonTaskListStorage taskListStorage \u003d new JsonTaskListStorage(getTempFilePath(\"samples\"));","lastModifiedDate":"2024-03-14"},{"lineNumber":32,"author":{"gitId":"Kaya3842"},"content":" storageManager \u003d new StorageManager(addressBookStorage, taskListStorage, userPrefsStorage);","lastModifiedDate":"2024-03-13"},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21"},{"lineNumber":36,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16"},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16"},{"lineNumber":41,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28"},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28"},{"lineNumber":43,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":44,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01"},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28"},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24"},{"lineNumber":47,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27"},{"lineNumber":48,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":49,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24"},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08"},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24"},{"lineNumber":55,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16"},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16"},{"lineNumber":57,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":58,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27"},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16"},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19"},{"lineNumber":61,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28"},{"lineNumber":62,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28"},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24"},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08"},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08"},{"lineNumber":66,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":67,"author":{"gitId":"Kaya3842"},"content":" public void taskListSaveTest() throws Exception {","lastModifiedDate":"2024-03-14"},{"lineNumber":68,"author":{"gitId":"Kaya3842"},"content":" TaskList testList \u003d getTypicalTaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":69,"author":{"gitId":"Kaya3842"},"content":" Path testPath \u003d getTempFilePath(\"test\");","lastModifiedDate":"2024-03-14"},{"lineNumber":70,"author":{"gitId":"Kaya3842"},"content":" storageManager.saveTaskList(testList, testPath);","lastModifiedDate":"2024-03-14"},{"lineNumber":71,"author":{"gitId":"Kaya3842"},"content":" assertNotNull(testList);","lastModifiedDate":"2024-03-14"},{"lineNumber":72,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":73,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01"},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01"},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01"},{"lineNumber":79,"author":{"gitId":"Kaya3842"},"content":" @Test","lastModifiedDate":"2024-03-14"},{"lineNumber":80,"author":{"gitId":"Kaya3842"},"content":" public void getTaskListFilePath() {","lastModifiedDate":"2024-03-14"},{"lineNumber":81,"author":{"gitId":"Kaya3842"},"content":" assertNotNull(storageManager.getTaskListFilePath());","lastModifiedDate":"2024-03-14"},{"lineNumber":82,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":83,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08"}],"authorContributionMap":{"Kaya3842":17,"-":67}},{"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":"chin-herng"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20"},{"lineNumber":28,"author":{"gitId":"chin-herng"},"content":" private Set\u003cTask\u003e tasks;","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20"},{"lineNumber":38,"author":{"gitId":"chin-herng"},"content":" tasks \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-03-17"},{"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":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20"},{"lineNumber":49,"author":{"gitId":"chin-herng"},"content":" tasks \u003d new HashSet\u003c\u003e(personToCopy.getTasks());","lastModifiedDate":"2024-03-17"},{"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":"chin-herng"},"content":" * Sets the {@code Set\u003cTask\u003e} of the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":63,"author":{"gitId":"chin-herng"},"content":" public PersonBuilder withTasks(Set\u003cTask\u003e tasks) {","lastModifiedDate":"2024-03-17"},{"lineNumber":64,"author":{"gitId":"chin-herng"},"content":" this.tasks \u003d tasks;","lastModifiedDate":"2024-03-17"},{"lineNumber":65,"author":{"gitId":"chin-herng"},"content":" return this;","lastModifiedDate":"2024-03-17"},{"lineNumber":66,"author":{"gitId":"chin-herng"},"content":" }","lastModifiedDate":"2024-03-17"},{"lineNumber":67,"author":{"gitId":"chin-herng"},"content":"","lastModifiedDate":"2024-03-17"},{"lineNumber":68,"author":{"gitId":"chin-herng"},"content":" /**","lastModifiedDate":"2024-03-17"},{"lineNumber":69,"author":{"gitId":"chin-herng"},"content":" * Parses the {@code tasks} into a {@code Set\u003cTask\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-03-17"},{"lineNumber":70,"author":{"gitId":"chin-herng"},"content":" */","lastModifiedDate":"2024-03-17"},{"lineNumber":71,"author":{"gitId":"nobodyishappy"},"content":" public PersonBuilder withTasks(Task ... tasks) {","lastModifiedDate":"2024-03-21"},{"lineNumber":72,"author":{"gitId":"chin-herng"},"content":" this.tasks \u003d SampleDataUtil.getTaskSet(tasks);","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 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":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05"},{"lineNumber":101,"author":{"gitId":"chin-herng"},"content":" return new Person(name, phone, email, address, tasks);","lastModifiedDate":"2024-03-17"},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03"},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03"},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03"}],"authorContributionMap":{"chin-herng":15,"nobodyishappy":1,"-":88}},{"path":"src/test/java/seedu/address/testutil/TaskBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"nobodyishappy"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-21"},{"lineNumber":2,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"nobodyishappy"},"content":"import seedu.address.model.task.TaskStatus;","lastModifiedDate":"2024-03-21"},{"lineNumber":7,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":8,"author":{"gitId":"nobodyishappy"},"content":"/**","lastModifiedDate":"2024-03-21"},{"lineNumber":9,"author":{"gitId":"nobodyishappy"},"content":" * A utility class to help with building Task objects.","lastModifiedDate":"2024-03-21"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":"public class TaskBuilder {","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"nobodyishappy"},"content":" public static final String DEFAULT_TASK_NAME \u003d \"Implement Test\";","lastModifiedDate":"2024-03-21"},{"lineNumber":14,"author":{"gitId":"nobodyishappy"},"content":" public static final String DEFAULT_TASK_DESCRIPTION \u003d \"Test to test the code\";","lastModifiedDate":"2024-03-21"},{"lineNumber":15,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":16,"author":{"gitId":"nobodyishappy"},"content":" private TaskName taskName;","lastModifiedDate":"2024-03-21"},{"lineNumber":17,"author":{"gitId":"nobodyishappy"},"content":" private TaskDescription taskDescription;","lastModifiedDate":"2024-03-21"},{"lineNumber":18,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":19,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" * Creates a {@code TaskBuilder} with the default details.","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" public TaskBuilder() {","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"nobodyishappy"},"content":" taskName \u003d new TaskName(DEFAULT_TASK_NAME);","lastModifiedDate":"2024-03-21"},{"lineNumber":24,"author":{"gitId":"nobodyishappy"},"content":" taskDescription \u003d new TaskDescription(DEFAULT_TASK_DESCRIPTION);","lastModifiedDate":"2024-03-21"},{"lineNumber":25,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":26,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":27,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":28,"author":{"gitId":"nobodyishappy"},"content":" * Initializes the TaskBuilder with the data of {@code taskToCopy}.","lastModifiedDate":"2024-03-21"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"nobodyishappy"},"content":" public TaskBuilder(Task taskToCopy) {","lastModifiedDate":"2024-03-21"},{"lineNumber":31,"author":{"gitId":"nobodyishappy"},"content":" taskName \u003d taskToCopy.getName();","lastModifiedDate":"2024-03-21"},{"lineNumber":32,"author":{"gitId":"nobodyishappy"},"content":" taskDescription \u003d taskToCopy.getDescription();","lastModifiedDate":"2024-03-21"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":35,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":36,"author":{"gitId":"nobodyishappy"},"content":" * Sets the {@code TaskName} of the {@code Task} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":37,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":38,"author":{"gitId":"nobodyishappy"},"content":" public TaskBuilder withTaskName(String taskName) {","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" this.taskName \u003d new TaskName(taskName);","lastModifiedDate":"2024-03-21"},{"lineNumber":40,"author":{"gitId":"nobodyishappy"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":41,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":42,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":43,"author":{"gitId":"nobodyishappy"},"content":" /**","lastModifiedDate":"2024-03-21"},{"lineNumber":44,"author":{"gitId":"nobodyishappy"},"content":" * Sets the {@code TaskDescription} of the {@code Task} that we are building.","lastModifiedDate":"2024-03-21"},{"lineNumber":45,"author":{"gitId":"nobodyishappy"},"content":" */","lastModifiedDate":"2024-03-21"},{"lineNumber":46,"author":{"gitId":"nobodyishappy"},"content":" public TaskBuilder withTaskDescription(String taskDescription) {","lastModifiedDate":"2024-03-21"},{"lineNumber":47,"author":{"gitId":"nobodyishappy"},"content":" this.taskDescription \u003d new TaskDescription(taskDescription);","lastModifiedDate":"2024-03-21"},{"lineNumber":48,"author":{"gitId":"nobodyishappy"},"content":" return this;","lastModifiedDate":"2024-03-21"},{"lineNumber":49,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":50,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":51,"author":{"gitId":"nobodyishappy"},"content":" public Task build() {","lastModifiedDate":"2024-03-21"},{"lineNumber":52,"author":{"gitId":"nobodyishappy"},"content":" return new Task(taskName, taskDescription, new TaskStatus());","lastModifiedDate":"2024-03-21"},{"lineNumber":53,"author":{"gitId":"nobodyishappy"},"content":" }","lastModifiedDate":"2024-03-21"},{"lineNumber":54,"author":{"gitId":"nobodyishappy"},"content":"}","lastModifiedDate":"2024-03-21"}],"authorContributionMap":{"nobodyishappy":54}},{"path":"src/test/java/seedu/address/testutil/TaskUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-03-21"},{"lineNumber":4,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TASK_DESCRIPTION;","lastModifiedDate":"2024-03-21"},{"lineNumber":5,"author":{"gitId":"nobodyishappy"},"content":"","lastModifiedDate":"2024-03-21"},{"lineNumber":6,"author":{"gitId":"Yskie"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-03-18"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.logic.commands.AddTaskCommand;","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Yskie"},"content":"import seedu.address.logic.commands.DeleteTaskCommand;","lastModifiedDate":"2024-03-18"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":11,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":12,"author":{"gitId":"Kaya3842"},"content":" * A utility class for Task.","lastModifiedDate":"2024-03-14"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":"public class TaskUtil {","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":" public static String getAddTaskCommand(Task task) {","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"nobodyishappy"},"content":" return AddTaskCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-03-21"},{"lineNumber":21,"author":{"gitId":"nobodyishappy"},"content":" + PREFIX_NAME + task.getName() + \" \"","lastModifiedDate":"2024-03-21"},{"lineNumber":22,"author":{"gitId":"nobodyishappy"},"content":" + PREFIX_TASK_DESCRIPTION + task.getDescription();","lastModifiedDate":"2024-03-21"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Yskie"},"content":"","lastModifiedDate":"2024-03-18"},{"lineNumber":25,"author":{"gitId":"Yskie"},"content":" /**","lastModifiedDate":"2024-03-18"},{"lineNumber":26,"author":{"gitId":"Yskie"},"content":" * Returns an delete command string for adding the {@code person}.","lastModifiedDate":"2024-03-18"},{"lineNumber":27,"author":{"gitId":"Yskie"},"content":" */","lastModifiedDate":"2024-03-18"},{"lineNumber":28,"author":{"gitId":"Yskie"},"content":" public static String getDeleteTaskCommand(Index index) {","lastModifiedDate":"2024-03-18"},{"lineNumber":29,"author":{"gitId":"Yskie"},"content":" return DeleteTaskCommand.COMMAND_WORD + \" \" + index.getOneBased();","lastModifiedDate":"2024-03-18"},{"lineNumber":30,"author":{"gitId":"Yskie"},"content":" }","lastModifiedDate":"2024-03-18"},{"lineNumber":31,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":16,"Yskie":9,"nobodyishappy":6}},{"path":"src/test/java/seedu/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-08-05"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-08-05"},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05"},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05"},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05"},{"lineNumber":9,"author":{"gitId":"chin-herng"},"content":" public static final Index INDEX_FIRST \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-03-17"},{"lineNumber":10,"author":{"gitId":"chin-herng"},"content":" public static final Index INDEX_SECOND \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-03-17"},{"lineNumber":11,"author":{"gitId":"chin-herng"},"content":" public static final Index INDEX_THIRD \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-03-17"},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05"}],"authorContributionMap":{"chin-herng":3,"-":9}},{"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":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_FIRST;","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TASK_SECOND;","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22"},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07"},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07"},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07"},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07"},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21"},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13"},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05"},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13"},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05"},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10"},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05"},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19"},{"lineNumber":29,"author":{"gitId":"nobodyishappy"},"content":" .withTasks(new TaskBuilder().withTaskName(\"Testing\").build()).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10"},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21"},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05"},{"lineNumber":33,"author":{"gitId":"nobodyishappy"},"content":" .withTasks(new TaskBuilder().withTaskName(\"Testing 1\").build(),","lastModifiedDate":"2024-03-21"},{"lineNumber":34,"author":{"gitId":"nobodyishappy"},"content":" new TaskBuilder().withTaskName(\"Testing 2\").build()).build();","lastModifiedDate":"2024-03-21"},{"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":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05"},{"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":"nobodyishappy"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-03-21"},{"lineNumber":39,"author":{"gitId":"nobodyishappy"},"content":" .withTasks(new TaskBuilder().withTaskName(\"Testing\").build()).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":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05"},{"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":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05"},{"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":"nobodyishappy"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTasks(VALID_TASK_SECOND).build();","lastModifiedDate":"2024-03-21"},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10"},{"lineNumber":57,"author":{"gitId":"nobodyishappy"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTasks(VALID_TASK_FIRST, VALID_TASK_SECOND)","lastModifiedDate":"2024-03-21"},{"lineNumber":58,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21"},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21"},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21"},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13"},{"lineNumber":62,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20"},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20"},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26"},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05"},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26"},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05"},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05"},{"lineNumber":69,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10"},{"lineNumber":70,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05"},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13"},{"lineNumber":72,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24"},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24"},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04"},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10"},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07"},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04"},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13"}],"authorContributionMap":{"nobodyishappy":9,"-":69}},{"path":"src/test/java/seedu/address/testutil/TypicalTasks.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Kaya3842"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-03-14"},{"lineNumber":2,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":3,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.TaskList;","lastModifiedDate":"2024-03-14"},{"lineNumber":4,"author":{"gitId":"Kaya3842"},"content":"import seedu.address.model.task.Task;","lastModifiedDate":"2024-03-14"},{"lineNumber":5,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":6,"author":{"gitId":"Kaya3842"},"content":"/**","lastModifiedDate":"2024-03-14"},{"lineNumber":7,"author":{"gitId":"Kaya3842"},"content":" * A utility class containing a list of {@code Task} objects to be used in tests.","lastModifiedDate":"2024-03-14"},{"lineNumber":8,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":9,"author":{"gitId":"Kaya3842"},"content":"public class TypicalTasks {","lastModifiedDate":"2024-03-14"},{"lineNumber":10,"author":{"gitId":"nobodyishappy"},"content":" public static final Task TASK_1 \u003d new TaskBuilder().withTaskName(\"task1\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":11,"author":{"gitId":"nobodyishappy"},"content":" public static final Task TASK_2 \u003d new TaskBuilder().withTaskName(\"task2\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":12,"author":{"gitId":"nobodyishappy"},"content":" public static final Task TASK_3 \u003d new TaskBuilder().withTaskName(\"task3\").build();","lastModifiedDate":"2024-03-21"},{"lineNumber":13,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":14,"author":{"gitId":"Kaya3842"},"content":" private static TaskList tasks \u003d new TaskList();","lastModifiedDate":"2024-03-14"},{"lineNumber":15,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":16,"author":{"gitId":"Kaya3842"},"content":" public static TaskList get() {","lastModifiedDate":"2024-03-14"},{"lineNumber":17,"author":{"gitId":"Kaya3842"},"content":" return tasks;","lastModifiedDate":"2024-03-14"},{"lineNumber":18,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":19,"author":{"gitId":"Kaya3842"},"content":"","lastModifiedDate":"2024-03-14"},{"lineNumber":20,"author":{"gitId":"Kaya3842"},"content":" /**","lastModifiedDate":"2024-03-14"},{"lineNumber":21,"author":{"gitId":"Kaya3842"},"content":" * Returns an {@code TaskList} with all the sample tasks.","lastModifiedDate":"2024-03-14"},{"lineNumber":22,"author":{"gitId":"Kaya3842"},"content":" */","lastModifiedDate":"2024-03-14"},{"lineNumber":23,"author":{"gitId":"Kaya3842"},"content":" public static TaskList getTypicalTaskList() {","lastModifiedDate":"2024-03-14"},{"lineNumber":24,"author":{"gitId":"Kaya3842"},"content":" tasks.addTask(TASK_1);","lastModifiedDate":"2024-03-14"},{"lineNumber":25,"author":{"gitId":"Kaya3842"},"content":" tasks.addTask(TASK_2);","lastModifiedDate":"2024-03-14"},{"lineNumber":26,"author":{"gitId":"Kaya3842"},"content":" tasks.addTask(TASK_3);","lastModifiedDate":"2024-03-14"},{"lineNumber":27,"author":{"gitId":"Kaya3842"},"content":" return TypicalTasks.get();","lastModifiedDate":"2024-03-14"},{"lineNumber":28,"author":{"gitId":"Kaya3842"},"content":" }","lastModifiedDate":"2024-03-14"},{"lineNumber":29,"author":{"gitId":"Kaya3842"},"content":"}","lastModifiedDate":"2024-03-14"}],"authorContributionMap":{"Kaya3842":26,"nobodyishappy":3}}] diff --git a/AY2324S2-CS2103T-W13-4_tp_master/commits.json b/AY2324S2-CS2103T-W13-4_tp_master/commits.json index 88693b20..0e7ea2d9 100644 --- a/AY2324S2-CS2103T-W13-4_tp_master/commits.json +++ b/AY2324S2-CS2103T-W13-4_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Kaya3842":[{"date":"2024-03-06","commitResults":[{"hash":"5dc5526c7a70d582293b62d4e46b0d2c89ba86f6","isMergeCommit":false,"messageTitle":"Modify AboutUs.md","messageBody":"Add personal details into AboutUs.md\n","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"25649451a81959afeb7956f8cddac57abba87b75","isMergeCommit":true,"messageTitle":"Merge pull request #19 from Kaya3842/master","messageBody":"Update Dinh Tran Hai Chien\u0027s AboutUs Page","fileTypesAndContributionMap":{}},{"hash":"e3ad321076d40797dfc5d4d54214d89424be2bb0","isMergeCommit":true,"messageTitle":"Merge pull request #26 from Yskie/master","messageBody":"Update Non-Functional Requirement in DG","fileTypesAndContributionMap":{}},{"hash":"664cf0357795f38d2cd5db1459d8f99542191f99","isMergeCommit":true,"messageTitle":"Merge pull request #27 from chin-herng/master","messageBody":"Update README page to match project","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"f3caf8dd4e8017ebcbfd5e68ee949bf1dc76c03b","isMergeCommit":false,"messageTitle":"Add Glossary in DeveloperGuide","messageBody":"Define terms that are worth recording in the Glossary section.\n\nFix some typos in the DeveloperGuide.md\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}}]},{"date":"2024-03-13","commitResults":[{"hash":"2caf6277b1bc7519cf280499ddcceeb2b8214f6c","isMergeCommit":false,"messageTitle":"Create Task class","messageBody":"Create the Task class to represent the tasks for the user to add to\nthe app.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":0}}},{"hash":"815607a21ca22ad773a12d6be0f2d0db26d6ce6c","isMergeCommit":false,"messageTitle":"Create AddTaskCommand and AddTaskCommandParser classes","messageBody":"Let\u0027s create an AddTaskCommand class to represent the command that\nadds a task to the book.\n\nLet\u0027s create an AddTaskCommand Parser class to process the user input\nfor an add task command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":0}}},{"hash":"1a40f52e4ca2067f931c1938aed36f9eba1eedab","isMergeCommit":false,"messageTitle":"Create TaskList class","messageBody":"Create the TaskList class to store the tasks from users.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":0}}},{"hash":"7dc4a279406ace15860ee51a0bdaba4e02a6e705","isMergeCommit":false,"messageTitle":"Update add task logic","messageBody":"Update AddressBookParser.parseCommand() to recognize\nthe addtask keyword.\n\nModify AddTaskCommandParser.java to parse user input.\n\nModify AddTaskCommand.java to add task to the task list.\n\nUpdate TaskList.java to include methods to add class and to check\nduplicate tasks.\n\nUpdate ModelManager.java and MainApp.java to include\nTaskList in the constructor.\n\nUpdate Messages.java to include the method for formatting\ntask description.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":78,"deletions":12}}},{"hash":"78eade941749fa7d34b6cfeaf090b4495c1541c2","isMergeCommit":false,"messageTitle":"Create TaskList Storage classes","messageBody":"Create TaskList Storage to store tasks into the data file.\n\nCreate Json adapted classes to store tasks in a Json file.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":229,"deletions":0}}},{"hash":"449814cfb2a5e78afeacea5e38bc9dfb235a2af8","isMergeCommit":false,"messageTitle":"Update Storage","messageBody":"Let\u0027s update the Storage package to store the task list in the\njson data file.\n\nLet\u0027s update the model package to contain the task list.\n\nLet\u0027s update the logic package to save the tasks to the task list.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":205,"deletions":23},"test-code":{"insertions":6,"deletions":5}}},{"hash":"20ebd4286fc01a8c2587a2eef2a50a0a3938fec0","isMergeCommit":false,"messageTitle":"Update test files","messageBody":"Change the test files to include the task list in model and storage\nclasses.\n","fileTypesAndContributionMap":{"test-code":{"insertions":100,"deletions":24}}}]},{"date":"2024-03-14","commitResults":[{"hash":"f9024e65fccdbdbe5aefe5668734a9cba9c9bcef","isMergeCommit":false,"messageTitle":"Add more test files","messageBody":"Add test classes for new classes and methods.\n\nUpdate old tests in ModelManagerTest and StorageManager to test\nTaskList methods.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":4},"test-code":{"insertions":273,"deletions":1}}},{"hash":"cda4b668cd45d0da6c16f5d501ad5976edfa0858","isMergeCommit":false,"messageTitle":"Add more test files","messageBody":"Add more test classes for new classes and methods.\n","fileTypesAndContributionMap":{"test-code":{"insertions":126,"deletions":1}}},{"hash":"74c69c4395b34ba9b5b05bc904cabde1ccb69a14","isMergeCommit":false,"messageTitle":"Add more tests","messageBody":"Add more tests for more methods.\n","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":11}}},{"hash":"cbed9182f8663be7cbe7b381b1b4e56ddccb122f","isMergeCommit":false,"messageTitle":"Update StorageManagerTest","messageBody":"Add test to taskList methods in StorageManager.\n","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}},{"hash":"aa11001e021c226ac9243e9177dcb62b3704dd1b","isMergeCommit":false,"messageTitle":"Fix StorageManagerTest","messageBody":"Fix tests for taskList methods in StorageManager.\n","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":5}}},{"hash":"c809106d73796f5d64874a608c2cbec33b79cce7","isMergeCommit":false,"messageTitle":"Add more test files","messageBody":"Add more test classes for new classes and methods.\n","fileTypesAndContributionMap":{"test-code":{"insertions":33,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"dcda2609941a2e5b23917a85a9639aa5bb7e7e88","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into adding-list-command","messageBody":"","fileTypesAndContributionMap":{}}]}],"Yskie":[{"date":"2024-03-06","commitResults":[{"hash":"6a619e789b36226aee8f1ad8ba15582ef4c653ff","isMergeCommit":false,"messageTitle":"Update Shikang AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":3}}},{"hash":"bd074253dfa66d3b16cfc99447291941de64a9c9","isMergeCommit":false,"messageTitle":"Modify Shikang AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"172085faf0e4b3502af1a1f3f27e955d3ed1b93a","isMergeCommit":false,"messageTitle":"Modify Shikang AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d3f5515d1a2731225994c6c333e1cfd4025837f7","isMergeCommit":true,"messageTitle":"Merge pull request #17 from breezetall/master","messageBody":"Update Abdul Khaliq\u0027s AboutUs","fileTypesAndContributionMap":{}},{"hash":"f2013cb35d2ec15829bf983181fc08d5045b5403","isMergeCommit":false,"messageTitle":"Update Non-Functional Requirements in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":3}}},{"hash":"5cd44ecbb1516d48c5923170eae1f95f6f5e5d58","isMergeCommit":false,"messageTitle":"Modify Non-Functional Requirements in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"debd3c4b3ed83293dcae61a5373288998e3b09ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"1560c9c39fc62b4702ef9bcdd37ef2d8690d9dbd","isMergeCommit":false,"messageTitle":"Modify NFR section of DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"787cb93808ec38b2639f9d7655bcf6f026cfabba","isMergeCommit":true,"messageTitle":"Merge pull request #31 from Yskie/dg-nfr","messageBody":"Modify NFR section of Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"abd9989ce6807636a19e11bc8fbbbd238e00c8e6","isMergeCommit":true,"messageTitle":"Merge pull request #34 from Kaya3842/branch-add-tasks","messageBody":"Add personal tasks","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"ea99bdd567614baa0565afcbabda28fa3b6e142c","isMergeCommit":false,"messageTitle":"Add Delete Task Function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":129,"deletions":1},"test-code":{"insertions":22,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"de51ab487e4db711b6e713dc2135304b8af78482","isMergeCommit":false,"messageTitle":"Fix Checkstyle Issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"9cb7f0e35e3ac419cf23dfaf1ca1edc9150a25bf","isMergeCommit":false,"messageTitle":"Modify JavaDoc Comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"5dab68064a092419e1fe64c0367bb8795184e5c5","isMergeCommit":false,"messageTitle":"Modify JavaDoc Comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"907aa93f539e7c1aa8276e028401887255fc2a28","isMergeCommit":false,"messageTitle":"Refactor code for delete task feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":23},"test-code":{"insertions":3,"deletions":2}}},{"hash":"9124aee8e8c78509de42844cd27406da663565e0","isMergeCommit":false,"messageTitle":"Fix Checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"c2b395a9b81bf5e74b9d20aee04d70bd58aecc97","isMergeCommit":false,"messageTitle":"Write test for delete command","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1},"test-code":{"insertions":45,"deletions":0}}},{"hash":"262b2898165cc00e1546b261fb74f31b6f419c69","isMergeCommit":false,"messageTitle":"Fix checkstyle issues in delete task test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}},{"hash":"7bd0bc9c9b8c4f04191f3998fa2b03502bff1cdc","isMergeCommit":false,"messageTitle":"Write test for delete command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":8}}},{"hash":"e5d15d31394383d63e02fd3982e5cd2daa95ddfd","isMergeCommit":false,"messageTitle":"Write tests for DeleteTaskCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":0},"test-code":{"insertions":25,"deletions":2}}},{"hash":"173e92179da449a204527341171014de8eac0db6","isMergeCommit":false,"messageTitle":"Write tests for delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":8},"test-code":{"insertions":53,"deletions":2}}},{"hash":"087b4dc7757e0715cc1d2665256046a93c5828a8","isMergeCommit":false,"messageTitle":"Refactor code for delete task parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}}]},{"date":"2024-03-19","commitResults":[{"hash":"254318b9e4ce1a92c765572879245aa2348e2e83","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-delete-command\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cdbc4b646d40dbef5dbe2dcbd4e76381002ed9b4","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Yskie/master","messageBody":"Merging Assign Task","fileTypesAndContributionMap":{}},{"hash":"4512c2c00e09ec114e004a9f21fef661675d0c63","isMergeCommit":false,"messageTitle":"Implement deletion of assigned tasks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":109,"deletions":36},"test-code":{"insertions":24,"deletions":13}}},{"hash":"39f8b18fec737794fd66f6c8c9b31a3f7dcaa607","isMergeCommit":false,"messageTitle":"Write test for delete assign task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":15,"deletions":0}}}]}],"chin-herng":[{"date":"2024-03-06","commitResults":[{"hash":"898d85c7dbe463226e11bb1d0e264b834d15cfa5","isMergeCommit":false,"messageTitle":"Update Chin Herng\u0027s AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"fda490fd84aa103c70da6195a1a81535be39eb84","isMergeCommit":true,"messageTitle":"Merge pull request #24 from nobodyishappy/master","messageBody":"Update product scope and user stories in developer guide","fileTypesAndContributionMap":{}},{"hash":"bfa98f345565e9ff49388cb2852e43229a4afbc1","isMergeCommit":false,"messageTitle":"Update README page to match project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":11}}},{"hash":"1cf99c1b51f220e0cc8c55f838fea9d7baa5168c","isMergeCommit":false,"messageTitle":"README.md: Add newline at EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"6e5e41813ab2000aaa751432411c453e0b7a8a79","isMergeCommit":false,"messageTitle":"Create assign command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"af8246fc83cc5b217f0be6be68155098e4be24e6","isMergeCommit":false,"messageTitle":"Hook AssignCommand into application","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"6c3612946f6a8350fc614b61555b3177179a2ca9","isMergeCommit":false,"messageTitle":"Change AssignCommand to throw an exception","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":2}}},{"hash":"3dd02e7974f758cd0b9bf86ed2e587893f2f9b14","isMergeCommit":false,"messageTitle":"Change AssignCommand to parse input from user","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":79,"deletions":5}}}]},{"date":"2024-03-17","commitResults":[{"hash":"44ceea59d102e14e47c10000745eae34040ff0b7","isMergeCommit":false,"messageTitle":"Modify Person to support Set\u003cTask\u003e instead of Set\u003cTag\u003e","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":107},"test-code":{"insertions":75,"deletions":163}}},{"hash":"0354be4ac6aa42abaf12756e4147d6b23c0b8213","isMergeCommit":false,"messageTitle":"Fix UI not displaying tasks correctly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"d37f5532be6ed9d4b0ad9427db928f402fc83f14","isMergeCommit":false,"messageTitle":"Write tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":6},"test-code":{"insertions":156,"deletions":56}}},{"hash":"9f6f142afb3563c6d48b81d8aa724fe027d679df","isMergeCommit":false,"messageTitle":"Fix success message of assign","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"569daf55a93fe62a2f93b2c965918bd9165f0734","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":0,"deletions":1}}},{"hash":"af562057fd29940268a243c99003770fe4b4d7b7","isMergeCommit":false,"messageTitle":"AssignCommandTest.java: fix broken tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"246216f2699b58859ea3cfdf70aa85a14d30943d","isMergeCommit":false,"messageTitle":"Write tests for AssignCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":86,"deletions":4}}},{"hash":"76fb6477e13739982f47e69fc243a4bc1ab6971a","isMergeCommit":false,"messageTitle":"Write tests for AssignCommand#equals","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":0}}},{"hash":"658a957ade7156dc1d20a9f6a08dcd09f019d91d","isMergeCommit":false,"messageTitle":"Add test for same object for AssignCommand#equals","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":0}}},{"hash":"718ea3c7d255abedcb26533ec295e6054db0f97f","isMergeCommit":false,"messageTitle":"Add test for different task index for AssignCommand#equals","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"b1d36431f6db7db6746746711eb295f5d030cff7","isMergeCommit":false,"messageTitle":"Write test for parsing assign commands","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}}]},{"date":"2024-03-18","commitResults":[{"hash":"975d8798f88b9e231934a85277c206159ac1701f","isMergeCommit":false,"messageTitle":"Refactor AssignCommand by extracting out createEditedPerson","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":5}}},{"hash":"335dfa2457cc5d2a2b88718934d3381b499a9204","isMergeCommit":false,"messageTitle":"Add addTask and deleteTask in Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":18}}},{"hash":"c5ef6cc5fe2a9c91ae4123eaf9b7940106d3bb8d","isMergeCommit":false,"messageTitle":"Write test for Person#deleteTask","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"7cf9ff91c87ec739c45499c3a6f1c918316931c4","isMergeCommit":true,"messageTitle":"Merge pull request #37 from Yskie/branch-delete-command","messageBody":"The Delete Task Command","fileTypesAndContributionMap":{}}]}],"nobodyishappy":[{"date":"2024-03-04","commitResults":[{"hash":"915d3cbcb1268c209db4809738c5839cb7b1c3ab","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S2-CS2103T-W13-4/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"cf67e11de780459221e906d2bceddfb5190e188e","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"Changing product name","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"019455c8951b12888a4cb968b85cd946f2ed14a6","isMergeCommit":true,"messageTitle":"Merge pull request #21 from chin-herng/master","messageBody":"Update Chin Herng\u0027s AboutUs page","fileTypesAndContributionMap":{}},{"hash":"f54e4039b477720052c6c773e159c6903ae13f47","isMergeCommit":false,"messageTitle":"Update Hao Liang\u0027s AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":11}}},{"hash":"b5e582ff4d9dd0f78a49b8d58b6aff55641152da","isMergeCommit":false,"messageTitle":"Update product scope in developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}},{"hash":"0be05672a478d5604df050bc5596b92ffeaef044","isMergeCommit":true,"messageTitle":"Merge pull request #25 from breezetall/master","messageBody":"Update use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"919dbc0a0bec9f94de5f0449739e40e62f6bce49","isMergeCommit":true,"messageTitle":"Merge pull request #29 from chin-herng/master","messageBody":"Add UI mockup","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"2da073afc525de8b21a42619408f4eb39c7292e2","isMergeCommit":false,"messageTitle":"Implement mark and unmark of tasks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":214,"deletions":3},"test-code":{"insertions":240,"deletions":1}}},{"hash":"89938bd5dba40dbe1abeaddf4983ec49e38c2bae","isMergeCommit":false,"messageTitle":"Change code from CRLF to LF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":189,"deletions":189},"test-code":{"insertions":207,"deletions":207}}},{"hash":"c76cdaf98b380b00676dbfe4929e125f2a3c300e","isMergeCommit":false,"messageTitle":"Fix error message for out-of-bound index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"ae1d1c817d7e0a43af78cdd05aca190e5bfd8336","isMergeCommit":false,"messageTitle":"Fix invalid index test for mark and unmark","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"f88400294d2ef43bc6c3ebc3707b6c525e898c29","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-4:master\u0027 into branch-mark-tasks","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"e6f21bdd090ed3f16c424df99c73a415b789e4e5","isMergeCommit":true,"messageTitle":"Merge pull request #39 from breezetall/adding-list-command","messageBody":"Adding list command","fileTypesAndContributionMap":{}},{"hash":"a7f8aa41ff0a427b9da64e452755e2575079ddc3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-mark-tasks\u0027 into branch-merge-from-main","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"27d73afb139c1b67f342b715d3deaca4da5a5ba3","isMergeCommit":true,"messageTitle":"Merge pull request #1 from nobodyishappy/branch-merge-from-main","messageBody":"Merge from main","fileTypesAndContributionMap":{}},{"hash":"bbecd9327700ee8e7bd624cd9149b8b390b595b5","isMergeCommit":false,"messageTitle":"Refactor task class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":338,"deletions":113},"test-code":{"insertions":176,"deletions":101}}},{"hash":"fefb6c203e0e6198f2752c137311991731ef476c","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":55},"test-code":{"insertions":71,"deletions":43}}},{"hash":"9584609888fa27d789e1441a14c2608eb5354bd2","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":5},"test-code":{"insertions":40,"deletions":2}}}]}],"breezetall":[{"date":"2024-03-06","commitResults":[{"hash":"635ad2a9578b9694e0d4f5a8060f20bd31e65d08","isMergeCommit":true,"messageTitle":"Merge pull request #16 from Yskie/master","messageBody":"Update Shi Kang\u0027s AboutUs","fileTypesAndContributionMap":{}},{"hash":"87badb2d15f3d4bf908153f565c075930e3e1553","isMergeCommit":false,"messageTitle":"Update Khaliq\u0027s AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"1002cad86f886c88b96fd0bc018638d91c8210a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a569c1d265307c2fa724734158397dc02e141273","isMergeCommit":false,"messageTitle":"Add Khaliq\u0027s AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":5}}},{"hash":"e3111b9d39e66f40f3488a1135cd1e9c46cd9cd6","isMergeCommit":true,"messageTitle":"Merge pull request #23 from nobodyishappy/master","messageBody":"Update Hao Liang\u0027s AboutUs page","fileTypesAndContributionMap":{}},{"hash":"b6a976ae1deb2e241764015a6aab35892bf1db6f","isMergeCommit":false,"messageTitle":"Add use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":44,"deletions":9}}}]},{"date":"2024-03-07","commitResults":[{"hash":"6443f4e75030b16e1e14c0b9d566d780b944c2ad","isMergeCommit":true,"messageTitle":"Merge pull request #28 from Kaya3842/master","messageBody":"Add Glossary in DeveloperGuide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"594e5dba9d6d11c80e800f59a9c4e52536abed20","isMergeCommit":false,"messageTitle":"Add ui panel for task list","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":183,"deletions":15}}}]},{"date":"2024-03-19","commitResults":[{"hash":"45818bec35a4f9f1f90bd0464aa12ba55661778e","isMergeCommit":false,"messageTitle":"Add listtask command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":102,"deletions":21}}},{"hash":"8713ea0c79fec11705fe8e6df46183c44e84b129","isMergeCommit":false,"messageTitle":"Add observableList to Task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":10}}},{"hash":"3ff249a30ae9e4ae31cd0380c2e11bf6682dde00","isMergeCommit":true,"messageTitle":"Merge pull request #36 from chin-herng/branch-assign-tasks","messageBody":"Assign Tasks to Persons","fileTypesAndContributionMap":{}},{"hash":"e2a0fdc97413557faf3149c210d2db9f8c25821e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into adding-list-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2e7c29263be3c9e201154a418c0f89733f57129a","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":13}}},{"hash":"d28921ceb10c4ebb8021bc50defbe06190e1bb3f","isMergeCommit":false,"messageTitle":"Modify observableList in TaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":10,"deletions":0}}},{"hash":"ed24a0693635adddcc613cb71a0d5b764495f382","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"02ed05c31e28d8dd14400556c42333759ff32097","isMergeCommit":false,"messageTitle":"Write tests for filteredTaskLists and ListCommandTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":45,"deletions":0}}},{"hash":"5c40429e993bacd6fa600420ac37faf86f9a605d","isMergeCommit":false,"messageTitle":"Remove test for filtered lists","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":1}}},{"hash":"0440c540f1db1f6d564726b6df9a3acf6aadd1be","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"2d159919dd17ea6e7e1b159c89b0739f3bc8093e","isMergeCommit":false,"messageTitle":"Write tests for AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":7,"deletions":10}}},{"hash":"44b4cde699d48a864d14f9a7bd36f34427f2ee5e","isMergeCommit":false,"messageTitle":"Fix imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":1}}},{"hash":"df7a966eeb51daf3820ac8d0038cf474cf70fdca","isMergeCommit":false,"messageTitle":"Update test for ModelManager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":0}}},{"hash":"f72129d694e353441d6a42ded2606247636d2eb9","isMergeCommit":false,"messageTitle":"Remove equals check for filteredTaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"3506b125df120bfd538115e564128320fb3e5e2c","isMergeCommit":false,"messageTitle":"Fix javaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}}]},{"date":"2024-03-21","commitResults":[{"hash":"6f0203d2c0e697b472ff030c6a6a0f6bf384aff4","isMergeCommit":true,"messageTitle":"Merge pull request #40 from nobodyishappy/branch-mark-tasks","messageBody":"Implement mark and unmark for tasks","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Kaya3842":{"docs":8,"functional-code":595,"test-code":511},"Yskie":{"docs":8,"functional-code":215,"test-code":146,"other":1},"chin-herng":{"docs":28,"functional-code":220,"test-code":335},"nobodyishappy":{"docs":16,"functional-code":594,"test-code":478},"breezetall":{"docs":37,"functional-code":234,"test-code":67}},"authorContributionVariance":{"Kaya3842":30452.361,"Yskie":4500.7295,"chin-herng":23355.033,"nobodyishappy":88221.734,"breezetall":3786.3113},"authorDisplayNameMap":{"Kaya3842":"CS2103T-W13-4 DINH..HIEN","Yskie":"CS2103T-W13-4 YONG..KANG","chin-herng":"CS2103T-W13-4 CHON..ERNG","nobodyishappy":"CS2103T-W13-4 TANG..IANG","breezetall":"CS2103T-W13-4 ABDU..SLAN"}} +{"authorDailyContributionsMap":{"Kaya3842":[{"date":"2024-03-06","commitResults":[{"hash":"5dc5526c7a70d582293b62d4e46b0d2c89ba86f6","isMergeCommit":false,"messageTitle":"Modify AboutUs.md","messageBody":"Add personal details into AboutUs.md\n","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"25649451a81959afeb7956f8cddac57abba87b75","isMergeCommit":true,"messageTitle":"Merge pull request #19 from Kaya3842/master","messageBody":"Update Dinh Tran Hai Chien\u0027s AboutUs Page","fileTypesAndContributionMap":{}},{"hash":"e3ad321076d40797dfc5d4d54214d89424be2bb0","isMergeCommit":true,"messageTitle":"Merge pull request #26 from Yskie/master","messageBody":"Update Non-Functional Requirement in DG","fileTypesAndContributionMap":{}},{"hash":"664cf0357795f38d2cd5db1459d8f99542191f99","isMergeCommit":true,"messageTitle":"Merge pull request #27 from chin-herng/master","messageBody":"Update README page to match project","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"f3caf8dd4e8017ebcbfd5e68ee949bf1dc76c03b","isMergeCommit":false,"messageTitle":"Add Glossary in DeveloperGuide","messageBody":"Define terms that are worth recording in the Glossary section.\n\nFix some typos in the DeveloperGuide.md\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}}]},{"date":"2024-03-13","commitResults":[{"hash":"2caf6277b1bc7519cf280499ddcceeb2b8214f6c","isMergeCommit":false,"messageTitle":"Create Task class","messageBody":"Create the Task class to represent the tasks for the user to add to\nthe app.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":0}}},{"hash":"815607a21ca22ad773a12d6be0f2d0db26d6ce6c","isMergeCommit":false,"messageTitle":"Create AddTaskCommand and AddTaskCommandParser classes","messageBody":"Let\u0027s create an AddTaskCommand class to represent the command that\nadds a task to the book.\n\nLet\u0027s create an AddTaskCommand Parser class to process the user input\nfor an add task command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":0}}},{"hash":"1a40f52e4ca2067f931c1938aed36f9eba1eedab","isMergeCommit":false,"messageTitle":"Create TaskList class","messageBody":"Create the TaskList class to store the tasks from users.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":29,"deletions":0}}},{"hash":"7dc4a279406ace15860ee51a0bdaba4e02a6e705","isMergeCommit":false,"messageTitle":"Update add task logic","messageBody":"Update AddressBookParser.parseCommand() to recognize\nthe addtask keyword.\n\nModify AddTaskCommandParser.java to parse user input.\n\nModify AddTaskCommand.java to add task to the task list.\n\nUpdate TaskList.java to include methods to add class and to check\nduplicate tasks.\n\nUpdate ModelManager.java and MainApp.java to include\nTaskList in the constructor.\n\nUpdate Messages.java to include the method for formatting\ntask description.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":78,"deletions":12}}},{"hash":"78eade941749fa7d34b6cfeaf090b4495c1541c2","isMergeCommit":false,"messageTitle":"Create TaskList Storage classes","messageBody":"Create TaskList Storage to store tasks into the data file.\n\nCreate Json adapted classes to store tasks in a Json file.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":229,"deletions":0}}},{"hash":"449814cfb2a5e78afeacea5e38bc9dfb235a2af8","isMergeCommit":false,"messageTitle":"Update Storage","messageBody":"Let\u0027s update the Storage package to store the task list in the\njson data file.\n\nLet\u0027s update the model package to contain the task list.\n\nLet\u0027s update the logic package to save the tasks to the task list.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":205,"deletions":23},"test-code":{"insertions":6,"deletions":5}}},{"hash":"20ebd4286fc01a8c2587a2eef2a50a0a3938fec0","isMergeCommit":false,"messageTitle":"Update test files","messageBody":"Change the test files to include the task list in model and storage\nclasses.\n","fileTypesAndContributionMap":{"test-code":{"insertions":100,"deletions":24}}}]},{"date":"2024-03-14","commitResults":[{"hash":"f9024e65fccdbdbe5aefe5668734a9cba9c9bcef","isMergeCommit":false,"messageTitle":"Add more test files","messageBody":"Add test classes for new classes and methods.\n\nUpdate old tests in ModelManagerTest and StorageManager to test\nTaskList methods.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":4},"test-code":{"insertions":273,"deletions":1}}},{"hash":"cda4b668cd45d0da6c16f5d501ad5976edfa0858","isMergeCommit":false,"messageTitle":"Add more test files","messageBody":"Add more test classes for new classes and methods.\n","fileTypesAndContributionMap":{"test-code":{"insertions":126,"deletions":1}}},{"hash":"74c69c4395b34ba9b5b05bc904cabde1ccb69a14","isMergeCommit":false,"messageTitle":"Add more tests","messageBody":"Add more tests for more methods.\n","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":11}}},{"hash":"cbed9182f8663be7cbe7b381b1b4e56ddccb122f","isMergeCommit":false,"messageTitle":"Update StorageManagerTest","messageBody":"Add test to taskList methods in StorageManager.\n","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}},{"hash":"aa11001e021c226ac9243e9177dcb62b3704dd1b","isMergeCommit":false,"messageTitle":"Fix StorageManagerTest","messageBody":"Fix tests for taskList methods in StorageManager.\n","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":5}}},{"hash":"c809106d73796f5d64874a608c2cbec33b79cce7","isMergeCommit":false,"messageTitle":"Add more test files","messageBody":"Add more test classes for new classes and methods.\n","fileTypesAndContributionMap":{"test-code":{"insertions":33,"deletions":0}}}]},{"date":"2024-03-21","commitResults":[{"hash":"dcda2609941a2e5b23917a85a9639aa5bb7e7e88","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into adding-list-command","messageBody":"","fileTypesAndContributionMap":{}}]}],"Yskie":[{"date":"2024-03-06","commitResults":[{"hash":"6a619e789b36226aee8f1ad8ba15582ef4c653ff","isMergeCommit":false,"messageTitle":"Update Shikang AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":3}}},{"hash":"bd074253dfa66d3b16cfc99447291941de64a9c9","isMergeCommit":false,"messageTitle":"Modify Shikang AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"172085faf0e4b3502af1a1f3f27e955d3ed1b93a","isMergeCommit":false,"messageTitle":"Modify Shikang AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"d3f5515d1a2731225994c6c333e1cfd4025837f7","isMergeCommit":true,"messageTitle":"Merge pull request #17 from breezetall/master","messageBody":"Update Abdul Khaliq\u0027s AboutUs","fileTypesAndContributionMap":{}},{"hash":"f2013cb35d2ec15829bf983181fc08d5045b5403","isMergeCommit":false,"messageTitle":"Update Non-Functional Requirements in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":3}}},{"hash":"5cd44ecbb1516d48c5923170eae1f95f6f5e5d58","isMergeCommit":false,"messageTitle":"Modify Non-Functional Requirements in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"debd3c4b3ed83293dcae61a5373288998e3b09ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-08","commitResults":[{"hash":"1560c9c39fc62b4702ef9bcdd37ef2d8690d9dbd","isMergeCommit":false,"messageTitle":"Modify NFR section of DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"787cb93808ec38b2639f9d7655bcf6f026cfabba","isMergeCommit":true,"messageTitle":"Merge pull request #31 from Yskie/dg-nfr","messageBody":"Modify NFR section of Developer Guide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-16","commitResults":[{"hash":"abd9989ce6807636a19e11bc8fbbbd238e00c8e6","isMergeCommit":true,"messageTitle":"Merge pull request #34 from Kaya3842/branch-add-tasks","messageBody":"Add personal tasks","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"ea99bdd567614baa0565afcbabda28fa3b6e142c","isMergeCommit":false,"messageTitle":"Add Delete Task Function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":129,"deletions":1},"test-code":{"insertions":22,"deletions":1}}}]},{"date":"2024-03-18","commitResults":[{"hash":"de51ab487e4db711b6e713dc2135304b8af78482","isMergeCommit":false,"messageTitle":"Fix Checkstyle Issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"9cb7f0e35e3ac419cf23dfaf1ca1edc9150a25bf","isMergeCommit":false,"messageTitle":"Modify JavaDoc Comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"5dab68064a092419e1fe64c0367bb8795184e5c5","isMergeCommit":false,"messageTitle":"Modify JavaDoc Comments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"907aa93f539e7c1aa8276e028401887255fc2a28","isMergeCommit":false,"messageTitle":"Refactor code for delete task feature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":42,"deletions":23},"test-code":{"insertions":3,"deletions":2}}},{"hash":"9124aee8e8c78509de42844cd27406da663565e0","isMergeCommit":false,"messageTitle":"Fix Checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"c2b395a9b81bf5e74b9d20aee04d70bd58aecc97","isMergeCommit":false,"messageTitle":"Write test for delete command","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1},"test-code":{"insertions":45,"deletions":0}}},{"hash":"262b2898165cc00e1546b261fb74f31b6f419c69","isMergeCommit":false,"messageTitle":"Fix checkstyle issues in delete task test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}},{"hash":"7bd0bc9c9b8c4f04191f3998fa2b03502bff1cdc","isMergeCommit":false,"messageTitle":"Write test for delete command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":8}}},{"hash":"e5d15d31394383d63e02fd3982e5cd2daa95ddfd","isMergeCommit":false,"messageTitle":"Write tests for DeleteTaskCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":0},"test-code":{"insertions":25,"deletions":2}}},{"hash":"173e92179da449a204527341171014de8eac0db6","isMergeCommit":false,"messageTitle":"Write tests for delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":8},"test-code":{"insertions":53,"deletions":2}}},{"hash":"087b4dc7757e0715cc1d2665256046a93c5828a8","isMergeCommit":false,"messageTitle":"Refactor code for delete task parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3}}}]},{"date":"2024-03-19","commitResults":[{"hash":"254318b9e4ce1a92c765572879245aa2348e2e83","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-delete-command\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cdbc4b646d40dbef5dbe2dcbd4e76381002ed9b4","isMergeCommit":true,"messageTitle":"Merge pull request #1 from Yskie/master","messageBody":"Merging Assign Task","fileTypesAndContributionMap":{}},{"hash":"4512c2c00e09ec114e004a9f21fef661675d0c63","isMergeCommit":false,"messageTitle":"Implement deletion of assigned tasks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":109,"deletions":36},"test-code":{"insertions":24,"deletions":13}}},{"hash":"39f8b18fec737794fd66f6c8c9b31a3f7dcaa607","isMergeCommit":false,"messageTitle":"Write test for delete assign task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":15,"deletions":0}}}]}],"chin-herng":[{"date":"2024-03-06","commitResults":[{"hash":"898d85c7dbe463226e11bb1d0e264b834d15cfa5","isMergeCommit":false,"messageTitle":"Update Chin Herng\u0027s AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"fda490fd84aa103c70da6195a1a81535be39eb84","isMergeCommit":true,"messageTitle":"Merge pull request #24 from nobodyishappy/master","messageBody":"Update product scope and user stories in developer guide","fileTypesAndContributionMap":{}},{"hash":"bfa98f345565e9ff49388cb2852e43229a4afbc1","isMergeCommit":false,"messageTitle":"Update README page to match project","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":11}}},{"hash":"1cf99c1b51f220e0cc8c55f838fea9d7baa5168c","isMergeCommit":false,"messageTitle":"README.md: Add newline at EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-03-16","commitResults":[{"hash":"6e5e41813ab2000aaa751432411c453e0b7a8a79","isMergeCommit":false,"messageTitle":"Create assign command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":16,"deletions":0}}},{"hash":"af8246fc83cc5b217f0be6be68155098e4be24e6","isMergeCommit":false,"messageTitle":"Hook AssignCommand into application","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"6c3612946f6a8350fc614b61555b3177179a2ca9","isMergeCommit":false,"messageTitle":"Change AssignCommand to throw an exception","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":2}}},{"hash":"3dd02e7974f758cd0b9bf86ed2e587893f2f9b14","isMergeCommit":false,"messageTitle":"Change AssignCommand to parse input from user","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":79,"deletions":5}}}]},{"date":"2024-03-17","commitResults":[{"hash":"44ceea59d102e14e47c10000745eae34040ff0b7","isMergeCommit":false,"messageTitle":"Modify Person to support Set\u003cTask\u003e instead of Set\u003cTag\u003e","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":59,"deletions":107},"test-code":{"insertions":75,"deletions":163}}},{"hash":"0354be4ac6aa42abaf12756e4147d6b23c0b8213","isMergeCommit":false,"messageTitle":"Fix UI not displaying tasks correctly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"d37f5532be6ed9d4b0ad9427db928f402fc83f14","isMergeCommit":false,"messageTitle":"Write tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":6},"test-code":{"insertions":156,"deletions":56}}},{"hash":"9f6f142afb3563c6d48b81d8aa724fe027d679df","isMergeCommit":false,"messageTitle":"Fix success message of assign","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"569daf55a93fe62a2f93b2c965918bd9165f0734","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":0,"deletions":1}}},{"hash":"af562057fd29940268a243c99003770fe4b4d7b7","isMergeCommit":false,"messageTitle":"AssignCommandTest.java: fix broken tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}},{"hash":"246216f2699b58859ea3cfdf70aa85a14d30943d","isMergeCommit":false,"messageTitle":"Write tests for AssignCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":86,"deletions":4}}},{"hash":"76fb6477e13739982f47e69fc243a4bc1ab6971a","isMergeCommit":false,"messageTitle":"Write tests for AssignCommand#equals","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":0}}},{"hash":"658a957ade7156dc1d20a9f6a08dcd09f019d91d","isMergeCommit":false,"messageTitle":"Add test for same object for AssignCommand#equals","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":0}}},{"hash":"718ea3c7d255abedcb26533ec295e6054db0f97f","isMergeCommit":false,"messageTitle":"Add test for different task index for AssignCommand#equals","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":0}}},{"hash":"b1d36431f6db7db6746746711eb295f5d030cff7","isMergeCommit":false,"messageTitle":"Write test for parsing assign commands","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}}]},{"date":"2024-03-18","commitResults":[{"hash":"975d8798f88b9e231934a85277c206159ac1701f","isMergeCommit":false,"messageTitle":"Refactor AssignCommand by extracting out createEditedPerson","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":5}}},{"hash":"335dfa2457cc5d2a2b88718934d3381b499a9204","isMergeCommit":false,"messageTitle":"Add addTask and deleteTask in Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":18}}},{"hash":"c5ef6cc5fe2a9c91ae4123eaf9b7940106d3bb8d","isMergeCommit":false,"messageTitle":"Write test for Person#deleteTask","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}}]},{"date":"2024-03-20","commitResults":[{"hash":"7cf9ff91c87ec739c45499c3a6f1c918316931c4","isMergeCommit":true,"messageTitle":"Merge pull request #37 from Yskie/branch-delete-command","messageBody":"The Delete Task Command","fileTypesAndContributionMap":{}}]}],"nobodyishappy":[{"date":"2024-03-04","commitResults":[{"hash":"915d3cbcb1268c209db4809738c5839cb7b1c3ab","isMergeCommit":true,"messageTitle":"Merge pull request #2 from AY2324S2-CS2103T-W13-4/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}}]},{"date":"2024-03-06","commitResults":[{"hash":"cf67e11de780459221e906d2bceddfb5190e188e","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"Changing product name","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"019455c8951b12888a4cb968b85cd946f2ed14a6","isMergeCommit":true,"messageTitle":"Merge pull request #21 from chin-herng/master","messageBody":"Update Chin Herng\u0027s AboutUs page","fileTypesAndContributionMap":{}},{"hash":"f54e4039b477720052c6c773e159c6903ae13f47","isMergeCommit":false,"messageTitle":"Update Hao Liang\u0027s AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":11}}},{"hash":"b5e582ff4d9dd0f78a49b8d58b6aff55641152da","isMergeCommit":false,"messageTitle":"Update product scope in developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}},{"hash":"0be05672a478d5604df050bc5596b92ffeaef044","isMergeCommit":true,"messageTitle":"Merge pull request #25 from breezetall/master","messageBody":"Update use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-03-07","commitResults":[{"hash":"919dbc0a0bec9f94de5f0449739e40e62f6bce49","isMergeCommit":true,"messageTitle":"Merge pull request #29 from chin-herng/master","messageBody":"Add UI mockup","fileTypesAndContributionMap":{}}]},{"date":"2024-03-19","commitResults":[{"hash":"2da073afc525de8b21a42619408f4eb39c7292e2","isMergeCommit":false,"messageTitle":"Implement mark and unmark of tasks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":214,"deletions":3},"test-code":{"insertions":240,"deletions":1}}},{"hash":"89938bd5dba40dbe1abeaddf4983ec49e38c2bae","isMergeCommit":false,"messageTitle":"Change code from CRLF to LF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":189,"deletions":189},"test-code":{"insertions":207,"deletions":207}}},{"hash":"c76cdaf98b380b00676dbfe4929e125f2a3c300e","isMergeCommit":false,"messageTitle":"Fix error message for out-of-bound index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"ae1d1c817d7e0a43af78cdd05aca190e5bfd8336","isMergeCommit":false,"messageTitle":"Fix invalid index test for mark and unmark","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"f88400294d2ef43bc6c3ebc3707b6c525e898c29","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-4:master\u0027 into branch-mark-tasks","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-03-21","commitResults":[{"hash":"e6f21bdd090ed3f16c424df99c73a415b789e4e5","isMergeCommit":true,"messageTitle":"Merge pull request #39 from breezetall/adding-list-command","messageBody":"Adding list command","fileTypesAndContributionMap":{}},{"hash":"a7f8aa41ff0a427b9da64e452755e2575079ddc3","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-mark-tasks\u0027 into branch-merge-from-main","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"27d73afb139c1b67f342b715d3deaca4da5a5ba3","isMergeCommit":true,"messageTitle":"Merge pull request #1 from nobodyishappy/branch-merge-from-main","messageBody":"Merge from main","fileTypesAndContributionMap":{}},{"hash":"bbecd9327700ee8e7bd624cd9149b8b390b595b5","isMergeCommit":false,"messageTitle":"Refactor task class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":338,"deletions":113},"test-code":{"insertions":176,"deletions":101}}},{"hash":"fefb6c203e0e6198f2752c137311991731ef476c","isMergeCommit":false,"messageTitle":"Fix tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":92,"deletions":55},"test-code":{"insertions":71,"deletions":43}}},{"hash":"9584609888fa27d789e1441a14c2608eb5354bd2","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":5},"test-code":{"insertions":40,"deletions":2}}}]},{"date":"2024-03-25","commitResults":[{"hash":"925c448fca446c0fd7bdfa7f8cdfa542255e6c44","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":48,"deletions":3}}}]}],"breezetall":[{"date":"2024-03-06","commitResults":[{"hash":"635ad2a9578b9694e0d4f5a8060f20bd31e65d08","isMergeCommit":true,"messageTitle":"Merge pull request #16 from Yskie/master","messageBody":"Update Shi Kang\u0027s AboutUs","fileTypesAndContributionMap":{}},{"hash":"87badb2d15f3d4bf908153f565c075930e3e1553","isMergeCommit":false,"messageTitle":"Update Khaliq\u0027s AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"1002cad86f886c88b96fd0bc018638d91c8210a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2324S2-CS2103T-W13-4:master\u0027 into master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a569c1d265307c2fa724734158397dc02e141273","isMergeCommit":false,"messageTitle":"Add Khaliq\u0027s AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":5}}},{"hash":"e3111b9d39e66f40f3488a1135cd1e9c46cd9cd6","isMergeCommit":true,"messageTitle":"Merge pull request #23 from nobodyishappy/master","messageBody":"Update Hao Liang\u0027s AboutUs page","fileTypesAndContributionMap":{}},{"hash":"b6a976ae1deb2e241764015a6aab35892bf1db6f","isMergeCommit":false,"messageTitle":"Add use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":44,"deletions":9}}}]},{"date":"2024-03-07","commitResults":[{"hash":"6443f4e75030b16e1e14c0b9d566d780b944c2ad","isMergeCommit":true,"messageTitle":"Merge pull request #28 from Kaya3842/master","messageBody":"Add Glossary in DeveloperGuide","fileTypesAndContributionMap":{}}]},{"date":"2024-03-17","commitResults":[{"hash":"594e5dba9d6d11c80e800f59a9c4e52536abed20","isMergeCommit":false,"messageTitle":"Add ui panel for task list","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":183,"deletions":15}}}]},{"date":"2024-03-19","commitResults":[{"hash":"45818bec35a4f9f1f90bd0464aa12ba55661778e","isMergeCommit":false,"messageTitle":"Add listtask command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":102,"deletions":21}}},{"hash":"8713ea0c79fec11705fe8e6df46183c44e84b129","isMergeCommit":false,"messageTitle":"Add observableList to Task","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":10}}},{"hash":"3ff249a30ae9e4ae31cd0380c2e11bf6682dde00","isMergeCommit":true,"messageTitle":"Merge pull request #36 from chin-herng/branch-assign-tasks","messageBody":"Assign Tasks to Persons","fileTypesAndContributionMap":{}},{"hash":"e2a0fdc97413557faf3149c210d2db9f8c25821e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into adding-list-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2e7c29263be3c9e201154a418c0f89733f57129a","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":13}}},{"hash":"d28921ceb10c4ebb8021bc50defbe06190e1bb3f","isMergeCommit":false,"messageTitle":"Modify observableList in TaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"test-code":{"insertions":10,"deletions":0}}},{"hash":"ed24a0693635adddcc613cb71a0d5b764495f382","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"02ed05c31e28d8dd14400556c42333759ff32097","isMergeCommit":false,"messageTitle":"Write tests for filteredTaskLists and ListCommandTask","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"test-code":{"insertions":45,"deletions":0}}},{"hash":"5c40429e993bacd6fa600420ac37faf86f9a605d","isMergeCommit":false,"messageTitle":"Remove test for filtered lists","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":1}}},{"hash":"0440c540f1db1f6d564726b6df9a3acf6aadd1be","isMergeCommit":false,"messageTitle":"Remove unused imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"2d159919dd17ea6e7e1b159c89b0739f3bc8093e","isMergeCommit":false,"messageTitle":"Write tests for AddressBookParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":7,"deletions":10}}},{"hash":"44b4cde699d48a864d14f9a7bd36f34427f2ee5e","isMergeCommit":false,"messageTitle":"Fix imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":1}}},{"hash":"df7a966eeb51daf3820ac8d0038cf474cf70fdca","isMergeCommit":false,"messageTitle":"Update test for ModelManager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":0}}},{"hash":"f72129d694e353441d6a42ded2606247636d2eb9","isMergeCommit":false,"messageTitle":"Remove equals check for filteredTaskList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}}]},{"date":"2024-03-20","commitResults":[{"hash":"3506b125df120bfd538115e564128320fb3e5e2c","isMergeCommit":false,"messageTitle":"Fix javaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}}]},{"date":"2024-03-21","commitResults":[{"hash":"6f0203d2c0e697b472ff030c6a6a0f6bf384aff4","isMergeCommit":true,"messageTitle":"Merge pull request #40 from nobodyishappy/branch-mark-tasks","messageBody":"Implement mark and unmark for tasks","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Kaya3842":{"docs":8,"functional-code":595,"test-code":511},"Yskie":{"docs":8,"functional-code":215,"test-code":146,"other":1},"chin-herng":{"docs":28,"functional-code":220,"test-code":335},"nobodyishappy":{"docs":63,"functional-code":594,"test-code":478},"breezetall":{"docs":37,"functional-code":234,"test-code":67}},"authorContributionVariance":{"Kaya3842":26894.445,"Yskie":3997.8076,"chin-herng":20590.043,"nobodyishappy":77804.67,"breezetall":3353.4019},"authorDisplayNameMap":{"Kaya3842":"CS2103T-W13-4 DINH..HIEN","Yskie":"CS2103T-W13-4 YONG..KANG","chin-herng":"CS2103T-W13-4 CHON..ERNG","nobodyishappy":"CS2103T-W13-4 TANG..IANG","breezetall":"CS2103T-W13-4 ABDU..SLAN"}} diff --git a/archive.zip b/archive.zip index 54ed05421cc070ddd6561f1040dbba22a2447de9..0a823b25ddc53dfeda7fc780b257798da570bf8b 100644 GIT binary patch delta 651400 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 z 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

m6?3a(u)k1Q`V?y~bS`$(x zyM0_K9Vm*HRtW`@B)C%=t7OWO?@RK4I=r0EEus}grK*5k{cM9meZsHo*v1|+X6}mW zWq%gO^jjt{;q?uwQ}^jpxx$+&sWx}(#1k_>#rpzgTPDaIpdx%(2j79wlZG4ePc(Od zr>EFpf7@3|W|AXe`#L*)~#%$h3Ggtb4c?M@1QAoZ~ zf28>4d1$D2bH@O4noH$j0uP!!-`JJt8JwaS;MtkPp99ie{fL6noMQjdciciSXD(I)l|{abF;&vc6j0< zw)oXB40AT)02S!f#@t86e688yq&9XroiO9iVZsaEb9<{86%r=z4Vx+t18n(L_?d>_ z?W#K-K0q-zse;cz5n)H^I!%@fX2@1PVrQPB0-SWhdFeGzlbD9}kV9I8~>svbVML7&Wp^_Xm&Td1tmgDkk;$c$Q1plof`y|Iw zK2XNuk@8j;sW)D<iNu1gwK9MXud>2)bbJ+0z)@Mzf4=nne*W`Q+27=Wo_LIDv>RWEQjCq8e431L?)+%+B+3hEYgX(4)i@aP*p#{L!lUadzLP+j! znKwrVG>;Yu!L3=EgLVN{%{vk47|<#c@=Pj47;=N=@`R2rB%;4df4h&# zm*SYdXBwEm7^pb#75)mYt_jqd7L?t>_Tn{$;X~|F`Rg)FH-!{6A898sT?155m*hNh zS5=K6QpT~+uQP^zkc6J?US?u46y=4?IMX;}yBK_5?7Q54StMB&LYx&3_ou)hRhioA zwEN;!jcc~W*C3}Ce-sAi8n1v*QOM~j&HOZ6uy2eZiKb8sC9e;jcbKgePVc17$44h> z#nV~~qJi3$*<@Aq+uBB`a4~KgRW1viaa7fn?93xKF=Yc(P#N20GCAQdOYn(8dbyxj z1^&V&Vn*YeB)Sm>kIW!YX3G^I3~Rkcae`P=pg|RxxpZw*e)oN z;|RK{*Tr`iLPw7^+Xi$crez6 z426~K`zr8_=f$gCQ5z<%#eqTvlvE&SQ|Zy>!60u7 zYp)P0!j80JgrdUj)?T4j7@;pYDM#?0nwXk4Z&0YXwll(sE;ulQ$1~$$Pw?N=u|3lN{&t67@jjWu;I;;8+xvf$HYSQ41khLJIrH}>n zQv8X3e{QEXnmztC`K401-zxUmn%F~q^jx#p;gsw=s0q^#vnyt;NI7fcc`OWsWAVRY z@AYS1rv2_W$PcGhFetvWL_UiR33m@hX6^Um}LmKKM z@|qV-OngT3=FL>DgZbVcVuS8VS(b}{HTx`#f4IdU#DXKa^XBd4Q!)EjKfM0%`QpV3 zxeQlU>!8Kv=839!w`(9O-|+h)&b``04AyrvnRFpwa-vlzxetN!FVI=5;EaE|hUr`Av+4DU8 zjmpu%35H-SKvrV5vYtp?zN zhPe!FPr(+1xmJ#5kxg1o8qfWZGb^qAY8&0X?-Er{PAZ?MGo{O}d2>}aRFTh%r_0#ne{Y@+^wq!J`M`(Dy>XjrA{e|NA2J#w7@AVC#nRiL=)_xQNBc(_7UJZ&4lih5;* z5sT}`P2E0Jh-K-tUaN{*eJ)w$cGbNhkJkJg+>KpSS}G_*@J_`|CJq`k&8_gL>_}`7 z&yGTogOw zV;^RG0;z8#-p|7zh-lsWuHmlBz~2iDi<0k4&NZ zxO}`=i6pP381j4(zM9n$mz~i#hX=Dz))Fk7Z#4wxfUnXjmQN*O`$ARf%9Dxk4NGqy zEebu})!$M?`(=sSrbiWXf1lqF6<>>kaW2hP80V#Jtm|;Lt6baMEY?M7cO9(lG5mGF zb78c)4jk3CMFsN?ID;dMyi_E26!oIic`7{W`+TQsE``mwB_7(nIYc*`0 zdF8{2S9zMrpdc(WFvfTmzdXWAsfx5Cg?EdC-Iws;{ z*&y8KW!=Dv*ydU0hN$@DE;vj>RLHV9pkRx^HtCm=3{hnI)138cqCqH&C(^}uDHO*m z3d#JKC2?i_AFXbZe-eJ=t|;I7;Hy^@a#x0b17b|&Yhzx-o!{UIlr2i6<_b@!Qd5;L zhrHm?=S((3gU>}JLJ`mm;niYf1kCy6oaYh$@#^&}nT}Hyc&_vZXjnBocT}nxZX(7q zkyOShO4Q4sEF0Wn-Xx5|{LbPjafk}zwrCb>b?)w>7sKXte{qP8#kPH39HL{cH&w%F zZXNx2w@aQRF}tIIxFr2346~$I)G7Vt-RQYe6o8E%hTaOyJFHnOVfJ4pFh! zLR5>!(Gl21HJ&V4ramRpC0E63o@8)fsX!EOIu(bS%9C!ME9C!U?_HPUMv`>FS3%co zo2Arbib+-Je>Oj+StM2Bv_#58s%olBWon2Cl9I=}{TIgMV>7yYE6ey>$GXdm zgS%&N6JR%*rQ%Q??80f`eh*S@%M@aDZ?TxrO=_rQe{IL7X@)2D6~~cAk8<2arE@2p zpQ(_bLXTwiNF|goJucJhiN2rH>&i#|?Aa>&!~sFce{n#Z7mI~B+LL|#XR$7)n?lb$ zhu32lmDSDk7-JKqd5%9+mNcVTWLVbGrY2ud83a~&b2f)c4>SVU=r=-V`UfxcrY2h0)fwq35Go6sF;^HVsQ8!jMOM{K??kw|#y4wCfF1<8vUgSL z&qOL3BB4%vv@E=$`s`F^mrp#~U&D6SvD(!pe}$oDS8O(T*mP%R24}oumu1==mSOI1 z7AeS?);qvvgtyrq+jj48n~dWd)Z8+RW5sXGt%{>FLGkDf)oi_Ri9 zkDZT2E`37n;TbBEi^iv{Ck{ICTt~>MRK4S3b$laUH?8g&S}!sCytVfww`B|vBdXq` zW}NSilX1R_%{YH9#jC9D+3@9rZ-idae?C|tLgjgj8E2^hx=15k1GvctUH;=#?%W-g zH}2m*7$Nsh|0HdS=ZhOz9EQ=yIPop0)a)bU`L{Ky)P-ttzEVkFBV@MAlcFQ`*6Amg zc+IFeChkN>V$HQ|tKXoily~x62mCd9l;>(8UcE9TR7Hd6P!{U}wON}^vDr_>e_BR{ z2%X?cmxH@r7mC<5O>{-MGSjSYI*QMv%rZ9BIEpGN*ZYN~nNZ;u;<7sbP5f_GYKDO- z3s%>PN>}A48B!zDK4ir_@#}Rb1yJX>O_L+TXDj(v%39*hC4<3Q&!|aNI<85ZlGAc)%KFg@Ie`_K7lfE;cVi3QPW4l$eC|--kd$lTb&2w3H;U_Tx z41ic`u~-?Eig}fxQ9&Hal-ge$-8nO537Ob70Ev9%4v))#|cqD zCCJK=d|Qu%gMJ*#DmEiF`L3}J|M|cF&;R_7|NB4x_y3dp=YRZP|M?&PFK0mGoONt^ zZ1Tt%(B^@Ry4gICY*gZZf3Maum{@+s8P_-`A63gyp8B5}A!^3?T!p|2wPPteRT__Y zlSoT{^VVZP!#--WmAD$tO*o%XX`QN_^b6zRIQ1SMqBBY5h4D%yk6C)eVl9+AsTFRE zt6k`Fx#as{AQ;7__7GLR(cT|>az`Y8lLY3nN|$;8FN=>R+a zq4k_uspjE0X`K&IX`S{Os)r$3U#Q2i_1)5YMpY(cG>erWj~WA#xdfZrN;W!sF%02X z+vC0rcg{bkXX~rDcCWHCQ{Y+*lOpUqwB41=@x7QMiW$sI5qLL=I5ED{<^X!)vIRav0uG911 zWGth?GBsGH2Fp}p@!EA~kEBNsx~2xKvuyMU6rY0;r}=A4fBRkE&)QIw8>J*g;tPa3Efsu}Ge`*Hz*6Z}P^mitf zY_`4IwU%IHW~Vb#r(!BjS6M8w7wVC__ILhRc0TKF8H@n+cK$pc&@)EHdV78;t=RNF zQR3C#sVa8If9Mq>WW2p9e$ni?y6`uw?njX|s6wngfxq6fhfCX4F~2&$SkrYbmG{0h z6$$lc+Vmrfp6Ak*KQ{@B`MN6evXJ|T4iTlx-A|6wWj0U#=bsnSYNmJ3m(s@1YvNH` z+N6$0#(9{`#R6bMy*Tg7JpVGQW=p-sK4i)yY^GIde=^0*M!Ex*;=)TEHi~mCb<`xM zHm+Ch*e{8^gJmMHg^W`NrY8 z#iz;cRw`e>`5E{Ggy)uHwDD`Wc<(8t>|V27h4W16T89_htct~b)NmzIXG zWG!9x;;h%yBUUzBv83vR+Y$7p-@!w`nj+gnkP)Xko8$sDsjHjC)V`^k)`W}zi_A*8P=*`5c%V! zd_7Pdi`m>8MQM`lr4$e^ z4V{%MP7qxT6Ve(3iWs!wSm9@sF(YYI9A_?ez(hZ)%yRaGZ2C7esT?+Zsp#H~e`HX< z=@Cz6F23s;qA0?!S;zimwcjhIvP`Uf`7F^T?3=I|atfcbs4ptny*h{rlnLmol?s#Q zZNcU%p+4kBWoYOUbfA>F+%+H>|Ed=*!dzjUL|&Qh-K>LZ&-z=%id~LO$EPLUPxdR~ zDRcW)0$oRctkEMSc6927D>hYz3BHo`TN3N5p?}&Q1+p}e^so!@6(^OGwe~f zakSWV^{1Dv5wQxMSC(wK?Y+m-4+AYSd+u#-<7g9V)-zrvo z1Ww}1+7RJVTx=bkrT&>!zYB@vQ8vcAP(dVXavJbTudmY##?MS>z1JcWg_R0*(2Bb80-oNk&h-admX}f&el%ybe;K;;r5Q}%gckLjW}g!g zm5yhIa+*mt*Ny*GzUBAVnZZMDJGux$CCza~5Vm3|D1ut9B8F!QPK@i}Dsx^yzV}Gw zZdM!Zn@~9$V4I-x;+lxyr@%$JC^>HdboLwY0ID%@Iv$kr;%$|pW{JnM_8{-Qd?_i8 z+#{yn%U0#Ce{OuIXuG>fbUlf(a#vLmOX6wW8|3952<43^24d*k|5-xNgiWiWV#1RD zh2(s8pf!#8c6SZk6K4k)u~Z<4ut+2QCNP3>qUtK_}A1AytA5o=|K-Gs%#Fenkwf7>e20;hMMqcb>LFIB;FbO@9u zs?6CBXyQQF96CAB{Co-DF zNI1kSAd<-*s$4QL_t;!ARklP|g!wA@W2%38Sj*644zN)|;+RTMS>?r4PS*6bnCCv* z%WSs2`?%}19x?`Bqr@Dsi_exNS<;A1Pd=2{fBK`Opp`Vq^kpGrjQP_Dr$5}}r@DAx zZyp&u0famMfjgp9IY7&XU>MTAJ`d%V4~yS>u|MMyS-KwYP6$#vyG zdM!V}0eUFb3lNQ5L`zix2H=wK-7#WTfcoXwTBtohj16XLstPm8laC_N;-sfR4I|Uj zfA(G<*|)vAV`>r%dY8C#vrvE!&@e`787E;~(pL{Bjmgl%rb<(1$IOrHa z@J_bm&x+NnOxm(v*5OT8ny4))&d+bwe`PYiSvv%27=*ri0-ew0AZ%U*J^17;A~Sl) zmj$-=A0o;R7&6w@($EVM%aUz^`^Lm{oyPhtEK8k73%nyXP@lV&?x5JDC6Bza!KohKn@Eik30yQ&o&*MWHeC| zqa<184LtJ;T?Z$ms4~;30>Y>3n2k|H&HE&z)KGJUk0RNXF}kIVfOdJPlr>ITSb7B$ z3iYbVROcyFi3B!F~T6djT7{o-i`6Y+annspiCC@ z?SRhh;cN$Vu`*#^coq!5n7fTqZQ@wYF|C;asa#wefBfG0xtP0y zY$du0_b+{gkG5xB&5+8mHqZyaqFAFbaRE`j!y}}DP?LFx31H zp;-WYx&(?fjPoOepc_kwGGj+~zW_KWB#?LJe?eKz!wwinVOOT4ei0!5k7rE3TUQX< zcj(ws=zcnsIev5x6gKXBe^d_?TZWp_iBnU5k$&l;O!MSB0cB?odszTQ3-xSNM^NUHBBKO@{4)*0I}*GM8&3p_)cD* zzCV2P=H$)$=O=Go?VZ)UZ2QH{Vym#Xe3k)ARc9&8wr+)1#APXr}1cs9}ciQmE=ni%d+rU6p)Q-dtSd=Te}_!U)T} zELFK1@w-ow+of7M`QMosd9jRh6%@x&y_W-*U3i5*P!YKCb0Wglb`-B;(Zf4X@HowMCeb%y!LPq)K0YUYO7hYC8cqvAhn1#0UL3TkrrV!V*l`$_tjVLn5W(&0KT3e+16z9JcVYw&{+d+s@3G$Kq`)x)UL-ZYV-BGKGdA(_%W{V1lY zKDF}^f28N5>8DUK11|1fo6Cz z`=T!}k+Ch%98l1<7#I}^6F^1T4k#8UdaL7$2^0a7vmGeWiJa|0ks5kmw7?7tk3Anu&E7tyKId8wzI7_$RQ}qYE&!LWau+f2h116B_wPJ#&59#+1I5fm*E{&19P<2C8 zG-V)o2RvH1BH+r!s4A0crX3aM|1mFfne=5@^?KuX;LdT8L%s1kaKjjh(TLx%vNlxR ze+cSqIQtINYJ>owSBIykdp{h$e|!9w|$8?d`4hd~Z{6q5Y-Rh6C|D!KF$v@4Y!0La}V}|g0@9gOC z`0V|`(dp}#dp{o@h~FF>{#!kkGesDye`HLOujbk364u1@eD*HHWOi;CIP^j`($*#`Jqti1nh?5@=-~4!V_)|R&v7P31 z!m7+*&E|jLtOlB90fGA9?dz9E`+H}H@1GwXzC1WZ1gL?xB%X1>`FZ!vtDD6pf4`Pl zzUksdNXokG-$fm3WBjbisR7xD9A zeP9Rt+KhLi|1zCU>&dXc3-eC{e}E}YHK8PALS^i9JY8g~%gt3{jJZ3E{T+d;7ig8@ z{t|B`ZJE}KVa8I8^|?I1C0E>#3eZ-F^xLMmm~@wVx=gRlUU>FwQFrvF~#tI4}>5?TMMwPu`=500<$e>WW=z6uDc zjZs?B_wa&aJpDBgG(&BpYJgEAzNl+*o|o5)^wvgd_i{IRpO{g~#d=3fsrmqla^v7P zFK9ddus>^H;aFE^`u--DVeiQY^QRMp*!V)9)!H{faQtUq*#h0yG`+sgR`ZFqFjV!@ zyc9Ryd4YpL&##K&lemp;f74aJaJ5K;HkL>^D)f$QF0n`jEr4d$O~Zi$M9FBJd1-(O zPS6Y+B+8p04eLcwUgw*1aWuzF5`YMleS;>c4JJw zjcJv8&NYn=gY~=kyiE^EC-Sx$ffrp`IQ#sOt{G4|2i>EgoD9Zc`B*tDA3mWuEGF4R|H;2!U{_Xwqy;nyse}2Dza(r-fc64$~xA@Z3k^x9hP7dD7zaPFiJl;Q~ z1Enb}e4sB*zW@H`5Imsh9eLMLKppSB@=uu#w%Y;9&fU?Jf4x3B2u&E0I%f=UYR|nn zJm{Z9ze|L|uS17-w)aCoyg;s}K}plzR@o#vmPts-(6gfP@~0~l|9>OVSz?G{p7^S` zfCBoiIa-F+R3*5CW5imZEo=8>s;o@rwjN?*E_4}J>1IP53q2#;0_Egvgj>`KVv>Cp zUzk@ZroAzWe>>koTx%$QCVfz7t_Hv7)&?^Cbn?cDx)7@vc7g+pLF2k5X4>Cqp)#~4&PzWD{}U4*6Z73|0+NKEkn!`04#!x1_jRP zMkY9JB`?x4*-c8xNhYI%H_27LOxD@u%_3bdZds5ci0@hqoeE7wDl5NRpiC7DsL3+#Kp}*Y*?X|V&Xm_$U{P1h~8ShvR=m&8U53Z zH@*Mi%594>ksd zf5Y7hJ52rIP5WXWNP(5E+$X#&s6L;oJy8b*o9HJqr~Y6uuip?~7miNwO7f7JgH#VV zMraf47VS;dcYQzBN6m4_QeOP>M;!+%8Lqj;Iy4Cooo58)IieTs(l)TqBgQ^3?(PJ_7C0To>eqdQ|PpcF?NdD->6qi(UF&Wdvdup1v z7H2i}8E$c6we;mJEqd!nQRf3F`Y$vdK%I&}1-x&zzXEeM$aC?`5tBPoPBwCKj;nSZI$9_cZ&Cf8&eQ%$y;yzM^wd$Ic$oaeka=X=hFN@w*w zI2kzLOT7lIqai#v+3&(+Bp{RXxPrGwgDQ*fB+q{Z3Kw;FKe=c;_ZTxikbQ}H358w? z*~n``Z1FnfY^&&^YOfKXuqRFkGi* zy~||Ko+(n=zNXFMbW((!7sC8&>1{^kudpF9p?-SCd!GHWAZy7`3Q#Bk+CZ0UaDDXn zdMb;SU-)$aB|I*j!s>)OE3MILl|+!!R8+v_4ml?YUF52L2(f=D4bZ-q-v6J*$3p(5 zF5@atcx)VeJ#vRX`)FxIP?K8uSz0`6%p+7>;uPUbV3nU=fFFJ|iyR_C5*Qv43T5}{ zI731^AR1JMvK`gj4LU8MSa>(G%)2If(m;85l1VD(IOMc1Qx>P?^5Sj}5Oyq~PofXZ zI!SobfAI?`a`Uv1nw#IFs?8vi4j+O(I1o9HYyX! zUc%K#PRNXs0P3C{G9id3;Hkp{&`c0GItZDtH}}%s$$u!Lr`xh?S3A>H%~{|#xfmmS ztfRtX$lh~%j(?hE5M4DC0xfS_c}v}XSlve5w`10a(!#Ochmg%Rm)sGN+u#NV>smi|>S*6Y>s-t=#`4@9L0S@TYAsJ>-S#iA#m%ba9; zSJv)achL1|+}i%$!Y#0Y5=VQkdz}rm^;&6`&0llnruM;R`N-(H%PSkVzW4pL{bNd1 zY>^odPJK1l<^5EFIG-Wtcbn||-sd=jHs$Pcqkx>5vT<*W)wLd@qMjCrRY_mm5^3*C z`#}bJ1&!K!^E&l-ArsyTxOk{v!}IiM3|SWU3)|>XSf4lmT|f6Z165K&gsa97RhfR; zaeJ@Gvg43slLZ=qwO}F#my-JHl}lqEZNbB+N&fK7G%0OU#A)7jCrx##)X(LfP^sf% z$^DgYSaJw05?atRqSSP?Az6vVBGb5!h3R@N0#X93K#2C2)*%p55aD0v)s?)|N=jTM z7PM>ptaPPfVIZU@I%dDmhLISFS5r4>?`olm{k_eOt`;MJ%MXu~Tc+>UZH@sU31NtO z8_hVjV{x{_qh8`{E6Q#Kc~=@N+Ti%Exl%M7e-oYNFvN)r;X&5fUA7~L&v*&*On*`s z17a51jlb~NKtdjiUH$&k3`#WoEvJEM1s4v=FFi;MkG-Yu5C2uddDS`{zfg*s)iad$ zbgJm7MPX4B#idH_Y*K&8`a50d%ZklUAC{WuB=1njKXMYrp{1rD?qk2k*SLKCTIwT* z)aV3PZw_b)^27?jW-~MHhTnK>K*qwOAcKlisN6MvGth#$hpkHP#O_V<&8TUo0F_=c zdH0Qu%0a1@WN8~?VlKy@A|TIs+)~1@4@I<~V=HinV?JkbuqqhBp;*3uF}xY$SH;hj z*&J8}*TP}Io2m4nx6JX!X7wzt(keClDgG)8cKhR^-3?&XNh{5sNlFI9E_f;k0c6Jv zi>G)BvyZ-rChwHA5hi*O1Yvn;fTy{+-hF=uFS!bn;4jm~m~SN}2|)+5{9A{a&?W8{ zE<3lye5596ZX=ye+m5C24=e{45bDQ#YR5%@rr}ZF9-KMS*`dy*vDBxUP7h*}z$|Z3 z8H<9SSMSqp$&!Zxuaaadd|w54IEV&7GX(q3!uuB;d z-q7JPH^CMlWV$A3>&Tr!Lf2A;GJIHR%bdLbjpUmxY#JNPdM1_pJ|7?2K9y_ZlxPSfMn9ze43V2-4?M~{;s10n;RM&>UkSmxc?K@F6XcT zjS5_(_~A^tNoYu!^9#f*<}qL7It4$&lUp6Z(Cp5ay(jgnQu3bhH4^h|?9v6=ve{x} z5RmX?EXOP%m*~D~W|v)LfR>iW^%(9t6BsIfq0vi2?(XTT9K>apZArd>h%TB?PU5*A zqSN1pHamxGXe3}D9)8U>9(I%OvijG$AE$a`Py_03anYY%wikhjoI{HwV9sUvP9eBfw><5`A0fxiJW zF?Mm@)HL63h%g#Y0DVvbTHH^5w2P}(2|Gbgnnb=2ONq?paLebf#yxkTd2HUN&ijR# z=6ie$@g`ZnEqSW-2Ey~X1PU5MQTVb)+{(qC>@^WDopBsRhtTH$Pip^x4Y{Pg?oCwF zeaRVx5W(fa>H%8)7&-ZXK9OW~(Q-JzMJR3S2ssrX9u0~xD;98^Nqb(1f#%YJz+>z? z+3A7`TUiO~zgnE8dc$bI2(Mu=uR8)iS`R|9Ae7&*mx7K2si$I|nP^Kr#d`>OjzNp$ zQW(6$hP-T>tfm$K62-42UTiB+9W=guLm}HY3Vu-O#WSS+=Qnc?DHF zk_q9w+fzMDQ2fBkf~O+F%9cbfgy${t4 z?O}-`ks5M%XzcTo>Y36(il8S!24aJ2=``=y0IgH3Uc^)5FhIhy7%o(>*}$0e93?1T zNL_%zXrYEEfJW@rfby&xQS$?giz6G8NOY(VZpH_M*5vL$8n!7v@}*1Z>`=%%DR!Ze zeb10FHqUnD(Z_Gl#Los)i{sU_CvSdJFr;%I&-DDre%_O@vuMFh3dNeb&yho`;4=Ny zK)jxx#CT6)24>Y198I&RpV9mSRVD!*Iu#;G7_G%76{7E4KA~>PuZj|x%`fSm?8+W- z4U828=J1^hUP>%82<)Ktn92Bn$(NZfF#c{Y_*>O`%gko8r!1oSiF>HkSnyA77y7gl z;3d-wVUpMnsOI(2#z4(?bX%*^FY@A~Fj|u&JDiAd>hO1+*@y2RI23a_Fbv=lO;5!? zPQ=dQfTVikP5yl&?MY0Zd~>S|#wF*TDcd&?mA>Dg_68ZGamhBsFV#pnL~(8a0&C_8 zs=_Zb1ZM*?3nMz-#fr-kCKGyhdDG5s;QZI+Wx5kPF4inkUaypMYCkc@cWj>Rk{Nbn zZ%^ojR=_UYRK~0J%*dz@_;h7!O0?!iQE0@TcD@-JdSivRP}6H!3B_V^JbQM|Z6;=b ze8JWxv_+@1rKClaNFN#~EmW&lfqb^4x^*QQWn6jUwj(0|>BO}DD%@j#a^wcKC?Gdx z1=n{+C{zLwChp&b)d1?ym)0K9MtFd2aT)6@`%)(lwJ;PQ&e(9V&gld%w>&)VMA6$m zHZB&ls$x1JR2t=T+0Be8*&0u%@^zbJ)^070u$LF9p1dGu0|oP0Ep1d{E=>kAmIdQQ ztx#u&E$U2p^gChRekxf2SSdXH{ZlIv@B1NCox2OSXq!&ObI!sYOR`E#_x4Z5zmdmw z&5_t?$cC`K*Z&@Jj*rcx58LG~`940`;KV z*+T1$0M`-=!Mn*PxdHBrlSQDvM>Hy<0+bU^<96n&(V&9f*z5aRrG5On%^OJM<$kF@hRchZk**WKprDLLYbUSb=CSqB2W| zCJ?bC=Zw!|lNn zF`6YSOYWrW{r*t`K4BX%=jve%T(shboD9LBXhq0?S-INSG3C?2h&SKNy6OrAeNyKx zbF4wh%w(OQtg4CEpm#gRCbYr|dNPX3JVe7N$Wh?8Gw5?4C6wc0!nJ^gKD2Fw92}7| z?K9{3F>?rG*6e@O<0v4=WxF4-l5&GE+@kx64014a&4_>cy=5(N{e?*~$Li z8Y}!xroj>Lm(6r}pmyhxT#$vFqvca1BqPs!b;#7y|57%Do2Y?Cdew&tk)wVTUT;Wj z`xXVt^77;6WbY#%$R;uce;-H}bQw|hew=)v8<|QjDJl9E8_M{D;m~=rq)3Ngah~m^ zU|e5;#D!b?p|q+6&KRx*N5^{C3LSpgMs=TU%aK)-hV5%Fu<{C!!-#o?lpul4&>AIp zp*F(@V#LN>VJ*;&rzAW>5rh>0$Ve;-i!e2#n9u4`BlsP9FaSZkiE!2!)9l!VY7LA_ z3QS7qkdg&yk1m*1>0wM5GXxb7D2jl5)62G8+HDI2OPc+vr^{eT+h8$+uH}95sOyi2oI6 zLn+dCaR}0aNdTKB9&6m}!vOOXS&H`E6KY3gFd9P$U4RbEOdZfe~LJjdz^z zm);%*Qhd#8#vQEuQjda+e)>f_DW}@$HmIs8!Pi@lm+nNcJ2kQaK=O*r2+LI{%a;z; z`ZqO{Hg{stVxoE&ls|W*cJv+eT}FlgQGT2ybWp$SfuN!q`mbF|B~;kxcJc|}YTU9_ z%jnyYJ+ANbw&MM}+HwOSbMIJ;39rm8{V(JHL1ekIHdr5B8=AE>oqm-h?6>)w!e#13 zQ=YNWKGT3xOyNh1#+>0R@=&&2wQV$&{e;9dlpw*8;Nry>%(ajT;W81d1+q}DI&!*z zit9mPh>Ntu>ABdA+Lg`}lk5BNf+9Z@GRpJU;dBP7F2;(hHS|IvZ2CQVK=7p%D^U z9Hx@q&HlYa1W~sLhnAErD@U)-DtcOMT3TDxlQ-Fo@te@2|&dG=att^PK16<`4%p`x*%fde_N!UzH~vtwOBs%C11`{eCD z2#mkk;mC~_`3ww@NU>Rs0vhTt9uv@4c~{iTNOf5`+cW-Nr{~?VKcv1ki5Too{%C-L z@30p{jCF+<@^0ie#s}RIz@ZJABF#YH9}-|sld#!oD^&4)ahJ5IU+~rL^WzSj!|^#7 z)Z?1zK097H)r*q0-hufYf!!|Z1TZKuxXLkCc;{|+mw?W=@2*klu_aOg)I>a6g1zz6 z@QnI51*RcZ=2_+VC?VxEE#}Kz^bjWIGK$=`fZgqcytE1BhC5!f{aOO)9h(t48C#yc z?2xT|V-ymmg+ni+rPwMvsa?6`r4QG<9u?`=u zhZJJ=tkTX8=h__^IsXM@HL%t8L{3^Xv4+v8{{i=w>U zJxM39Z>9@@uGCJ*L6sI=R-Y&NU0(c&j(sLJWQ5`2{Gd3ko)J**XOFz`5SmEuSyYp= znktsnHG;DlK4|BmIFJT40-I^A^&!YQW9PhL?Shf<2qM zO&5Q##!B~sa}UT=6dYoI4Ufahq{P7HnzU1YQVc>_h4SWi1s)<|G6jccNKnBxuS%k} zAns`{<=gSu7`pZcsi}*)zC}6ZE@n$J3o9F;Hg?@F7Ow9Jkl`BpI0Ui3{ZWhNS-5K1 zTo8c&Y8PBHYRY~tJ+{0+<-}qj+fhytQtxdDaWeKa(VT;_)MIh`px`yv6I=X!#VqXl zz#Cj9`yFp)ljAAbdpr~44~7Q%0)l=K|B`4IfXt-)sl98Qe|>M~N*cJ0CAQz$1C&=u z{J^C%o8vEn%)^Oe7WKF+}%*=Lsr+ds#O4pf>+!&lQiV+=)xD5djr1DCK7f zNy+g1!r)8(&}yL}kXvZ~SkHl|qwT3$BIAMSSwK1MDR6w3o@GJVu$6}6}}9yq2jB%;j?n7TB(6XJ`L zulR0k{WnFB1`o{~hDaSHJJ+h1C4@q^yidnd??0CuTEB?ufm z7ToK80e|g+%#;-U5;_M&q$LD(qm>U(kY|yQ^XX>`NeRI6iJ=r8BrRN2y;ak87f?X? zF?i#%J%+nGe|Ah3M|+ory-<2{Xzx2<%mQm!P)?=!l)|n-~DOiQ4ePG zKq3jNNXH=3Ui_9o4}o zVDWDpT86e=iGw72Q-hPo{EuV(9Hh|KqAriv%^J_EzYtJ0sc=NbRCit{>_D$ddooj^ zw4U7lI3>^5{~BS|En6qP&y*MhjtxSt;IhDt9jz^Kt$i_Z`jV2? zwU#mseh#xV(psJO?I|v`vSP>04xtyGyBD1UzM)V6{_IZlEt1l0StAFY%WUVLzkNoM znDmBw-%|%w5T$^D3=yNQ^PZ6rqZ7x42TR^P8|Bp{@LR5GtydmJECS2T5=s zvDJJsL^`>@QZFOi*jo4B&>c@Jr!eS&g8LiM9lH9S^Y67|!3S*D$@|pjjA{WQw7Y2s zMJ6^(JiaX3%Yn|7zQ-z`xGtKLQm-{Po_Bxi*Lf=1paiKCqKa;p}@;ukuBed}vfEIxPw#<$^in+5$bY^3C z#_!CVN*aaPCX3jEen0v5ag>0#0hKaN4UWD*4l_yaJ5_z(vsM?zPqO(hs>)oja>a7m zlTZazfc(oh6nNVQ^3V$?GAZ+`X9cSjR z*!NtQ<+H6hBCvmRP@#cq`M|$gYcLLky!I0yTuezVUMc$wmA5cyn`Ss?NG60MzRksPF+Icb))e4K-L4fRsd8 z@KQ5xIrLBdHl};Pb_g2+LA)<^L=Fu=1k1hT$oCVkx(@N6COUKxyB)e z`Ap{@8XoF|*oK;lG=?&G{j$$|Wl+*(_48(6sFJIKHtQSR3=$E8beAhn`02MyDMAs` z>@0$gO!c6Y*ofj8cH$ydFqKcijkQq>NfWz}ecY(H@XB_#ig2fi@B5^N|Mn$7&f9(2 z5`v;?kb)huSVP^72J?kVGcmUMj#x+?wFbF`sId*SkpLge1R0zZR(|E^8Ym15@op?b zF7n=efyHLgbpyj;H!sUEJ0e59>Y>lNB-4gzQg7(3Mi^Ce&w}|48tKYYbY(Lm?-hE8 zkF@;-bw9rn3G1VhZhAZHyW)1x^m0We;mAMfIJ2FGBnpw4ipC5lX>pz9?b?h-UyQS$(fb*EDwnv7TfzPIRzk=wxO2#a&aI zkw|*AnXqc_2gxx&ETViGm4MK^Jj@Tej?SR@9z(Z$S_Vn1L3SsZxJG^!-4Q7}voTsX zv(&>SiqGdxEjRY`147%32%@*j&NrEvKe6$;Qlcj4jsm!olj@M~Ecwg+O_#2_q zcNjECiZP>iwCe_ke}3Mj^qI|TSE;BeZmFQ%Ih}}-(fyeQjcN`ZKC-mVM3q7YlVALr z1SmOWo^rP8D25jr%01n6g&SnBVo3~jH=FEgd5sPVweqW(%u-QS*uPrvF`Wv0k;vG% z$dZc4pf1rkIXvb1H0agcvY z&NbMFQg+qcLkV75>laSKO2!UUFsrN^we!Wg`*3P-n6H%h#_17m9#}`4q-}(ig5lhm zP2=;8B8T(z#wllZOu=nY1yynAmQMRFy0rrc$hJ@&o-2G>Tnryjxn!fJLKvlH0D&^C zzsuLvH7#w5{yP|YuvKrkgX(OqQCFCH zcsxd|koB8kCB}lt6>Kg;JqF6;UX+v7;U%Acurf^DH;$mGtVdMGS`$N}-Ylz7-Pz25 z1EDI+o%&D}A&-a(bV*~sc$yOVCI=cn{^FD1VY6tHs_u&-C^5rE+pEMBK!Zxs zH_uA&Y()^2P5Qm$9677oGN0NOi2`g&Y!oZEH!XCyLE`4(+Kh)TIT;7abznI0vHZsp zpi0z<+yj}TY#LO$hsXyX(gUR%V|0P$Z|^h7!rc+5(3OrZsHWtQ{z-FU1|Zol_~=eTb@kcVkW6Rux+d!UICxH$L znIk-hi^2uxZ0j@yRah6fanQDgYw6HB8F2O7E=U_h_klUi}2AbtAPXi z0v4jc8R_E1Z+j^hJEX!3eOuM9k#4QjM*C_!58qjBn*ayZmPJ7%M$O~hEV!|??Yo#^ z>40PZcc`FE*+H=tKSqq4=gTi}MY ztUUELflh{P=D?Z!=)os}aA~F5iCV49+Iev_i|-M;SC3)*B}KM_K|$=z&@OPvC69Nqql#?HoA4?FVYitG#B%h zrW$f8he6UILW&u4j&B~PsX-QfC=eX}hiUzpeOJu*8SnuGuLzOrw-6BmYVM;dXnXFD z-ApGR*ZCiUZc*0Ad}H>J1>f=LU}6OhA@XP$Df<*dVso}|d?!VRg>Srq0Y9gmP>py5 zt*!LZ%IPLg;S7huo4J08GGKlmSLUL#a<7xQl>(F$>eo8Yd;lBK28 zU9<1wH(90{!_mdq4T{Y?+>aueKJKh$El3YD6++VqT(Jyn?4YT=AEdXE?{I(t z{+i%#MBD)s)O|C3(amsjLp%pjfd@X`RkUZaOIts%soH2tR(Upzj|&_q^$uLF6<8sU zy+$fIBM)CQfF~k{G$<5M&+mxn!WQXJppoQd(=CR@(s$A{r^}J544Ht>i!kM>DPed! z>(@oaiBM%J^3pSe#WtjIfnL58y6b!P_O@YfJS+@Lj6bWJT>Pxd4WXg<1vxn&Z!!mY57TrpqHK60ulUwr26_?(mEHZu+v@%uxM8(Sa`~_TWQo|9 zu0EMkG&sr?y~ zt9W-bEsAu^xo=s1pt-+UXz6&4$Jjs&Je?i)zBbrwjjvn_%>w8kE+~o1dCi#2g#z@9 zOv*@4&rIfT{BP7OTHl^T5t^!+gL^0EP{w{l6#TvLR&`EAJYz)2{Yw*%f?LW=c@EpI zUfKO)gfbGsEMZcsoiL6TIZ%?upNOXJS>f+2q?5A0HIlrh#r5fXAs8Oy zj`#x=rZSifW%HtOIZCIs3t1Axr zPEqcEJdP1zMnQ~&YN5hqGBgs5bj!~r9QAG>;}N90h2>|@2M`;a>9A{$JMn;6va^Lw zH3|+@9}f}$!E9Q1wmh>M(Xq+K{q(8;Z}D7U+i{0hwBQ<)9?RCvziA-IpLiJ7FTd-T z)k5~K0rCTB4sv)Mu^SL*23eOgzg$+pYwMT8S@AXt4!SCCRcl z%lcz3&&Xte&D~(Dm7Njtts$^a&8IC#@jY&qvC{rQitWyOnY6r82*_$VQs|*9DmqsJ z-%Zi4&JIwWwXnp<*)6AxIP_nX+$B4ygKFc-bYc(ZZSP?!^!Sk!ltRZ-$LOJj@8h5| z_h6-}3#v7$huW^uy?#L5a}1eAV%i$`$)%NS$0;_D>RsNNNs!o5xe9~yZhCH*P58^W z{`;?b5~)$gf@g~NSW;q3O~ub-4?|)@O~s={DFZ}pO+|ODUcFDQ`!*pdhv%%4_P@B0 zKLrI<2cQM^e<=JGtveb+2{ih2<&qYn(o_UtvVaK9(+rB?d$iTiQ$jAN$I7vsh3XN1 zT#kpdw{^qymSa{ekGp!d{m@ARh{lt^rID5I`UJSLk}PZ4F?`jroIKuNWjhXG)4L+L zdwXH5DW7OhUr6t4pPnR>$G3Ou3T~1fwdD^d#BVte}4Cz&(0N=`*|oFWO8~dOxlJV>8*d}o6UuE82@h6@Ou%mH|6sj zb1Z)b+{4wuq4l5OrYz<)=UhNw8X8G?TsP?0;OhMPoOZGj5;A!ksc(=3C2j^++~x|J zC^Q~^>~t8cEm{NsMG9#@WibHG1pz~yZ)Ul!Teq;Gr$Y;xVT8}>Jkuc!p=5R8O%!t| zvsYb7WwVHNkU)2M=0A|qA;d`QRZN^M=AJ?K+_?xnJiHAul;-(VkD@xcg)oxl1cH`B z*E+jVrHrf@*O_~vN6@@oKA1tDluRy+FU$ZON#<=l?-c-{%>fG6qy&aZeZcaHPdhU5 zEQGY0#=X$IBI$}kikvKr(g(0g7Cn7;kFGCY8ogc=eE&P=jU4dfCNa3c*tsy_$z-?L zZKp*lG5G#aI*^(5o-_@Gh*)~N1LQ`M##!#FAy>0~cRIV7-0EZL8=cG+)173X%Zyzo z*b{UAvt?LFBmd=u=?y~~J;~O9GBnpD!*06nKDv}3tMaXrF8_mi^pRV)>5SN1jB;!< z7 zUA6kMzhm&aRCSRzi~>V_LVw)nvvdC|rQ74irbDiEDsKl>UZ z=%fab&dZo-1xN}+QbX!Y260=lQO?CoxA5>ueY7)tC|4&6ea8f)avvRuB=xjwGgh`s zEPoZSPpdfAbFY&0x;FTQ85{@f#D{zfIfTyE<1KPB)1~B&DG+oCqaMY}wCr<(!H70A z?_`8jYFJFvmhv(7WjK@gNd0L)Fv*Xa>R8jnYN>Ta5B@`7MInbW6!a8S+Yf=896BZr z#GYp|BW;ny3TzTVIMKS-heVw_j>yNu*HjsF(f2hz!lgG*soi$=)fX7o{BOpqR^KqE ztxFchB-d1=d&7s{U2>K|x4&8!tXl=YbE}HtMtskOgiS{5@J_?3@PpY`@8q_TT-V84 zVVW}Rta}&@;Iiqm;bn*3zB#bw2KJz?19xfe^hp;e(8e})eOTcWlP6FEWm3< zSt<7JvT-eb$ENhHj)+psXTXg8!HN7WYIoqYE7FkC|l1o18u6FZ75ZnwaO^=44*Gxw) z(LERpwZAPa=#bFCw1t|)o-s}5?JtsQ-tY!7wz|_?{b7zcIvR#w~G2uRzRv``ub#4!1j09eGQ647n6@c{Wg1|Y@X0=vhxn37Gw>V9gH0GC^6g4u`oAA=e77VjAb%ns^Vc!a3+xr}BQnFN^mS2hP#>uVeS_7c5PQzh6!A#SN=uAaL~0z$Q%DrqvjN3i;c)-=^-pW4ngN zRoS;?V@kJZVeKEpFju54jZtm$Xan&uxP$`HdI{>_I(qm;zKv=``RKEWV}vRGz?S(1 z{%;2UqaE`>K{b#2#?_PMC+0j zNE$HlE^?AQMGE#arkyYZ7 z_hx36t)~L%_tNS)eo12{e}*~LEjPWOa%h*jCUfNI<-Nk$=w`OHt&9i??HQI6UDOaN*kdAfPK&M0ck;{BuFydj1 z;bN|dh9!9oGKXEpQ0tk(kyDl698Hn>cGZ@D^fEV*`mVcMuehxQ6LEqvg)>nNyM3BR zNw}9Gr1V@7@+nuHgRTX{56%7g$`U42#rt`%G?q2^bf{nUWvBrI>LEo9kXwWCMzk1o zTGKzOPzPUy?Z46gWV!u*3MJI2oGiql>iSKn;>isA57O3L)940&Tt2z%V0ukY(GdGk zrt{VB3pl58un|j-ddy{Oq8EKv8_`#2IakD7pBW#N;<2Y@{5UGmpI2=1#C-~*ffMzF z2)SkDO7bM$Dp5AFhyMH|r6S&PU9R?0{wyE7{%T6t@!izF-9)375Y76;Ik`l{-9pbd z*HdwlVM4Z0VUsHK(;u)N z0vkf#R+ z>Ii{j7O=KKKAzrWm>d2IFJGcC;0kw)lI){IaaZRDKlJYdrNoxIpfcV%4D4N4>I{UTh||{)2nsdQJ?}<0BQRWeE<-p%|Bc2mvBa!Hb)`h-}3sV8B0ot0gVM0gD$Rbg#hy%Mu*= z+ve)R1sMVhu%HcrrJlk)O-o4|TUGvBY2Y&L^Ssddu12i(B)T$lR?AM`j~j@e;00%u zTagImGhWMJ5gsXKzF2nEl0NiL>CTwV2I%Yf)%v$@qf_pjDujRI-Cy06LnqW%!emuK+jCNt1BuX-s?q~Ik_^&P-;RW&{;X`mg@R1TVR#TrSyqYL8 z5Neu_Ulj8%*yHqFJ|lz5BMlP)dN#R|*T7gji!h8;7jg|#p_8hawL~Zd{a5qdC@LWh z=$z+rg3VfWJ#S7{k+U6%tUX>pPE_}xqyE&X(Tj~qwoHcb`BcZrbZl-SL zW>I^|swH-6;!YruBqRX~;Q(BLKY|IDGYh7_+OfQr1+GH&vF5I$%utI9(|h&IaYTsp zb6|Lbz{CW|R=+}azG!78BG@48~Aa!Bwyb|ZfP)lU2atCAk(f$J}69LbNS z3w;754P@|=)@lzC^3=!)tOW?;B)#!wtWJRB+}P|N8eGuYnmPXiSG0_5cOI=WLrlpE zcNTq=7){ABJ|8>2F4phNm9?qyW5uvw_S5@S#U3PMIbNh!%U9E^efD@Al%JqNS-zz| z-%|3ucu9#xy;viEhJHW}-!eHoA`_OwWf)YxQ`DTMJ&)R$A|zTD9pYs8DqYbVCu+v{ zY_CoRdnJNSq~;KjpO#XWAIa5We>LT)@4DKqU~qTm1YJL{El~3 zOvm75Fn^^(3=Tda>pwt!=`8Mo;OcBX2(on^BmX9f{njmqR*+^fz zky*B_3X6i5Rl)>%oDB7KZCc%*xYseN_^6$_eFuQt+&cjlFZ%r0eIk4eeiItce?mID z*+5ypBi3b3R~#PPpZBXla~=^IByEfo_vqgpl<2&E+>RP6RI<_+Njh72|CIRo(3>d4BbqX|UUyLR zGDr@}+RQpU*uC{~o~W9WF}hC>aak^v5Sie$~p^)Y-=3->)DX&)3N|;qMTKP5KX?ZOPn^IKZyR#9^YDSjAzZrL!Ef&gbKl*`4)ZY0{zWdERs?DIsefM{j|6@njNc zEagRiX0xL1K9_~5C1JMfkO5stU0wTyv4`U^Oy286gW3LXTELU-Kkujzd|_Tkj^lhi zaMlK-$ordCzGJScc9iVQ%^IEYhnkj@vN-IjO?mOZ-1F>N);@7J|#;5N)3=7P*Us5+4 zHcN&GElF;bQHu89MvHR2^{;rj?>*IUSNl4Wk3Q1h>7Na!+{dRSVPaB!o|ybwi4JA! zl#ws7Y@bfJUHfB-)w-w|w?|z&%zXMJUIoN_-907^j{HBKQX)V*;%@2gDaix3p-?dLxoGsdV+i;~df&gifp=4(Z6`FiLI zsX65UznpTc!M$TsK{Uq8F~pFDe>6eV24mhR$l&*iZl4Qle~{!KGoFt99by8}8+OCw zG2#MXYI+GWi&Ygj=pzTW%+N%5yZO;#0q1#9#Yuu?taDf3Jn*cmyyS(DM0;}%4mvrh z-!L<2zdVANd52->gkXxG5Jc8+bbUZ{1a%z&*A{I8w961jM-D)!rYR=Y;d&Ht&eXS# zYLwrDM}~bHI}Cy<2tv6IUfxDdsMX=OasABHOKQWP-E@h?%en3;Vxg4GfYzeQ@5P9g z(4!ooPijugHECmzKDtzfwLf6tl}F!SM8IQXqiHEy6G`83C}})E^QmMs5*l{9$Ade- z`#Y-FV;-Ij7-?T9g1rG)kWu->v?59EX{W@?e1kX`MJ>MKJeP0YWkEV^Mtg~7GRCub z+Q@wqU=+rSAI=q(R_LIWq4SWBmT;ioaTC+O&bvLRkU%+<>9?#M?&i3#Urm8R1amB| zfWGn;8c~kF34Rx-!P8f8Gb@jq<_NG&B zP7~>bk#z=31sb6<&Nlq}CdYGpg!!#_}@SijW9ch8!r0nq+E(S{7fNA|Q97fnq zK|x*I7;9Z)*O(T<6nw09)r;2N&U`X9af+kQ%=0A>li(W6^JM^rlYNX5EW$EgvdvrKr|gcJzN0Dtmj>B-DSUv?afqR#*qyeV0h288+!?|S^nu$ zF)U&3F->fjxA2qaUA54Yv&pF-KHs7Ku)LbOnFHORIFXRld@qgqacp%sY3*2Q;<#8N zk3Q{wqSBAu2XEk-O=ky(RXB*H3snUp_q#Hx#!+0za+O^}a0l*Ey$>j@{B!9;ghwO5 zuDnq#BA)GMB|su_ywXj+_nSI4?x7r(`aIwKscNU*7&yI(ScQCnYrR^jux->tsg#|D zsUN5VonDJMvqSAvM=b-&{OnJ}ORl? z9}P}9V^EyLEfJ_lE4x;<0P4zoWc6V1&Tx=1e27kIBWIzW_N%m=Oq?z|r^uh@}24uLEjg@T|-2p6H!!2NdiVamb@k zh$)K9%cwwB%gi`pr@tioVSjLj?R#JOkb3V1%=CK|1|2-?<362yZWkItBu6=uNo_!_ zf@i6&WDda#KR2u>yS5bIT+vPyR`&3&Ju4H}A+RL-0*rXT1blxfaA(!*u*V-#0&=#m*LO6!p)|%)#bb*gJ+MS1Ws?|EMK9CRyWNNU; zjpD6i|9Cv`b`8ZKxS7}z5x~Oh?HfRJG0_Kn*+>1_H_X_C)VmCYQ6b-KN_PIiPEYy} zvwsUtWbL6fk#_nHuY%;nNcc8#upBo?>Y2b)`;37hyUjN&hezw@K5VX(f&-31`DK6! zChscWgLCbcBAVZ!`Fs0obc8-XsxovIxy|ZVMok8qBUcGXqJKjL zrZjwMn%lDzb@aagpFm*0M;w+^nOcjB%Gdj;SkIN!N?I}*dm=_H0&nB!S_DuGnt6^T z-|w9s?YCb0wV_;nM+&p+e34DweKYwN?JzL&^OKk!?KpTReop^%&;Gs&uF}7q-oN+m z8%CK@bYX+xVRkJeQz*vH_o#!T4+h(Muz!4ZoMVHk9$=15M@~x5V&R5HV2X@*kznh- zB#coK%D((rih`vY<&hesG~m+rwJ zS@zOZdM6S~6)JyJsF>;8fGB$-z5Lx$SU!7QgtW*5=V39tAO;)`KrV>knCn< zxDOsA$A!?7#GO5te%<0aTbIw0{eLU*+Rv247TQv>kiU{neJRTG%jv(D^3ExeY?Xdk z$gg~oYL)uZB%fx}t>pR9@uB|TH%eVrU%5vg3xz;lj75T78W&Mg-ke`0sSf&=JkTG+ z@ILv2XuVpm{z>C8q0Pr6q3<2)(Fg(0@r;#SV#Qam`8`QI~fRpw<@=YJl|GX_+O z+%+zJvEij6zwbP7Ot6M~G^MxxpR4fYvJU6a|7Ix0a0tTC&5vS)w=+X8 z1BVC<6{%ZK6hXHvlf9vSI(c*OjQl7^k;J?AC`f>>A5N2d+UPVv?3LLdetG%~ zQv{`&VaN21p5oaqIK>pf)_(d2&^|y+O{rw3Cf@Y` z58UaGDYC3J*Dj1n&?pD=jge*a9ZgZY)O0$Iuc5O^ky@?UbWp^U8h?X=UVL->grY5} zId;5P1Lyb&+P2r7V+RFi!#)`${_Y7yYtrh(XSzD!>6;>Z+Ui7&A~2b7*MkD+ysc97 zBQ=?>5r#6E-Lv+DB6(Vq>7Zau=1_0JQz)nG2{qc=ss(O74Mi*H9=WHS1VL{oHCrnH zfQ`ln^pu(axmYy8 zJ{RpcyMe1Q+X2NR@np0?MO_P0C|scZu9h*|q3CS$>>|BcY=7v=%xs7HGIZ?1>&d%s z&aU!?fB!sHHte+JGBXz8+U?1Rf8U`R#k~GIPj(2y9XH#dXoGZr+-wK?*5tH3%ByjP z%9TLC?Mo7K&Y4UyX)x!C6>&tO%;GXBWlvP)zbB7aiDfl$>F+n8Oc}_bD9nK=F<_&Z z_iUh`E7&ed?tk4+3Nn+_Fo>|OG>q5Qa-A{y<$}+Iw42- z)?@Hr9wSW%L5m zW&)dGjv9+e;(vW~&?u&@ekm@!eEy)%qu--o(ISX?pnpjwdl1{I7n+34a4U{PFPk3`ChRx8oqor+1Ms3UHtdwQROeQ*EfGLTWY2Qh%p3(%CLcBlX!D zVk@XV`@-;=4?qIWs0I#D2>V)(Tm1nDN9BVVu>=GVhRDjFr5A!wGJ`G|Ksn2w#yhMB z5p7$8vN13Pyjl%F=b#9scaEvofYzwvSwu+!F@Iv^1_%pDHbyPq0Dy^526~LFdX`X) znF;HkF;I@i+o>cu80J(5dZ1Q-=2xrkZiPq+qi;UKbl|{z&>Th$bB#}R^A$PhexF^t z8m3r?whtLKr3WTsdevZ5-2*h$LcAFwX`$LiMnA1EEka)}cVF5YKur>o8a4go5{o@M zPk-L-UK_QzH%V=*{hxGRe_)PyzWJCe_v%5wIlm;8l>Uh1)i0$`-s_P^BfSTT$&&P1 zluvbB26<+2Y4-<+7#Uu?n=H$FUA6wahktPlgJ1IG6+;X)V(Ci^U>457sb-dnCwlsK=7gC83Q-VzH6o!Gl4?Ea6HH0T|p6T!@`U7b-&xa?on()*qZgY8sLyNh2faH+Zy25cSBFC zj7bGhQ}bH?{U9sP*MIr-rU-`l0+2AGX+Y?XclX1AA47LP9G^ks;)EN<5nS5HgK&6` zv$X?(Ietti8sL5gNw{H*WNHNDbY5S+P#ourp&*=@uCNZk8%lu&4?0GvXzwG8UMhM> z@QO3bbg1}R((RCy?w-aLw)TRd6rcX81()G?31Y!z?=)a3(0|RLbQfZHXo`Q#6v}i` zSc=z@00%mFx!L>6CaM1K#xoQ zc&r>-4bs!0fi8oX+P(HEN_{Vk!`-VI!?6j2@l$G`_IlR*T~KSCj^n=fT2J6e24DFB zju&nAM41n}B7XsnZWzCux?5$n?ceV6V99|z0q2k+TzlDI!CMRtZ5XPzk%J7tms65~ zpE|_7;D6RryUhFKf`bT11)ZVvS(<^aI;8;y2yqV)`5&;^!>FqTT$O2=*$-b7<#oPE z7f16+Tf}s~5h*1ZeJ2LzRnt*0C_msZhafOUQZ_}ZhJW^wR9LW^$t!GGAq(DZbet}; z&dyOEh6jRMy&a&UdmJ(Aogtov8k7VL#d9zz3>?ZZP$;aki)_8l=HRk6e@j0K^tu{o zVbGddq+9^pgA_fME)C$ghrv6m^>!J&wcvP&VO#5YQOxxQ%2wyyz18|PeP($A9kaPQ zv&-LIB!3l~EVmxf-0n*X9ySw@*m-0XGvfq?-}&|2pGk_p26rdjmFc_UpHMWv0)O0naBN%!o9mU7X-)=Hv8*=G&UEbbz2th!2oi*AbL0@zG(@EdT{(6mWwG zVUd|N(PRRg8WWm>VWIbaFeCvyDu2BvHV=jb4oDCfSSXPt(qpCz_@|2{;QMk0J|d0} zmX$T$`5}qlFnu7<14)DqA>C~6NBUfo1ZtS@4wwv*H0(tA<4ZNRza6GTXXSXO zyx&IW?}a4$jGgF>jjabam)MWuDqWpt3=&9^)H7)QEJR$oR59eq+xD>tVSm8p>VzOn;T1T>Oy}R@A(C% z3`JW*ICm&CA`A~G&=*^#-9-UVY*G;h@9&{#B}?uFSWOX}rr5lq-|>|JXDUU!GPV*H z{U}S^(r*noLn)fXfm4-2!%!#6cbL>vV{>N1?cgxwE)uqyo!d4J4-*&Ns71*aN? zpI412FjO&9^LI`eOtP4!p9whc$kzv>eUgj}H{a(=Q8oR zl$|fd1S~s^vyIU9a{nG4mzf4dct~%Rl2f23_m^Lj zmC%%|hExTMJKL_jUgR4Y2rhogKfU`V#FYeXzM)wMV5@kJ!={12*(ekF?_O1LqMr@Z zw3NjXChlbQWq*$PL1Tp@eN&;h3+b(5MApDia}!xUQ<3Elci9GlZtdECl)&=cZjNz8 zGaJzQ*9$BM!2B))%K@Ab;}U_^IZ@$g^M<$Ahz?tzbym1`$l!smY7ZbHxf;d`zXgy* zi0f|JK*T(8O&}1wh;Cu1d6K*fMnpnA&^!x7>j<^*J%0p{=2i#=*g-vzBv{90(z##z z>?Y2aagn$X-iS^LsCly6m9_8aUesu26?8p$2sb_C1+uXWtSAp@Ms$DfotBk{Ak!VX zjN?s@`F2b&W0aSNFf#qS21?nSa$ctCt%5l7(3 zk5HPBQi|9weY7GZB@bg`5yIu-#(DY3&tS7oP)7HdI=M^(yt2VPKw8AfAxOYUr18{a zAb&Nu!WoEog@St!DMDa65ZLa+j}N4W0m5dSAyd(*8p4OSc5uVEdYXxS<0bMc$TzpiG86xicnRN>+9Ij!b<#$qNk%J!@W*tW z7dK^c-&pIFB|qz@_k0ZIyrTjF`(wr6DSyCda}7U4{pbotK>^(j4Mc%oJ=j1LGZ6FG zxX8uh&{`MUcBP}^gTsHbrjB>tm>O`}Fr6y8TgBFTvnun;l_rtRF2ybV?we34GiFQ* zz12tz#PF1}8HkHj_I)bOjha!*He9(^%%`pwBi~GumsvVjrtp=tJEh_jihq2%%6~Um zDcKi`8Gn)_7}n#*y9_6BlnNvVRqnGo)IYz0L(t2KSdWgzGa>xQTm1=fJ&7D!yqf z$a>{3*2VI~?1hP00Gk}XX{`jK)F@UaGlo2hVh1Oz_ZAolGjRbMlu^H@y0y}#Ce1R!P<@41h@B!d^39~YyB8)Ll~ReM4gXCsCKTEprhrGL)~rxIt7 zoD1lNUXG`Ed3JVY;;EbI+v;2nFJLUZifyeZgf2k(TbWr|vvt|e?M>f-gbPoAfPo?x zRlDjBoh235|BrHWch|Za0fHL}0Ld%i)~f|{!CSpx|K#}e?9JZM@!2V7LV0D}LYe(Q zN4(N&j<30InHa@m=~A09Xn&f}Cby5SbQyTf3eBloT?npo+54Jp>jg3~rL77`>z)7h z_oG4Uml5xLKN|c?pWZg%^-Z|n&02)7bYf{r`r8*CHTGfMyuRgbO6q#W&c2KH;DxJ3 zdY?9p+gKq9y;^|T;J>lejM#EK;_t|pHGqNqvX))jOI0n011a>1{(o-!Ay9HK+ACT? zBVCztJ3Iwr3!*)w;W0BF(l%kRG2!$Thbuf%-^y^)L*L49t5}H?y#Jtui26cyomZXL zapRZtw-#Je@$0{g;bM%jU&e58#+WbT*4hnt6~h%9qrZyb>W!3Fu{-1hC>#%M>v%6= zxK1SbCENfsoFkCv4^cD`U6l45%@g#<8J;r+y!&M)no6q4&k4)v@q9{5R^JaV$Ln**l zgpB@R29zm$0ZF=|2G?zjr~sJt8F25TYdHp=&d~Vja;tgUH-GnKTewm3vvw;G`DHZQa~<=DKcvIB9R*c$fAJPK%-5 z+BGtU#DjBasCRd39?dmg0b}3gGdR5ld6_p+RkwL-ec>^%p64?-6=&eh-Wo=vs~t@+ z%e?N0sW;Hoj$0_s*s;QyGwz`w=y0=WMpxD~Pt1GizklYhWcE+zidQ*7oQoaL>v|^_ zJD%c|vkqgwzwO!#xzzD|ubfLAPMRTH>T09ut6cqc;%>``mp7aU|e49Bf8Rb!pt35=kI12b>E~7y(J zpm>9DP|5whSEs}lCv0p6XWYcQIN|&l+T_0!SM27BH2nZ?3Y-zsg9N<}dzx4FsC@@lT)l0xQhj3O*9Nh)ZQW>nfz$qt@60>J;-Uuc$yC#Lw zB!9wMuo~`QAv?>qLUWpJ^f$%Y>96(cH?l?@065Zf)iWKuVC(MCs++c)1Scxu4Gbrf zpl{$Fme!e%!fXa7jClGqEDGKE61|I0tN3jBTG1q6`iuHo;UYfJno`2GB|V3u9I4o} zXJ(b?1Qs)N9!e$b)ig+kl}V+m863eRUw=q?;B!?%LeDcmMo_jMW1!w3boSB7C7gj^ zH8lFA1E+_0ZoDvMIn)D|N6<*}H%i$plT50+iFxdO$Tpuc@d{F`qam7a2n0#Z;*64{ zJ&7luI6>($*%aSruh)ebqU7H>le`$_d>8UUvY7`Ui! zRQof%$QPSzJ&`9e*)|vDALPFrrf&uw>SMIRbFNjHNzGk3{r4hYiRBYhl*rj(=;Uy& ziU&^U!2z|86^@LiL6PTWMnuVXh<|Sr&KK$Jr)g`{lF*zqRY$$8ohwSlphFMhWCUek z2wUtN8(`All#&22MmIDrR(liR&5?Gw&`v&Jk>I?M0LV~!4Kx{`sO#;gc}u8ms2@-2 zuWsV%R$~KmeSgsG&`7AQI2@K<+B1ouKqSIZvnM+{%a@t>m4&9}4v7t#Dt{UmZ0o66 z^KVb|g6fsz;Gjuf#v(98ZemP_YVNJ^P;X<;s_-I?;Z%_zHub*r851>Tjw=)Z2N4!jzyPSEKLp0+z4p{Z+{GVLdh!qfXK_m0dV%gP^H=D2hdv zu99@EGJxe0i9btu*4y(?)qb-dY$f_XnNFwG`i5@;XcP?PvzAVp|9^j4Tudqu({!|8Zj(A$wQG z4`&dWxlatB3e@!Z%e@VwJW%(OpVsMhnTWeInWvjHNjFL-Gk>$VEmVi!l7)EtF6aQz zw%hy3!OitT6_+celA^ij7YlLq%#+E7+eBR0r{XnYmQSdc%j;C!Tg571Qr_vFFI3H% zK8L(_xENv7C^+EUhHkmzH(5GASuJkeU;F*JUN{&rMsJnk*ScQkA4QACk={9hmQplS zR0>+eL8&gj!G94lU3%J{?LcB3&U1l-SES2LsTFMl$5jVb-H%pPoR#8<_5v_2{S z=j7yp8RPV7v+NT|o>hpDLgQ_l5T0~gh-0z2N;mD*(`!}>!F49D^=viQ3nvzED!0cv zQ{O0rq+TbV(%X`@s@@?G$~h!SD%6e3=Bm9GD)zq?L7U)KEtv z2F=`nD1Ss1p6Pvo`d=s*c}Q=S7!vMWgOhv7|6~kfoabANSVwQ;B)9kdWPhD$-D%ZO zDsEKiCaKQ7w%gB`+-&+l@qM;mTnkJA`vkD@2(@46$`m?J1=u8z{!|aNFE-ALh7zi{ zxysAF;6EX)cEK9Ol-NXRy^`kmbmEMR(PtFl0e^ujwq#*(}PQ0XG{R%6JJC#vyo2qGYs;QFz87B`;c!+ZQ!+!}6LoZ7>y@7o4giZ#8{J{AM$S1oF#J7i_;s;p^ z9qo(V{GI1}HqSSi-8_spJe;@yzfoF{)G?(WP4C+pPHw=7j7pmj&n0kXYM~N_=VI%V9h|s; zS9qEL=xPs~oPd{3o++m)Q-B3$V&|GRL|}@eyzIc663!~18JD}Q!l?j}tT}M>zt5VZ zbDoVT`YpTtlE@0%UQ-U;YD1|k;lhY5wFxyP=++}R6#yZDbmnhc2#E>ch#ELw0COlc zjEU@*e*EAxf+(sLoH;O5wSR)+`F*|}8RnQQGx7B~-JJtR?hg)*f&=w|5&Ze&W42!B zbFUuJ(+AOgUZt$-zf3rGPfxXka6Q9T80tjIFK@`6Hx|`X908LBF5e~ZzOe`D-8Wmc zmxLa4hN`2`fl$vpJqj0JV}X8%Jrx#)9|Ekie8?dng(2#L&a8Cs4WEQdYwIpCU|Ts;+(q>hLiWM5e@P&n|taxVHeYf(wFnek>i*`X=*lL4S8qSQC5N zAEJ-+G)sxd5h_W(Dt|ZW>O3nhlB;wzUkD9;CEkjDKaam>a@l6HJsb$m`=B><+Y166 z4&B-$7vg+yb_qU2nzu_(G0Ti*(JvVB<2s_%in$+{Q$2B4PJfFtn^fkU_C;g_T^nT; z^uf7{&;iDDlYoc5f2d8sL$)9HE`pbAeZ9`+DzLCOdgl>Tg8(D(`Wj{Dy+%n<1@&`6 zf-Ib(dS0xv>3Ma-amIDoABuIT>X6uXe+>R%7V*(0+b(j9q-5LGM4|hFCV0c>{Q(&Oqao*)OnchFV zJ(4F&DMySQF{XGxzug@DPVNQgpPb!*de+ff9a9*fGepI1IJMauk+%Y>NEv%8V1s~z<$;oI4(J3>X>)L|33p%&%L+Q96Pn1T`0gh{ z@PBkah?UUWYK*$7zI+@wMe`pg%MD+Pi;?99XLx!h2a(>!$T1xy2@72?i^JXkr+WH# z)Iqk$Hc%!ABjs^u?p4HmD|8tx4jTiyj#hP%%+)Nz$qAgi!$Hm=pQM9xIb-chTIDRA z92jF$5({dzrRA7Ofv6l$?j|J_%JOCdvVTPYK^Ue`E;*Aq1 zoqWu*Pu6LzYtd!%CT&%y^a7NnN72Gi0p`yQw1KRTa60Kwv5Za!4JN<=u3Az$sDC)W zZ?EU6)oAsC_Al?IuwVOd+pSD?UHRe}S+WFLR9h@fCW*c-RNO(MWLgJ~B=PQjn!Uf%6*bm!oFpYb-9c*TL-f=HSu99sHRi#=<1$bxq?{D68k4!~G zN~UKPpIrvZ)tQmE$jFE%o{%Wvo_`cRXhMfzDzi3DvGbG)+N$+}_O}y%P|n0)8K#3( z;z4DZ_CXYXa6<`O^)?K$P$CcZrR~Q+7QPJE;Z>CWP6386o9-BiNVi;H13X0p)S;2V zQPZI+&i+pRvs0(8k68@xi+DnEK)Ny_HqjT@Nvzf}9I%s6sH5t5nOt27TYq%=Lj13* zEQbyF>1Bi28bx6a$Agoikcsy0^E6y%mr1%(q-xXR0&>ful*T;(S%pzWBV$`pz{Y+V z#1_k*MA881bHM}IBUoE))bcOB-Z6fe4pzMt)QeEL8+7e4ZQ91`{Z+I|(wjg{TVdmN zqI6E=EumHi4S5SUjL|}kN`EJH!=zs7qz{d&p@9JDJ=XPJlpry;tFA<%m2a@r|6@R| z)p3!mmijA`hC!u<(i_hL3b~EK+K9$6Hmk5$VxG>_^ck2Gg3h09R)Oh4Lm9|W60b+2 z|N8X+Jx4B^@0Z@%G{C})qPEb5GB~OW4T==%>!heLqsp~64t5#4)PFDUu)fvSi)z80 zWkNundIGSLuFlYKNu$#0WA4Ke>;b^o3KQL{`MO&l4ZoB>-BQ*K(Ju7SmQ|?RY>Qy_jeuX{`&Ub?E8e8%^`BAYi4Psw?2{SF$f(jU|NPo&w zxB?V2dwrm_iZgX&27eCmVpIS4>K}zj<+L_R;FJh)pG*N50qV$RZEN|uNZlJkUk#J? z#16rJjYgR=%HCjfCcRZ3W!ayq%&a3)-)NKeM&I3QZ8gV2Sv3>7@CbdOzIJVqyLCNzB*Ki{~uX)nHUYpZy^@c}#} zU82WtfBvifN#BZ|32GLSv_a|UVZ<T^%h1p$cz?7lU{do__{B)jaB8~G7zR`O z`i#*)XO9g-bfjTYj2Q%|Fud7q_Ibf2{&kDtVC*|Mffg=_^EJv}!qsqYqx>aY|E8aa zx2~^hbHPvagKOmw%{R+BdpguCtq$iOuaQ&VA~jj~8pKi`$033vWysD-%93oLGCB}q ze1I}KV6#K=&cnHvtTH;cR-utoN~aBXI3r7j!?1@UwOxMP;7(s z#Kzg0rD&Z&TseipD)+inS;5hKE>MrAAimk$6+2Pu>@V^s3&_G#M@eG9Q9L7 zx$@*y-gHIWP*OHrg!2z#dz(CJmBcKu^XBV}2`BK>8Ck@gmc_|BTGY#&y50yvKR~Hv zLr}9=*94u0;$dIH*&_p#x&xUAIQKN1iPHas^-s0H*Iw%Ls&sLumI6vNw+htk_&zpE zDSsq{UFV&{&)Pp8P&Nd6z|2}Z0M05Qz{ZscR!D%6#j%qId0oR>4wW;)Xm+^QwbHQn zp=wS<{0gs1qrHk6p2IsBzDgr0?W3kxodr4^b4>{<+qa>;ecuWomS!pHgHff?(K7|` zW~tIx&yV1hX~a`^x2|7jnMV7lNeLN@ZGYm&+HG%^5)y2rHL5jhd}0oEBR!a3sS(fl z9f0otdZEU;MD>`az1p>1EKap+IWzYj=s#<~6RU_75S$?(iMGxrWamz|%G&-W=bA_7 z5pWKU7fQz7EJn)>Q&3U9b@r7-NaH;Mg2ca5`XeyZ`nBng{5V}eN}1mSf5<3ao`12} zLy+Vl?;uxBxNhV+(_tT|zUhhe1e%blKpzD7u;V*ya0_35z0JipfQQf8IFWW6$8=QpS0n^fE@nd{X32-FbAQNqX0pN; zw2jxeE}JdQsSr-7GnuwFIp0}?d3e4P>;>mLg*|q&o=^XtCF}E@K4S&Yd8jBaeR;6% z&7J~kFp(VEmw6|6l15>!NY6}&y4=d9FvKFd47bZXkmbEyN7$?0ai3{xZJZcLX^;Up zGq&LFys$nr-oK&t0)gedcYiOa$CuWDgH-%R)Bmyd29Y;lG*S~h&0k=+o;YR2X&Jvm zP?n%c`{)PFyDl=^>OeJ4;l@ct(zBwc zBtkWnG7P-^PyUJXA~c9 z+UwzDZ53oQKP9lWX)h0rwNm#)n^fubZ^@w9xC$(*e?Sl{s65Go%aKDLFCqn*SX|Txqgx? zA_R*L&>@3Gr$8mhj_XghJGQ~p??Eu3aMLiA9(gk!u^unCxsdTjFiT(>~ zZ;&XsbU#0BY5rJ(k+|oy*~Gvro}9T=FNon1-88v|dckcYfZ+LHWWr6=eLJ z3@F+zNR;#Q^^0U4F17PpB2$8;__wMm+^ubcI6l_NqP@t}krskhTZPf3KPKL~3B4fk z)>dx;5#Oo{yf4Q>1JRk7{@vq6T)+^YM%g@#H+eF6b${SfamB}37M=alLP|Oyb_K$_ z2WbG5UIkT)RRnVLpuVs+-+^&eb$a_!njr_MU*FHgtt#{rykmu$-}GZS$M?| zVPxe61AhUn?K=Ya_AY2jD!3zTxJ1mI3ga)LJdBs(?}=h7s;4Qa(ET(x4(HdwI$7^W zt4)3*jGbt?(4Z=vR**)UrOXr&|0P{?nw}G)&y!S$zDd>#X%g3kY35k;q%uIV&~%>z zV_@%srsWziPS9@X<9C2$0JYxyI!Qi7>#Lh^4SzgCDm0_){&|vZ;yhfQEQ-mlKIuDv z0JxH-ChPLN3Rh9E7Jo2I7El-BWIHP!{5L}uP-&uMd7fNc+yvM1Pe#8)Oj^ zy?+)MurrA&5t8BfW0mz3$-no?fvs>n+{Fl^9Npv8`ViEF{ai_q3^WVS`RKKGLQ`<` z=Ml}UQ$ZJol>s9go!v-eZnC+NNrzdUZs+o$OYfIvpqYM;B>X#CXYt2KbT4G6Xw~Gg z{1U_p8@njk)Rs34(P*}v7L9H-z_3UDNq>PYi9C^O#W_VVa?+`-l|QXa$E?hUiI!s8 zu`BxW9{^Kjh2>-RLvoG_8z6o~E(E z5eQU@D1n;BMJZA9V}?jD;u0g0vN;Mtl+KwHb1{^x?tfgF z8fEv|*yt4iTON7fn;3>{4tEp7;LX8rVi=U!cOw@31QLiM!4F{`ETd2|h^`~^juv;K zW-O*(g)m%m@T(BUWMZzu0)iB0N9&tsa=6E8s4Tk?#&7nj3KO4c`thbpqE_XK>f+l| z58S=xJ9Dq~+S_YCx%SBF2L_M!YJULvqcq;0va9w2wg!OFqs}?)(*W4Qyw*^Bl(XLQb~!_AtcB+pW9qm!doRwrZ`cn8 z(GINSVNC6CN*)H((hq!dy=%2On%jc2@-Y6^=g52eU|}Hc&`UqE@dg8ANoT(0Q0|Fl zvlgGG_?pMQB~EefePiq}7I)~?AKAKtYwa=)eseZ!C%?5hII9nr?tk?<`rg3~xYqB$ zs}Gm)9S~sY?QPSMn;K?>wZ0yXHPvZxrkSV}xSsFOYdJC;1g`B%Kgnt>tMjWDn6;{d z`^~tKLAcWI!0T(N`8yyG7Ows~cy!EC0k|(bb}D(T8VHd*(Uew+!qOM4p!KgXFs5)> z;NJzB#ZoVL@ED$@`hPFQZK@*P7Q`LLq@cZ2^_X>%qM zL`$s2ooI0%tM75({I_AjS&9-5sTb(#jince=?~`U*=YU6+R2@`7ks*o=aOJDO+Hoh zck67sk+}-d;`Js^CXPu@nxU|Hi?NsNq>ZSE>ZlP2*0HkF?RmU z%oO+HA5}8JWcQ1dvaQPGdEf|mJ8(Qpg=2cWpsTz$qI8ZW%ZegJK_n>d<-6j zWz5kr4|~iwBgAYDMh83{#i1dy%fNU@2UbQhFkQpRPJd<>jAt9xHkg~J%+WLNfz8=r zV_S4^E=BK9;H(?9+VHOmmjb;0eQalT@x8Fi1znWUyZ~I;J|ZBihn_9W%+ioQ4T7}R zKs3nOA-lp*F~p@urZM8S(BQ5)ZvaCW1K`E2`v%a)uRBK2igPoDKo1k4hR}lCJIBxp z*f9pd3x6{84Z>je9ir=~1w&x|UE>m1XBjx;RXzxE0+gi^w70nW>EaZaoiSmlFg^6M zhM051=zwm0d%QXri7s>+K1cUFQ`=m>@`c=D-I=K8215|OVwc=Ild?)#Ep=gMugeI+ zP#tg<4eBf!(d2C{rNP|V(A@BqZ80|u=;%%>e}9WJC%h!ReJ@E7%ne1qpoj@L4IvN| zmi7b8$jo8fjKtgY_Y=hIW>@hX}s&R*FI-Pq>yQ&v5n#he^F z+D+2w`7%jYVLp}p$o`+Hf9CzJqwW;2_$;l0yb04RDnSvWvsp4Cx1{!2kQ8E|uTiR6 z$M}Q|mj+?M%;%Qi9$+RAEo}~5f~K&VoPURMjP8jh-@V}VTN#6po{C7paFReC++ZWRO%{9SjDIu4 zU}fzuOBZLGXfDB=^0bTpN~vbf zT(R|FW3H4CJcE{jwkRg-c)cJ`S0w%$?qo3#8PH@25qMKY1ZL3NAN%P{(~9)=N6s!~ z047-6sw_sgCk3r)CSCyl_)(UP(g&i?(bUypM9_p5fIduyQ}j;oqqO)}+J6a29~i?8 z%HgGB>j|}BliKaOS1Jwp8xBsB$t2k>Am%;>sC zsB0swA;Ue640H`hk3A7Xk!ENpCppk9^o<8Qq+2WNd9>?((Ua_SHmKSe+2yG`W1E{<5Cb z{n@(=`-4eZ`6ZZ#`G5R6n7~oN070?_$ik00_+>c|xh%^`pm#KKNg0@x5|zLrH{Em@ zt*`Ryzy#)I9H1mjL`hjhqw$KJCA81P*p-a^4O3Q*u(U9DC3k6of$)?WA-@dh^EL>I zU~cl5cO>1nlfaR@LOW#6@YtOE?D(6@AihU>*$S?f`n zXrT$mWWi;ctkie5nW7%pZ2JPOfP@^olAhK=WT|YLZgO}htkH4ED{IDDSY5#exKd5N zi2_A^CJ`hQ$Aav$iJ*SyDyL}_m7|A3UdAjc7l%jS$bWm*f|gM!iKkzZLv$&BjBU~i z$zdbL{_K{F4tQ2zIs1~7unhc1pNd~_qHk2b%0iYQeODYx%hEEgO+{hfQB3rKh%al> z)V8Aer^i<0Fj>}RnKfmZdC9``=>?H|<@Rk0K#y_=D&d7-GR88PD=o9n6@aG^ImC`* z>pW&|Lw_xizf^z!Fe-kpSmwQAy1#Jd_%@2#Q&}S!xlv>1cM&rV!ZSvP>NJdQBA6z;{(bx zii!ez8d61p9q?3?Tjh*S`aUWXqe{o0M! zI*m**HDxk0_2Q;XRRg|i1np`!$Q z;^|Ebu}@ zp%(=dx~4~pn0=-akP7oi=HM{o^r~N7CIWRX7fgRb5-88$EQw$*L$V}-9eiU+MDF!6 z3plJ9_4}-mifyf~>Wn`Wpjx0ELW7lioB#rbfjCCbgbA2lWvc!}UMhCa5 z8X13?A0w5mU?hhWdT7Y970h&y`lZh+TR}|x@K6=R6c9!SJmbz*GD2mMvTFP=6FF*& z$t@AVOxxhB=GY2}n4eJ$rRLi|u4jyEr$4gf1F)tZ=^TBp#{NA9n6m!49n~wL?jO@s zrWnp=Xp;C^toUiXpy6PN7Lj{j6O%)*M+ARbqCpiN)PYx-!ZFsLulVR|&k&EF)CP+O z2OEwJIYr^kX9&uV-@t-Go^UOu$18)82E({$i0Leh4n~V%gS~mhu&=}HT5=TeJOZ4= zluBQyvsekh*f5Oz6V8UAX~jVq#Seer5r{u)^7Ri*C2pndzdb5(s|e)gX_bhEr4oM! z$ZR~M8JbEQ;C&c(DQKlDSgDqz9-8dVC8e{v2_I&rDn>9bj#)wLYgRz|7Cz8xW`lRN zOT?eIVH%2mN7>^bUahvdH8=7A zY@=*X=GX*r8I6}2uNP5pu?*KAShUsjx<8JY{PWR^lcz^#C$C?NCeP4BRzq!$8$cv4%Xe;9JmbS}d{Baf3+7=Tfuv%?1}O|7;n`a-`VU>tvLk1X_F z7pd9h>lB1;biv5n;glE(dxmnu98=f zwxPiWi_!XSXkuix>y$%APGvY#ZpKYH1=+2HGcnrHrCMhDvj>03sBU|MDSt7&ZH(SB zPGVW2@-j}dJeXgHiq$VI3IEJ#SNUgV7Q^7vb(}|;xZ5HtRkK|%jP5gnDWm;UoJC^U z<^N4Wy@bYny(^>KK2~rBO5;9AO0yE&cvx#8q1n^mQ3RZ_FMif{xWr_PDuyoD6qe88=tf zNEtG3-Uf_e;`I^zre_2=i#T~>`6jg^!HSS`U%rh9x$1qW!pY3wcyn5mL_-x}H6K*9nI7SK$J@AceTTK@@Qaa308O17s!=8Y^y}ng@7g+T{k67FLduo z2S+^z*#&SY(|Z?SwT8zoz*;n3foOa86y?ASKi}U!cnIZZ!l6q`-*x5W3_4qTLpg}d zkKO%bYaV|NJ|Z`uy;ZD^P`5TCtZeO=rzmV;<%Z&5MU~+=WB+F9i6vXdkA6?_c8iar z+TJP;D%$c=>fkGACr?@n$qpLxa1-D))QlN7f7SdZC-gU--2z7yy<-*Q+bwV;(SBoL zBf<6#2Q*r|0>LmB%pkh~CV%nX4Hz|p5EdQkmF|C29axn?*L`W;@M6EulZ%U+Zz11r zA>VHyUu($sTAq=A%1Ey|-TzvlUNxlOd4$)y)mzHA4bFG;blyg=nC`ax8o96R4Bdu! zN@EO_dF#EKu&xJ=qGcq}TC!W!PGm&nP|;f5?`_0vtBBkp%I0ajY2>o1jll@Vq1_Xl za2$UdrBc6M>ceFPR@$?n*6MlP^quI{Vu#ecf+X6Qt4Gqb173a3 ziJOgQZ=fQx^j62WH{j^(h;cK&D68HQUU`%MlEKqK!)1@!;j#l>xa^grDgPEN`xbvK z``3?_0o$@CPA19v8DTPDtD+Q|Z*WYW<=)tsbGmtl#1{c(RXEU|ArUYJ!zSvUVUT8i`V<+sMag5OwKmvF4j z+x1WMKQ(hLg*hVCfqgJu`H=Kh$IL4tWHy5FTRBno@U7KQf}>djg>MPU$OLVb4O2vG zRZ$}Ph=$0U_6}v4{aiD0)NowyTkC)*UZYk()?Mh=YSQDQSAiw|ss^rlC&qtW?Xew7 zjzFP03XQpTs*yvv+B0T)BJX97id2mgq~dBQLT(`;zUn^Y+A;$+=$Hx8=uARqP_=&a zdt$0~Nhtp5v0|!N^~1>0G1+0JS?g6h5Eh)*65qVx7pjsToZ z5OgviBVTP4TLRAX8#a59XiNBKFM1dfnDDD#@*i{cN3kj3;_SnQUrm3s^`45hK44ZO zl}qzPJKwWEMK_<4bdkMDqeVOy!u+2M!#>Vtp26c_v;6VP5&FP2l=V5xK6rumj_|P`Pj>9QDB{AMHe< z$Fotf)}9~_JQ1KafmB&LVr&S7FjK=pH{lEFk5TA)kNL({kS%d);Hov3?A@ z-C=Ed6xD?epZ1%`wl3g^C#1!?&KK!qotX0&7+a(lfDBn96rY5#nu}d9&GIw~SCd`( z$U(JrwN0+K;ri_#Ba@ml(cLd9h1tzy-W$B7~aPMEGt zYxfk7$iS{lQjoTGn0c;DQhb)~utJ4e>8(n`QQa?5|KzU?lxyJboXl_8;jq}S@T z@QUGGemUJ}LUj?38u%DQGz%Ch9Je{))-@PO&Y{clN4B%(N1d z?y*2ej_td}+O!{^Te)3a9@3h%D;<)}e3dd?<$L8oz5j^kKs679|C6rL;WAbnZnr1N zav7-P0zwB`mEk2 zY1;tVS+KVfpPn^LN*2z$+04l@RV0EijRGT=N|1k%2_5n!wHJuKmkYx{Y}2Zzk_~l5OHVT%IfncW3p?}RKj?y^GqO)J1_zNuR@y9A4 z8hun3FI!w<4KDA85LO4Way8Jt);oci!_@NXo6*)>X%ocN zwpZObd#)>>CwevOTEVbCmJ+>kYSFzurM6esF%0o}H8^TN7Io84;{*u9Wq@h93nsw& z>!oilc4w|TbE{`n52#P!0OR3RMpT%A&JYTPNH*I5x#)VklxvO6#xuPGUO`?dL_L2i zjiX!42*rr&&Ias##>r!^&xkjK0Eu|ySX!c%x+p}VnL>a}yePersll0xGKPTu!D|Ay zXXWvgUJs!mCa9x~b!9ud?<*95n}6A>zFF4@U+A|YoJ{53YKeRo zURKXA$ji+k7A%PZy4T#MT{T4iCOCOYUPcbdV3We2C5!|)sbA1VVHMwowsTvi@|R4( zSaop0oo<&*evdAhR~_%xHP~KA^=nBErj$t>K!s+|4v(d$ebU7F%b18p^atnw* z#QLO#ICKd>ZQrLW8=8%-*f{#x`ZTp_HaH>ecltC1k}`OP?bmsl0^)<(yVv6Df12*O z{7#&b)o_yDKg+unn0a0SkAdH29QF*;|?dN}iSiIIpyyf$& z#_nrc9FA8e;Bb^O0gu?P*w*t;u3zI5*77~#y-LCI==9ZlG@gO-XcPnG5!*n~k8iPP zx-1-Pt-K5ortSR5zb>NfhJNH#7tz}45Ooo)*kycO){?DLl2;a}PvzgsqI^%%e$TIk zwVx)RN~(r;>ukG`(BOY)@p==bp;U>-pXZS(Y3ZC_7!rJdFPA7Y^j50nx$0JtiRO8< z+6ZBsbitOchbZo9Z=ISy)O9_HlPLa?^_iBI{u#MMwakO*cCF`HZV4e9_lY?>7{q*e zw0~~~wC!uZSem6pReKJqy@2uoJ-TW;vl6;J^r3YK&hp^1j<0`1h%sFHQ2ly(OtgKZ z>rP{FsMSB6$J**HnZd~$y)GNf0k6C|3_s2cPVVr+J3xy8YBet40qS4~B5fOfdd4Vo z4{&N8pWw8?_&@MEO%OtM<6xANumoh;z$fU`I({3xoPNGuEfT*^d7SuG?AKSZfS zkIGY?TxymFnaY1~5#^tvXdUFAl2U#SsnZZd|MoQkl^c#7CeBX9BD7+8I&b_9pDSht z=Z)AFB&cy*6e5tQF068(N`(Zq9}L%peI-a7Id=2G-o95pn!Q<2M>$r@%u-{){!qlA zw#y}Bp?LAQ;zuD29_T+CVohO>b-_{q|CWJ+ouR9faF&1Fi`>)RELJPAZVouL!>*Gl zcSc;Knn}?AqRJ0qsAf391ATR5d77-RM!h`n3_6_41D)H!C-|MAQ#{7ujh~TOb?9tM za)M|3Ga$i~OP=ZPgO>2|5 z8J6tRjUs=!@z^DPg-z_uVo6L3(IJDjBu^?0Tugy)Xw{er1GXS`gF30OUpn8iawyuL zh;U*7&$wE*De((IRRt}EY<|gQ4cQuTOL#Wx-{45=mrK@=wi)LE#ch6tBQGzI2+P|H zE5ZUdzr&H32ekqv)&M@#afOY)-k$#%~16(W~7=m!r0nok+Oe-RV4nSg~HO$w^^R7%)3j;qpIZz zdngJQ@)=Z;gUiovl5H9!pR7p;4q15`*W9s1;dm+ED9~ei;?)e!XF#1(kFz%(q+^Dv zu0wxs7F{dH>MOX)kro}p_!q+ zm5o617)u$PHmGAp_%>)UBXtd;W`kmALNmcPG>u42Ehc56S(A`Zd~320s;NqqR5X(j z5{qv#8nKi@m%?!ELKuwSzj5UiBKvikeD;5h3uEw6SBVio-zZ9iS~Qh@zretJ*97MO4}wi;Zq(v&h}u`(#XFJZ!7Y_T=h#lXC=*2C-19t*Kh zjf>K!-M39f*$xTmv{^QtK3JMB2+ePMwAtut8ub$Ebm?d}F+FLD)I0|xMZ6*{M4W#o zPbC*;Nen>e<%Ce(RLSZDoh5MVKO_oD*Fz6wAZ)%2W%|32@E<>l-aZ6>G)2X`aaFDF zcj+J+Vx}7hGerZCL!6zpEGaq)83suWx9?%B69!^!PQD?t)6bum$ET-9KOet;^7_^3 z+1sO&S7)cjsZJM+_ZT_fDNf4siadWK$gY#^auFnJ&3hor4g_nVh*G&$*J3lz^C->s zRMa@mi?2)4xQi&bScdBl=R0(j1p}}KTs!*fTU5d;l$GM? zGjkkDuxB1+;udEl`@<-zJ`t7k@>85eV$;a~n}m9)W$0e2BO#Z#$W$<2tF?c4z1ijr zcqfMvh@q+IX}^w>{O6+=Cr^*gPF}xy|MvLj<6n!|*!j+X{q11?(Qn`VTmOjw3Qp0q zDcxS9=hv7yXbhg5MGElPj%+$I3Wsrw77qHVMQ3Gz+wtNH{pc`QdV5Kn2I1bVSX_i& zI5PUdY@0f56Jy96T}IayFbIE(mHTbXH!&0aFmT|Y@Yo8PkDZC=n|?pT_^IBm8xNU@ z)u4I1q-{1Oag-2U|IyDC zk#?5e{>ZOX1}SWB?9bjA-L#?y0qwo>AX!}glkR21z+EvmBuy95+ovlbkC)KPK@@*= z9qTM8Ywee3CDAu8ky@4BKF{^V0Y6(s;AtT@0=k9(VC^e@FdkQS*4i;IC4-6QZCBX8lWo6x1D5!W4fRSJS^D zLIE)8bOsQ^^ce=9pnCtx2!+P1D1mtR1VBtCJ^?Bbf~l+d4V~}}oxs#8gQF85UGoi@ z@C}*p4Vln#rTZDH-%ttPPzm2q3Exl&L!uHInfTuj3I9xpgvQH3t!(`bF=;OCSHdD# zImgroO&$nFmA`K&g#R-rgvNhP!Xpp>Ildtfz6t{2EWCQ6qdwW6qMJ`iy2ylzTFCMd zg98$-w#oH2Twfg?wgQ6Qcm#mF0zAJq3COL32iDfQiT_tHgcotf7!i0<(R~&xH!YW! zE&+H(2b)vyaQ2MP0jALJNr|VR4-`Ddd{J5~Saf+nTZAN!K23ReH5Gp+o-P1rZw$8b zFo3|;e6ME_>Vc$?WKcHB@=QGG!n}&Y7+}el0$E}{78CjI=aEbRjcLQ-?Z<|(8Q*XMRwGO%OZ zB9I8<>Mc0X-#0?Zi8~P|Imm;@#r#godWfuUtf%VMt*RzbeM6|=g@@Cg?lC#-)3$-&YkK2a@52)1Iu2elw42}`xmw=EpKA8gyg!TY{pup?TK1T2MP z323>V3oJtej`$OH7t@Y|gZ(3HuW{dfaJav37|u7pT65<&iV&D{GoT`3(1=JnkKQ~> zo0+{~o73@LK9w0hTCxJ9?@kywFxX_nc!6>5Y#4t#fVi{CxFx7_mKNidSFnr0 zQfkGIVP!A2tmI`cw=ae<-7Xf{bYtvfk|IR3?+Vz}niU=M;&t!V@qcfN;>Xg_Hgu2< zs7&V{p93nVTf zY{gERghsGeN&YO^t`|N6j#KReqqtmUwe7{Wkn?{T+zF0?rPx(6f?Af*Rx#LUeVL?l z@tEDJ`){q1_)V?qSbQle;*F}hb|PQBNgjmDW%5bCe;GxrL8WFByI|OjGnqx52~$+2 zv1w_83z=HI+Jwqt+-CC6W=Q#uadsN6ioIJ_dF@O2I{=DfgSycobrxjX`SqSmGnO*R zx!Zqk7NIJCS6_l{7G*u6s$fD{Mm$R-w?UqWb<4JCk5vwh0$t$vj@}La7l+f`wx9C^CpBU1h4|Us0CbFhq3iEBeMkmuJ5dJWoDF;_0%d`c9)&@-bXW zvBGjRjk#|)2zT4ltfqo)h=KQkZLX_n{uF=b*Fp3-oaf7%s?7bRF0S|~UM^*_x*Afn zpid$ksBBkDqAMdfDA{Q@INfffa+kSdt9Tu+#Ij_OQcPMwZKUm@^twxgNBj4%*~bG6 z4OHOpLjEW&t)3H2UoupQPCHD+J}|5%ZXi@TC%FzwQMRYBVHl_sXyh1!ls;@qmG^%p z4y9?NL4%CNf1HZ1s);e4xrSjmP0BWo(lor0U+jIwLvw@Hh90AMw_YiMitnOGRRCe( zz@(!jTyx5{H8GmPPwMmSs2+E?Kf4EAh;S4Wzr$t+&^rW(pLDso5m}z z6s2p6uzsK;WMYRbYk&}S1B$QeoZo-Yq?Xe!95~hqEj>en!9h;jA!r5#i{Y0@m^^tR zv*>#rj?f@65B18=*dPihx}|$W;JB!5CsZEJ`k4WcAV#3aj~n+FLq);y(m^US!ckD) zn*k1T4s>qe$fo_=9xWDG&0ZDOXmN7shY${X+WS7M*`p;#Qn(a5WpN{HQ+0pouYKgf z)>7vv1vrN3Rtg^zNgKCV)Rcjke~v1EBbiuLAUkEaMk(q?hLTI&r+eg-u7*RM4&@_% z^6OMO4x&$i)vv^{h2S8iW&Cty0|zN>(_2@ra!2(os@0*4RYvpy!Er`k?Fok$$=XvG zYO`*cUpSuVvU)a4NvPL&S{r}oP%f;QDF0GdVfxi=ejhF3JSwV?^!kdr+Yt^wg4(Su zl2W#K1uHj?_`iq9&?8Ram#!P}C;EE6JCIWnWR$ zSpBldqP+F8H;cGeR&H&~8s{#7bETaIUMr3@DP(HOLRYbHW;EfU1kQgxoYHL9tm6L{ z(dV+LRbADp-@Lvw19o4c51=ChXFfYF(Yh=~qWzicDz)}Zvd%hJsVxA)xk=%SY4S~K z9VtdL(px1dJF|L!&>Lmibkenstjb7xp#Q8MjLk1`4mO-H{dJ5dIJuf(JXwyoSESe4 zD#iQNG0TMR)~DBBFFt=9!b*e3_|Vrk1-Ck;Z|Wi0N|Rv>ZKMG%sLM22c^D24DGx#D z)jPmT_aXW@$av{Kq^Oa)@uI^=wa2br2#zXyNKqf1_pa%e{^Wf~dGaZJ-_QVN0!jf~ z*S0XQ@9p0MMo!g1<6YZ_6g!IkUOdE_MvSIM!K)oo^bl;-XOn+!pexmn$`#X`KSaL^ zyGNzowbPey2=+{IO0}=bqh|M0bjU@>0@TDg#6IVoHzpW&IrNMdT3W@b8rO|!d#E3h zlt|03VSbxwW`sEFx-tr=3B!x=2#sIRlC^uRyadK@4i<&kT7HQk75bItxKC}1@rd#e zv#AYROtly@M{|EXBH2{|bKudeh4sV0#k$N$;K_F#<$9ncwmD2nzde*(2I} zU3Skw{*U)Oo57%cZ%jN2YLDI`kD&W*h63K#wg-eD0>Iu z4#f^&?{0q(C$gh`A1|__SxRJ|!vbLK8IKOH+tghKfR2-bWn9m2u<-77=}Gsu40V5vM-$OpZ8H~baZG%TDz5ua^ z5)Bvvb%LW)kLQls2?%NeNALa$!QQr)La;YGkbBs&&&dAaCfdK_l`T>Ksxqy~+~fOW zXK2iHk3$w7J_$5kWVsZEeAfdxhHrL816K!zA5x*2ifjMiKZ?K4tF_4D|B>2!KbVQ% ze)oSJPd2LKxFO%)OQcosos{D578%8FxbjgAs=7H`N^vFe9J?(jPvf_L-{slGBs4eK zK6dPT>hsO56Yc#_-fi4IhCyfB+owF@Fwb0jR|8AcP0!x1yORNrx#%A1nne z-&g)^9$8MszHrwXSNVPL=hTQI2BOjdXKT~61hEZz#+{&lF+Vb0zI+R@9yD_K2k=wr2yKT^4)l9AQX_KkNC!#jAi z+31oAGQd})hPQX&_)doz#HtMkE03Irp8 zah?CX4bxEkJIWph@oKfrrAqt{RoGstNL}VW%z{NEl!>%*g>e7)QFQbn_@k){f2NCJ zn2PYb^jJIU8Oz8LK!Fq5MW`4V;V2jay;TM#)0{)ib|W2GFOPnGe|Gfq`xk%5uYNvz zUU;>BIOrqK1ww!fWO+jzdlN#<)!qv8mhi*|U2x6b|w5=u@Q^KJC8pYK73bcJaXnzyL4-E@nrq6vW)iqYJ z*-+YFftSyITO0eL2;74&Dpj_U!&F5i=hN{)(bv?}9-g!<9ftluVNaN6!INNtLa=91 zc>R^5yLt)6jo^VT-7}F~)((Z%w0*^)0kLQ-eSNi|fe!fZ+3tVwc%knT+ySwRM9(g) z4hiN;qu*L2Tu5K}7@&Eq;YDv5t8DnWFKEn$cU}YBJ(YQ3z_bPu)T6#rSy>Hew1;~W zTATMVV(hI_ko7~RG{6jfE=CTpo}m+`W$l~7tWet*%=87AU2nLJfzcuKRw<7w={+mT z>D3Di_GTkkd#8VBjpEdrS5vFJ-?aCEX_sP%9Ar!M#4`oi(kj-Q!@o{o_PJq_4d4zb zilVg@kZA^RzgQ)~Sp0DUa#&k}^B%?1zTF9)C8>A|DKk{@eCE;TT%m+N#?dEXdD6pj zC{{S`>k}r28zyhU8suao&?sKPhkw)m6MR>CEx$9r`AvWS4}GVjnB#am9Yr5UZxy2w zhQYqd;M2amk7%e28NI)I8p=v1qTf&j@xLBILrUX}X58Dq2e?=LmJV)|0MV$h8LIM$ zqsE?%!-Rmvs5(21+z5;N5K9$Cp?7-HwG@itl1a)Kp^xcj9SotaBedI&^uK;ek`MGv zhf(y7zTbaF;o|jrdE+Gmcpsb!YckHV=jlTf~T(hch6q3aTP6k&*mBg*q6+r)XeJXtW-2GoC(UP7rYn??)7Qb7WF>R4g>P0w7o zOPg-@V#cs)Ocd~;hxO`kfA*kjgP`nW1x?Uts`6r$#RyiB_>UHudUkA*&338FX&Tf* z?Rxm42@o@7s|5>TtU06pu#~teiB8rlxM7S9*1+O5ZBFOQ#A5aF5o_k4{_VHmD$2DW zCCz_ff3imxPD7^8Fb|~~U9OOYQAd!b!s?E~TGx}>-z(iUIp3MxyZ`+U=R3Q5>f0)0 zdA@VBj6Mf{jgsr&mpBZ5*{;hkG&GI*ru=1(&cW7iL=CGLTJy3N!aUig=}j=dj^`hu zH9{%?DgkOjnp91zMu>H)0J(d?^DqnU1zCTxHpvVh<4l$*zK&O7uUrYGkS=d{QiE!g zB(*X#q^v?ON!9crOvB_u#1n^RvbMz$$5mV=;^8C2S;XN*luN9j*ni>|%665%k}_+L zhdfm0J3qx~e!U3A{C&|Iwf@U{2kOCcaPOY@^=|Kouq7Y|J%bP0XYi*eUB~k%`0IZ* z5K||X;jFn{^IhG>YdrybjagPuuV&IE%w%FZgL0&OZcC!Zb~C@juLM1tVNM z&*qC*Quv3 zh31HsS#?Y5uNB|mjbXSu^Dh!=CDp;xG+c!|X}~KJElph+Tt{Il?}=V1fNX!U@vphV z_NjRqevB8vi`aT-)E8K%28KiVotmG*58`IagR|(mlo+u1l6Bp>i#|p|HGGO9VU}Ws z(%m00@QSrt<=vG9QF^`QNdjJ5tesjJcYDG4PWB;QGq){xaSgg{AGNpbNqQNsgOiIi z6bo$KyU$Px7TCG`>&v=x-zI-~ECdv9amU7eavd)h;=c&Qe`h6Pk8qj3`S$^<$SwJwkdP}@~!<4|TF$S-7`0^qQAiZH^q?0SkJndk0chH*jH9(x zUeW*%A*|e$wGVq>9Tu4=xdU|xwEOw!q5#jyjoc8%>FNI-tm#XwxUG2niW+ZO-F+K8 zhCI3)moB+Pt^6q_N5+3Z3f0??ua~a}5QG8^rf+#trCQ^*E`~{8YBcPRF%T~lh%E|* z#`N{XjNrxz^|XsLkx*rUWKmgtN+G<8YTwDF$s5UZ7Kt-L1j{r;T}NxjrB3um`Tw&9T(BPc*ppEPO$DfmoZVRThMJ8^bCka5(#@<0HTEjE^Fj#M zPnrx(4XELI9p!&YBGGT8m#t=7>E9^%OiJ2sbbJUNntutK{C7Srno?b}tw?4xQnlxUhvL|T|m;<=Tt+gY1`=CDT9SC^M=}F&Z-38W} zhHK?I1!T-JO|jD3#~5=6v(^Rmu1l++V)X~Uimeyad zr*iV2h*Ks8O&>AsN~VbPCY7w3c`wiuNtHR=D$uT45TjUd7*-^!Q$sfM=Ww~LC^H$i z$L|E1O}l?z$<5R5$bo?6*7o}iZY*K3{qngJ{G!jv{$(l_X0f~pK1OLK>4=icf;&+y zR$pyuNEqTx*lSe-UC@+Q1GCw_9vB8P4E=T+^``tugZgZZKr>@8-}K(4S$P(-B%o<6 zdi!)!pLJ>&c00_=*4|SF<}9D9nh3>wPg$Na@brIWulT4~g+5~t5T9Y&GtL?e3U_w% zW6cVn_eZz%&G~Mx!sN&L)jv7kk>~AvXSaU*=+G+|C60!X)qmRZ6?>s3WAPE^9S?)c zdnHvoW9u5p7*9>Xcye6t#i$Dj_^Jv zYUdmkUNBCc-BOMwAEIR3V@bkK6EquD&Jx38O;@eF-3a3~hue)X2ornC z4W{N&@4NGzf6w-Uf6sz_@rMND8{>bn+IoC*5(aY)eDq;hr?nGA2k0Q(58r!);0$Q+ ztMD=Ph2A8v=Maj6`j({!8|9NR$;#ODL9qCko`>1BlatBT8;g^PH!utUk47|Q>xsY{ z!X=sl`}Lv?u{Dap%MBUkwF-i&c{ONs*Di_|%+A^>Mt_VG%eBkIiuaGfvqgW)X1f)h zt-)E8ym__;r%>YZYz>Y9z)(1KbI6FXy1_WNAW>+EU$?`#1xM+=BIg#0rOAhL%WAug zV!Wa1T)FZmtPK-N1tUNkW-Ilwn>^+D_G zRW{H1xS^+#f}oTQRTVPpPgwKr}G!U!}n9VaA1or#-*qE0>{1>a`;+y44xcN zkZYdxgsyJY>{LFBb%H`o8CH2?;%aQ9SCl@2T9qFc3BRnsFoU!vBTj#Y5WJqa(#;Ja z3r`EbdFwT7mKo>nrG&Vm_sH60oWE7*v_P z7lvl+z&VO^=r(Svb7|E8T%F%Bm?rrAFWnyuCa&|P#WzfKZzd=jC)|sJFF&j z^B1>H^3o%9^Tw---TZ&et+Tp|hy!KG{{erAGq73hq}p-icxBhp z<#wctf@h590;z1AJ!{l@26-A)&Z~K5U}x5voX0~_lyj`bC}!DcX8OwpCY{1DXcrm+601>{hG9Ajq$xyh|v!+cjqBHvx&92EgbG$rL}~?(|aVE~m|42QTpK zInaEmO<03Jad+xz*uXqDy+Xn^O(kWES#fvjYwp0zIsJ0NmQGF37PaGU+c;u~%Ci+4 z22drSCV1SPGEE|wX2)i{*KCqX0`W4-gaC%T!%7roHB*0J3LXqORr7h+&r<~-LyA#Y zb`Nrs$j9Ggw}+_;7J^5f(==eJCDF`Gm_@Nt3-~?s+smT_axc)(966p#Wi`TJCY?cy zFqlNg*9e1|Zw4~LV8$D#iyV`9RJg=3$w#H-hDtvIBCaS_9W6h7en91BpP$jvjSAQZ zeRjsQU=M#87Hnaz4wqsCjhaf$+77T){z^0RXTDKEoAG@}v1JwATJzpiS$>bz<<4<$ zJR$|j3M00f6M1_{5685zo{V{TMDat?mGh%fa7&MPDOv5^R`)QQxjh~)l>3O6-qqfF zI#W<4dWh}E_lrNGXLhx=;c;n3O{6rmod`+9BWQo5JA@w5%tm_qym!5H@!8(?B$r?J zz4D09>fe`X*-S`sVZi8dv)O?km4C+#GF8qgY3rZHk|oYo_DQQLr6a!P9rJBPOr|up3Ka|n|18aFztA?y-9b*~SK%Jq| zni@J!4bZ4LH88nyE@kHE99zTyyHH9tlGbtvNAYrUW}f20)EY{8@0C)j`|-;PNopZD zBgMSd8O`#rNy-oe;uW4o;0(?-`u$sh#MFPJjulv+$^k7vVsetlr4DBuAq}*~=nLbl z5$R~xp5F_1dM=ZNuE zj#(kxsKeIj*ZL5~W!+Lxbj2u4puC*tn=pYWnlO8y(u=syS3 zD6cCP&FBD(oTG%j2=t=kGID=nRL$)Wat=*W`Zh^&UiuUY8Ni5i;s1{|{Q@C61(>)>Ry+UD|_ z4r;3;-i=`{$?US)Js#vq@XP7zSAl-+TeAu5QlT7(j7$PJwBBm?$GU&YnS7Mzvf}eI z+vP%x{d|X>M+OJcTLM%RiWck03B8%!6I-*}@hDGEI1bL>QZ#;rr|;gpIC*k(cKrU$ z(b>uIt1gjZ7A%FyA(L5hVO?gyV!IKIN_4n6x|3{o+Rvy6kWG%_+QSor1}GY~8l7YX z;vXkt1VtrEpAf7wjzxdNN=X!QP_bE#osE-?LBK zE)RdSz$ib)?2M`8(43wK)dOsnex8$o2tk7&Xe*Kqv5C$@FZ1-t#fLEXl z!dt9vGwP@DW*&baC*3X>CAM0ZDy;pz{+_7mNk*;#9Ex?tCR_QxMI!&-yB|IFGWy_P zY)?vh(RD#RVJ508Tr)kGu6D^WUHKy+1+`_IUWZu`2s8rs;|d^INc0`GpFU85_1Vvv zFiQ3g@4kY=vOV)qUk~y3_IfY|Ixd`rL_}#K&Y_Rn7EOOZITZP%H(w#fhvyl5EkdjJ zRA}}4Lu_bu8{d5?e)X4ly+}TNl_2Uiwr_z4Vn6TS1Ii5fEYkxupFk-APLOe#TwO_^ z+6(c&ks}88aR1=J{_FuOh)Qmh7%sj1tT{`kM{23v72d@3&F+DGrQ}X8Wd!fpuPLOl;?y#Y4{FE||aQDppMTwy{I$nl1iRk$>7wYFtxON1E#d-Px zgr5;YrA61d&~&m-7d*tKiTKgcB3wLA(rEhgHa>ri@?5AV2lPR!SZu*YvJ65mW>3VI zIl2)Q8U;lVS~;G}zT5`#>3U`7qSc&UXh>!+iF9n&f z>!RS3a?2#rI}`jObl|gJgJ>D8RJ3s(u7isx*et~t9ex?BTqp;f!zW{H7^CBiKSl=t zDqA@a_jn{uSMV+t8`uP!l)g9dCA%l);r@SYwtsKv0IE%qqXVc#G#QGwODnAkt=C=* z(uQ+H&+Sw1RjSe2D%#1`jGQauJy`1hF~h8GF6mg;Uzv!%J&_y1Mc`&0Y~6}Zel-|v zwo-tf zjKiOj&u`?de4Q*8JtjK%GJ->wzSDn(4k7kV8{9k=JW)(r;Vn=*4Cy+6`t?FqSX;&V zv3Yw8jtlmvrD~tG^$}*b*+a`-czo*!u?}qJ1X691YVsPo)bE`7zmb5U!Lho*W)58f zt~+zmhTUf3h2k}9a7@j6)&{^E+&hpW-+Sm0)w&ZXAYW92GFEnd2f1jzq0E29FY4K6 zK2e69qwu^{P(0qi`mnP%j&nJabQ!L<y!92x(vnbcN+gs zG|{d@@%XN}w0oZ5@A%ry4Q7oCBcQs z+@K4B284RVY7N)oSeo_Pg3o#W`~pd3v(}M25YA(we0of z zuwm&RZB>+r{SS>Dp#*Afl0fHwA10S=Vd>JLb&NCgVrd+!P8_FmQu<|9mJ`#Ou3k+G z2}&_u3OS}NL0e+b&n;Z=%lB~Mi*Ts}MsJ@~qxw#8_WJ4T$2!eKJ}obzr7$l{@Gy;5 z$;W6BB$CBaML@S#;zJo{7N5%CBV9a-!6U@G&ht(7`0icNb2d%Hi{|ft3(Y$+T}S!d z3yI2(?*8)hPy2_n`?CiR9?%7%JgtO4aTZ+0pLJC>iFr?hk5QV*eJ_sx>C->aH4^Y%`ZIpy?@NhM<$XOF0jp9uqJoqXC0KFNB2j|(yVOQDbDS=94< z884;E5eIV~Zd3wcww+&B3y~=|q12OfQK_0)Sj}Qrs^{otn{JXUTHc5qEQQOq8wEyc zY-K5+-dM$^qRU8C*6aHD7jxS@fNrB%YIs?C5YJl4fic;YfG>sde5N+Y zq=0-*|8)G<_ix^R9-p2bKixBXXulUMV|(6N%6>WWH)OJl#yP9<(y91UJnw|=%R^yP zh#RwWpQt>$2l~&JDLGw*`TSb9=PYewpImBb8~IZjm_qp1YmL{IWxB<#T1FF9%hoNmUN`-PYAOC@%Y-V6{{A=5;EA6dg)scG0io0`p zvR+52#18VjOqSYM{b}PBSg2d3uKZo)a@ShC%u_Up;S3H}G~Jd>-dZeI3ijkWUM|vT zt#6!3``goh@>-FH)SUup&G4vWw?DDU*b*jEFk=Mz8aV9hytP|Z>U%QvcKseDED`P*72(Bza(|Ah`l2U+|-D)&M;A`1x2RTY$WlHR}} zX-k1BvY*{HTq;JiaI|-$@U`H3eatQW(Q@`zv78Rt-cBh@FY=QREhQyw&owu<#TO9QJ=2ux%w3$ru_I< z=A==duxG}&=5>Wa}mD~TBDd;T8o z-v^$*XxgqqGyb8%EKTF=^ji6{Cw+CPE$c?XQ-D48ure-bwLE(#jjE{_*cD#u|+tF zCej|ZtO*LQze_m+P@Y@0d+$14IKy6l_6{jlOk6E88tUgFEt{`Yl(7f@ldVbop z*ctWN;?P!+z+3tvzlzdnyuM5(=Q~=m$HDnd@Lf|{6^$1A`XZcvI7{ATQHroKAOT6p zt)LYEl@>=!iczFQB_}YNB_VKs1MNC#4p2K!wCAQj9~P2<3f)rHR?T0;nNF(D+T~-g z_2HGsWN(%Vje?d;zj%1dMRf>O%cXneEEiSFahA)o)~c;px_VLO;oOrhkc8d;63iul zF_^Tk!Qg+}_h3&=3!5}lJ=44ejzqs{DpRcH^R28i9DKTtmyx;OYj=8o^P+IyS@-U% zC^=N-jjECQt_1Z8ekp7(mEp-b0W@5HP>`oPYhK#AqIk0z2MrCW=d_JcPKcN6Z$&c- z{0ow6KTzD-;+zr4watt3NtiDF&#-I5Tvbq`*3#aLI>pxN=(OVNot{lu97$E$)AzlB z3Kt8NER#K*HGLHr2_mY0@L4-sqja`y9JM#NQG5xuUxXJ9*NU}UE~~a-mwvWPKDo)I z?U-@Do}d4ee5McAmreU^bk##2Zb{n!l?&!Hwk7zpYur|40E4Fc`gc|Sb<>#}L9qPV z|5U|?t$WM2_^=hofOfp90>tl5q*=I0*5X55cX*-gHJL%EOAVWUT-lNV%gm&M&&oQL zz9opQg9bGdFz5zRan0@knTqxK?aRKhmm~G%Qvo*)3?S~|8tkVlu6g~H9oEBHY#;O} zh7lS)+;d{?Lr#4(`d6HoS4kc{4xU7*ObC|gZl97=>>8ES8D?T0mx+!viwBqVnxF3o zRir8pX7ZC%`Oc$%R3_<{|FLLDlYu+)bzsp65%D9Lzbv!QqW|7T>v^;%&wfEau0dMC z$1sgmvGH}diWDcg%rL%?26L|SM0N725}YnAp~PJxdDDZE0bkeIyomGzZXI0Q6a?yv zt=i4$cAdv7N3~I_PdSw|$a-U);2G`iGB^L(d&U{nzQ`StcfRxA)NsQua# zN)|udUq&CJ<@a~R1-*^3yZ7%uIN#BVOH$;kPbDU=UYbt*7s2sA(DYVG8dP5xT64Av)zNJUKay@SpohX_?6!*4j!Xt+tbQ!%rd4K%xJCMmeM^5> zrN$f%l|5U3J(iS4WQ=88-dr>yxH*=1!59g;{yC2U7(D9p>m>OUt*>svb>EoGnS7pP zn>Y`bC-xzl=SKG&4F>^+hX@{i$`Hk^5J^ApE7xAM4{uyG0mFR>!@Eq9#Tzw5X`V2~ z2kH%{0M3!xI|4NbWu)OMUfw)O){EF#&c`kRs8+^*7%He>2t&P2E-vgP4($Dot8LJz z;bJg_>ng}YccC!Ye+8q5tsWKZdUah#FlN}9@sbWe>po)})H0pP?$a%~$z z4PXK<+y~z}_pD{4v~|u2nhTdAAW8OYEx0 z=jUrD;kI2un$b#M8CpEEJ_9ABLc2-T>X;21E|+?->X}Nd@9VEZ>&uxY8c3r)j2b>e zDTYZYe4iWuUIRv-qvQ|=UnN5YaWQFsv;QdmJ~y9~qM0KgzVO|5tc?%qY?PeH%|D5E zOM{Cp9;nvQ;uSyN)h0}`HO9fd&=b=<(P6%cmXLooK?RSJ(h4ZEA5;n|l+JC4rn09K z55kCX>og&z#)Y-3x2ppFb;C%(Rty?X;%4@x=Z}uYt2pBRuR!wP>XaOCnuO_pinBM> z1#z8(RI~jVP>IenN(44agxOtw76xN=YrMXYVQU#1b^;8onRA4C@g#U0*cly**Mi4M z6hyRSAmqG(d7|e($C0Brt8L7l*gQ5?jeyK+9&w3Ampf~oq|vl0BuzgpFih{ZQDUQL z9~g;8K#AGuIPfSjof#}Y5|@U5Dl>2$1xv9}B`VBJTt;_hqHuLAQU&Z=9Rh<@sn8=J z!tmI^I2p3Zo2~L6pbH!GiA7l zFOKmLd+<2NEZ_`2G4EF6&4d9oRb3C6_HCI$mJ}-TxEi!WXJNbPUi#M8N z)cz>eyt-XfHi{~g-YPZ?k%OLxp>z(-vd!{jRn~bn?}jfeB)!rrX}GzL=NSm454M@S z);po)FkLW|4xZYR0kwyJ(Rr2`>X=r=RxPcoV#*-JL)SHEY@fQoUw@3!G+wxhqES$N zt^=MXxp+xO3(c>!-7G{OQq^>$<`+q_j3o4VwaIV#^)2ABplZQV?@nuSmGWpg7*N+y zm~vp4V9(%GQ5!jo;D7(Om}q07;#hvIgG3_+8*?4yKWk+$QT@_?y$onB(N?!AD$4DX z%ni{;u1NzD_N;MxVyhccfm6!uEZ!jsD53n~vt6$O7$mMy_Z4cL3sN;6dh_Fz;z4nV z(p$x7m0>d3XF8SrKI}U$(|YcH6j$2am*TU6-c>xl$8(qKd-6X;A4MI@B2Q#CJviS9 zqP6Hk*b>F3@6Mio?H``+{AW*khng5b!TG-pp{oHu&bn)T9p%$^Z(pE>a<6N+V2q+} zua~m4M6!zV^k#ap78)k&>))1kf>9P=|JqM`D*x>7Te7KlH5EpSIQlNU)3TN@cla1h zgB0PXFy%^tQA$WDq?yDO1Ea+dVw`T4v3kaHV26}ODI ze%4t%LGkh3yJgUDW&V11_OSTs{JqQ~nIY3}wGqLz6;~qY&{inN92R+!P%VMxU-c=ePEARvFWiIOb`}d|BVS(%f zce!HWP=zLS)oTK9h!fqDI_S)f&|wAL)u~Tc_(!RK8CQO@jI!$}%KN6#Y9>-1q`FgK z$ps(7<+ePDKRyl94`|N`&%*wt97(W*700Y2-aR|m*Fy#cWWMfE-w>V46#>2>n@;jELJi~+qO^6#FSPB zFTTbo%tzc4L@I+;o+3F6Zih6l9&c$SNh^D4Nfpn4rEQ!MNzq^YMp`?pW!J+2M#x`w zn!|B`Wv4Ja*1D7Wh1ugMdYTjjG3G|`da|p3$>yE`D|Cu4sk`fmjQSMc+=y29WpsW2 zB1zSkFb^~U9E_$?s1Ix-4AWv0_r!UCY+5wELbFrtCkpapQ%u4SVrtU*3t}c85En_F zC#(8*meFPNEBzL<+ymXG5x$sPeK-5f7QQ}P)nmEwn6GwJ0ET>mNbwcs39=Q8Mjj%6 z^6??ZZ_H2U@jFwGUzs@xeZC4m10ORTBE$-ELmYW>Oy_rV% zw;C0*Q$2B-=emaFK_2Cf*XjQE#R&sG?y8rg7k@eW>nYCJ1Q;P`E)3QoJA`x*shFPY zkf{UHcgoa9gB>$;RX*M^gXfEzz}UWjn`}E(K>?eWkbR%^%$!MK>iT8SY#z0FL%0yE zlQxQRji=z~n|_Jw-ewnJ+Bffo`GDB5pu$Ag7$na+q)o6Ub8#DZI69GK1`D^EM^7kn z4%3ebqF{T%=lSi`LmQ84Nq!2a@WVq4P648M{RUPT9;`rz4cL-a*{}tG@trGwgC}&s zghrnv%k63{wt1GPVr%lJ#1qZXVx#9u;R$FkQv9683m+*w0Sz^Ne69qZScXRaAue*> zH7$H`420mlwM2oJC&Jn)9+jY2S8EzBu8Cohjrf!E~>d|b|cz(0zxDVIGD zl&?7wd+iGvBI52~JAh_4E5AdyjIY+KB40ub{mJpGv*Wk#UmQO>gJ3JO1L<%o4$oAJ zuF%lMH?XccKz_W#ne0J;Og*}<8R4S)q2ELIgNN&Y49uXo4g63UwJRil+l2F)O)dxQ z-e_Fu=r9e#o?E}p#NQw<+dNt>-(SR6@0apFLGEe*O2TnKH`ElPPo4+*5BvMU@jBb4 zs&;dj>nwdWVKOKi#96S8#49YwQ}MzJWiHbGK37C)u}dwYw(;cpNyJtjR{QDQ>GAtF zZ;zk7KRx+>$LJFV2*!zj5#IG(FiMorbg6bSw?9g3&w6kqd1otNe}4XNmvL(GTenXX z5}pMFRq?9ZOxAOhJL-{`E*~g|?yMwwZcLUWCqxYyw&G#9Mh~0icq-Xy{J@ZlUe-

}`SP7B-(=%u?`+BP8&vK1Y;8JEKVg8(z1?YqJv#8l8+~^(YLa}F-3^0a zJQlx6-^}0Ms-2*0$YXyqYNt?!$lc(bR@md?+`I$qaL$eRHFh|U4&1u@iUyp$uN9fN z&t~S_nth{TZsFp8zh#ewbF&VxacTD*y?yK(%M8UQVou`?Cl7^Dd#2`NY-}`5iQMBu zoY|ECdY=Kag!5&Y6!Q@KshcO7>jIN2|;H>8l}=Tfp6Rp!zSs~^zYks zEM{%Hi6z%+xQVAnVnI?(-5sjG9{=|?TslhEJ+fIsNL+MNC}4u8FU4PFviS7n@#*Q& z&&TgiUj6xh=*7v?_iv8QPK15%{^`l-n-@oaJ$@>F^Yr*vIw2E*;+!JqyH|gD_4+Tb z-amQ$^5xO1r*^rN76EcaY4(10LzkMrI5Kd(KjACvFm!R^(Q^h2-CO2CA>{=KLy;>X)2g_@U5=q?2 z@jP6^kW_V6u{fEYygvRsk2cOyy!O3GtZXq|iyoz6Gd-G%CtLP3 zT8n;v`UQ}e3rIwOLM(v-i1oW>4A?9G%GxTSeg$mt{1ja#X(a2)IgiKpAhiWS|G~XW z4Z`RbW3)Q^6>E7Gtu{|%N8t=>?_L(H?F6E5Jzy!0mTo>;ER1@lZ&DO+2P1@$;H}Em z?W;|~WMaX{p)xl5Wh%z(f#qpS4@_e5OBRQFt6j?{A}U@p`?yIntm0lq4VM z=M{z1aR~8F>;xHVc9=#gJ?=g*eozbEa`_+>*$F5>mM5vC=KCc}*0m)#)gLoff~`4! z>ynh~!Iy)rISV;V*S!bBDgm~<1}H^oESo*?(>9hFo{Rzw7&S>h^%zyxD3H{4()BWX zcPsRvSxLa!M>R7&c>3<;%fG%qdHw$Q*C)qs&Q4yxs#jsHeRFcYv)HayH{!FPyeVAe z(XDnin%)E{{Lxcbc<@#QT}c-aa5SFc1L38fNg*v?0%$o4qY05PQ44c zJz>cvtwTALk?iHiNNBs7%+tSTiMx8SU0w=V2V}Pd+x7>wGY9<#jv9!kt%cHmi}I+mtM$jh zquvb-O%kPeWVNX~Q_v8t+SNU=eMYsV2mZB+taIT@DF?TT)nAxh-kpz!==UhF%j>G> zeYRDPO0k>uHV>+&s?%VF5d;(y(QNN!<=iey2Uj0Wjb?oRm)CFY;0yaaQEb4*COb%)#N2z^W=cIozea(*ZHz-5 zDnCie&CF5aHaq+wCDFLCsh)-La+^lNSSlrWmL{v>`OtN2?U_?Dy;SzqgzV;dNM$jW zKXt2n`t0Pz@%z_rPTwEDef#?D`)9A;zC1eH1DtTOoSuPCO?F*>CH1VbVs)nVAXu9| z#OO=%PCdk`JLf^L3yoD?y$9iF;d2n|0#Y8N^n*}$l6oJ6LmHcd>ma;2e*5y|^i)U% zo{75H-e=-)yeI3S*OS%S>R?Y+p?3-K&o=203gYB>_`SF-0D^;dl` z-mSCkMuv2v#p_Lfl!odVfI1~M+x3vjE?h@@O`P&fRdi-A5ONje!F6~X9_?gznntVS zV>CJ7lstVjNVRZqSs(dQxx=jvQ7zo&n|Xv*es==>pp0}eaP!CveWMP#8{ic;t$QihQjH1OwIR6l=v}%<6G?9d; z2YFIdL61IfRMBjsJ->KMiKeY7q>ROO^eYme=J(UG+WH2(C!MDQB>qkMU{ZL+|~yp}dky{xq}yYj@NzGk_B^D*#3ZD>^c#l`!A}U2of-BP$ttozCrMD%eV^n9T%#vOc z+|ssx1!AyStUl{e4xpQTh9}R(Du?zhJgj=KjDldC-ky3u)8Y202g{hz!Dp+DH->_+ z2ulfnMtKOZYGVL?x4{WmTcfW)j8x(7X&d71yidLEfe3jlifsBr8ZK;!O#KpKt z){$may!S8*uEoY!%AKEFircc#p|w=AFU6I0aiiKPk{HUCtWOa;-2}eouXTDHjZ>VY zn=lPmLDYJUiL3A;>KivhGQ6X-l&pDw(v>8|&0YLX=-4b?G~{nc-dcIO-1r0{$DL!{ z&gg`o-aE&J1F9!ZMhu6JV`eDYQRNUyvVQd!^C+_C`jj%iYbX6M2wqT0Ka91bz@hHm z4Nlg77jxbKLtwNyPo)|v5xsIaEo$&G~!K3zv^VFZ2@i^-S}3WT1T6z9r+S1UFE zZ@*Ei=KT2jqcHd5h28MAuPxQ((8yK{KSuReJ;3l#pT0ePI3%Tznj6N7OxFvY(b1dih07HUT~1QvQ# z!x>J!11f&L3mV*~^50F?R`H21>*x$ldU61c4Mey!tc!ow&O?*PW+DWC+nq}L?<~B^ zCcD!M`MHC7!cGK<&VG_V^&kW?RKYo|aN3k(0vn=879cZSlh%x~CWxZcL5E&-jL?B+ zbWFrCiCBx5Vd0=Mun=CQ-->3QBpqh+MhynhpI&~+>ASCNEE>ys!J>D!(qJb-&?^n- z|607~CAnW8&H&)8^Y_1h0kysmjd~FLLZ`zy@`q4xYY0+wE1T|Bl$(z*lzLud=;YNQ z5J~#7v?7Z!P&&tuw0654AUV7{kwZ{E(oZaj=iAn8FQJ~b_gf)(guDJdkUV;$E8(GG z-l_e-N}yqs)p1AG_she0ovFC5xy^!H#V#f)6dbBrL)up;UmYfY5GNEt5wfUm#4ml& zNkC4NmC=h&1RBODoCZgt^=9t{90I+MqIb|JMu2aQVIg?sTw7a3=Uk(C-nv>J4M?Q% zyjjOYc>}GS&mGWyAVaerf<)5(i7D0z7{y*eV+eawk>Tb+4S`5SE>iRt+l}~4^kXg+ zPHMi*0ED4`2p@odx#&*TGGVybW-#7Qe$dP=79UIw7>`^S^oQjmD&Dz@K($oDlg3DP z4UWNzNU^gsgKEqnTk%u#RTW$@Pv5u+JHvfG;$bZ5uHYzDwWUSgJ(pav9CF!g+lm4*5rkCGOoEAk_<{5LWYW%Ntip zFc*)->CfBvG|FY@)1hjtCxTr;W}r$t@WOa{8&RcQRObiXSR|#k7SGiQ+d`hsMp9WD zs}PhbfDR!Lo=@A3gdGdF?D>TK2De^H#oNaKFEU1d?OEJ}{k}oCORxF~)>hH=6Z)Jb zaPyQGe%)Cjev{?tcAh8c`?YvKG<_xVMe!z4j%Gi92|9zX@;;a>4@d-nm#yWTkVENB z>j2EzVP606TW_2f1{H;QAmgaw`E+Y9aEQ-5na$mNHBiSz3MnM0Bhm_OeD4ZNGZs3L9H9*iThp{uF| zF4NJEt|4)d4tJ4xxv{8JR~;1tjCT zufmnYG9Sq=pYM1mB{=&IA?HPMftB*7NVo z6PAS~^5^7%TBYR26%#G))NPavG|`lpxc!_xNj5hFpEXkI9C-^!fmz$YKZFjoO3`+I zVjGBdFQZhdY=ui1;h;-FFSwvWDYhw}u_kyFg+@w06B8`ojRVapqpFp2R{Nf` zRyjsdU~rC_!e0EcftA2Kk`I;RsTolJK`fHwEEQ-S5Y&Y?C6?U)hTNcp6u0MzQywP@kqn6_`B(> zO?$cNtgT{IR1cUKd`_dvP^o3P6C4GL=rUB?i3;eLNoS6t6SxjPM&d=fl!PaLnoUEV zJE@c7rK}7?7i%B}L%4A&fuW8LRIaRewOK|h2{SM-TzaH{RHzC?H~>bONHwO~h}ja7 z+6i}6$;B?!s&m91bcLek_3NB|rAG@Kj4J;)Io~ier_6TxCoX#j426H&55 z8JozrMikuY?dT=AR+M`a)c_!J`_%r)+d#j2Erc%W#M?lAg`KRe-i{W+mw4)4Z1tVf z*i_ZuIU5RJ^69H>sBtwCs*V%A)!WfX_@YVGhEn`W&D4u$hHZ(ZlF+q(mA={zqE%I* zZy{V!Bu2Bhqm^hiidt$3+C^%Ih239pb{D>U(O2AF<7y~eIV482!|EtIj+~l0R^MVZ z?vqwV83#Z^s8BTiZaO%G-kJC^NABHZT@Dn^p3&^E%F5o)Fv<$#Ar#9jBnVl03SE}y zEAFge^pt&Ry!4d4*;~?oQ|JOhwVeg+qIOyytQ$9s$k4;QHVbXHbwm5Xbm%0wP&s(gc^uH$$fg^S=WT)I?$eDs+=PsdQM%qY|P zmS&V`*)54Db_IS_`AwsFRHh`C47CaqC9Gup^!x=BD+OO5psWY!7?$0VA%zp^iTt!I zJ2f&5u4ILq8rXNOZ-D&<$@2(eARi{Mb=B=s&ak^{Scndu324L?oL)6sS~i$2My zK?Ap52UfVba6@rcc~A4Jdc&Wh50{`2&@eTn=kY5gUW=;rA}7&ei#ev3K=N6qmBYRZ zys;)kO^%*}lgOVeY=U#ix5lsRr1R|YI=8&Wwu9O7BD^pCe;Y)c@OuyY!u@xWNp9#U z%)s7K=83j0%oMRM(^Dp6}G6^QSj5p16Eri*1luyM_HllzPTnr#Jzc;JF12zy2 z(pOgRm^1!?ep5H50!|L^IGLG=P`0ar9!1^;EQ481#IOIW?BlZO7=HXbQVuy?I~WZa zoK^m0+JQaS!>x9}`Q|k3P~)}1a+O5k{m#olxOhB&4Of%90@h#tQqvqFmgAKC^@a5j zPguEn=4Cmzffk_)oLBxd*%3H{d~5uSGt7G)UuR@R5HbQp0FE3JSRkY{biUEVN-MW8 z&RNOf4sXaI7VZGdT=39^C{c;P(22_D&MnIhRVQaZ9lSp|F8Wh_ zIzGAh@c!VJ@v-{L@%SHn#85_y5I5UFpDd<-(eDa+3hdL{laCjd1#CV{DDFMLyci#y zpB>9_;)LSj8--XM&i>NO+jUFr#_nQaH9?BEs{PjiRSkNHb zjDRO~`RmJsXJqVJJ<}(9ke+YB+sXuEhgBr%Uv0)GlZX+wnY7ttlSw)gfW8TOW*j_! zF=jPO&kRB&>$>_%r>4CCh|JXO077eUji7jzh&a*K?6@?#O*eg~zDN^7z>|p85Pud& zPcdX|ZS~Wt!SeJ^Ix9v&yLz!3Tqz)Flal?>s4Ef143;NeO<feqq@?>xk?6c_PUKOip@4MZNd=s$?Ps(?O6U`6tY}(>P zWgk2#5R@G}nQo?j>gDV{x>zO7*^?(F3-(NpN|2iOg#>dFWWedkTRSc33+)DfJq;tx z=y`%wc2aOEw7ZjnQ=mPZ6r8ziC%q3AQ{N{BXESeEpo=+_Z!ZftlqYNX>+?mdkVE;x z5l!+?UR`SPru%pqpDd~)9>ilk(0zeSdKSVwg>_Ps>1q7tCW-IQ7tvw3jHcPVg@LJR zX0V+7Cu^fQ6mTcbw`EXG6^S@69sDCD3y3Qv%7hH&BFQJj>w6^3FwX`DNZwY$W+_1ig7Zz zoh1FVTu&xy2NiE-GPKR?0ugFs4|fUBe@021Nl=Mo#M$gVC8I03h!fv`sdDRMwA3AU zlkEQriPb5A1Q0!oZk+1gO9EK`+!}n3)v%s-zu7_k~FJm1-l(B+m>mFAF^s`!&C$*=%l-nu=3DVy!tKu%d+OFln zw>CQaXEG|u^hjkYixEvRY@z;g5|Fs|z_AU3D+S!~3oaS3wPDDe=p{DHaWUG_ksX7; z$^^DkI|jj$iQ;YBF$lR!Qyi_&H^ohMlHlcpGPkbY1<#d9NoW~=@t=;X6kKQ;0T!21 z60OgdlKSiQYsF!Un^|(7*85$DOC`?K=?lKZ$>${>h0GFmX#OKmGEup8vm8N}iPLS` z;|R6PxZRpPjv&jVvvYeKLF378{`xW*y(QBd0LB$0PicB1ke=l|9z@`9eVHUz`s84> zitcs&cpS_Yn&d%$Iq95_LMFQX>JvO?;7_4X@C*Y_`lKB7ZLd-Al!RxkQSiitXQ5H> zAO?4`!!SnS8LJe-V1{R=Qw(z+Y~nfaDLm0HcmQ9j%WkC%0~hEaopk5)qea*ChItIO z(U7;ZWVz}Ji3ot&$ybmXW_PJ%7zJTVxr;Qj+A-;5=5w8YboH7zOWH9Dmw^9hfD51WOY>#dBhY zVYY@3OOsiDir2I>i<#eYTa#ISxOvIbDXgMH0T-K2D&2?VO7aPQw=IsV#ol3sZY#dhFWN z21V_dDFSsC({PR24a}&mG(C1}Y7>jvt=wCmrZyyMH{$JgXli4HN_uh^$6unw?PIv$ zA};%pR0PhCy6;Vf`|{v#pN_{LKC0I_IX~-z`+Ylp?~Jr8pr6ivy!`NEU(qKxGB_aR znZ74~2Z!U!@dcl{I4b3hyg5!eaj9xyOO3_arwd1^oFe4)6ax@t+Qw%$F#wXPdiX0d z^#{9y76sC7y3H<50JA@TpEDeT5)TKD;0(M#RWxZxP_xvJ zi<>+(PUpl`YH0-g#T|p;rV9=L!ksQw<~}KkY&0Zc@!K$+}x;Va!0)eYEt`YljB<Tbeadyg!G7@$q12o!aHA&|`^Flliy0Sh z!ETc*y$R0XZiTBI{s<;|2wBkTYZUYk+eXBZi2c{EgUh?9IKI`n+Sw%Tu-cPW`7c8isQjIO<4V6LbSiN#A}3T}jU*1FP9^Rr^z58U)}Z3z>zO!} z>?y{nw0s6mCGJl2Je^A1>FC)xmE_sV{FOzai)Z9i;`T?+#Hqv`j-2cpSI)N?*Pl~~ zdmnAjsbtS>)?eFmDn+B5pUSCZ4}Ru*eYla5Gp7=FNOExqahoHjP9<)CN5pd~KP1uk zcV(aGVwbjCIgfA8*QaAjvbrSXam*B+X{zFgTU*fJp&&R*St%dBJxiV!`qNZ>^ zA{QqFHx7E9P8seWiocgb)QB8M(n zGh^M#DZ{OYo}E*M+YLE?krxvC^*K3ZhIT|wl7DgEAQE@ru0h#bHtPWk???3ZPkgCn z=qL1S93VqGqG##>8Cn`Sb%6|hi=6pDhIT`44y6C9HABlEh8t9!O4M+G#M7bxPF#1@ z>j%Z_)%nd~yk2Z^Run@2%rEB*eS)6YdouI{^5En&*u>7=F*FT-av~DQbyEdJyv)=x zJ1rt|ac$_WPSZkwIcBs#rFbmxB3F1>s1$M~S4*X2J1Wu-w3oA1$a!w~Phne%;Tr z)!l^x_fv+gcT+ZOEZG%S8Cy&1H#le)zk}e0)zEp!3AeCn)vDYQU;jIrtXy#mSGaZ) zzVQnY$^A70U{|LplIwZZEn45`#*KpKbLC~Dr%ygY+Xaz-{YgP~)tMr)TKq?`R%{Ng@6EyPX5-lS|SBugtYHYt+w7Usu%U3OEw=8`=kV znci3kqV4hLv9l||>W4#HuC8`R=4bPEC$|lZR<>+=JUiUv0x-eSTX49^6;@4$o7t%q zJ(_F9A&0wv9gGzPS=kj=h9IjCPZ3vRk>aa^&@ZoLZ+7Ohrn#C%#h(PPBe})bUteYCo7k8a^%nDY`_8W4GE7%$ zgy%PXc_loFi?-Y;UR;6YhMrWDjsW}DVyUCJ)z!CuDl*gdfY~FoY7{p3t$G`7+xza- z-`uLT@9_J*{qOen+g+6*%k0s%)3_+)lg6SJJuI`cRLro*%0WBdT>bCc7RYDUcya%S z7DlLNZFdK1SiC!emVv_`_V&No8-XGaAMXNHrGe9;b{90t<_zDc2cu_0y+(ibX=e*Q z;~V3D)C%Tf``YiBpH7ifR;~BUkM<&}aMD6k^i~_rH3h!e5i>s&${y=ip-78f$JM+% zMQ${G)*|mn&t-kAoHj}ozee(AZ`hXH_(mTf(O;*8UV3I@%S;W5}>~6LZyR~1p$AH&=DAhp_rD}$Iqc(%!^a23gXib{!B`;D4 zU+g9y~Knc0ZLw*7_g<{g}J2bhiLmLnZ&Xa~z^RfUsB zO*Zg4(F}*k>ciLh*0PBr@t&t_!q@*!WD~xmw|3?z5|043%PlXw@Ljd8dJU;7-tZHD zpR*?pqaaz87^2!}Viu0Lk+5GD%D;AlR(cwDT)-v=K) zj^CdA=yA{BeAC)Jsxg(7*%Gcjt$Pzx2U>`^GA+zz219(7}bqV43qlIwp7@PLBB$!%+zz z=u)oxI6m$sqmlDSF$_7p%Y(lOw$?UUTLwWhnM@lfmPzDMTi&^djewV=I32BlF9%5y zKI)PpzBVUCOYj5xV%ej8Swy7uG~t_BS@gzL#nDvu$QSKZ4EMgK4z;0Ra4_zF#cUT^ zhFnQ8ZsWr_0!td?29I?x;-(n0GM>&>`Mu0>w45ZfhgB>YJmX;WO#w+?ylXEgoGq4r zj~>6o$#kh4{%P88vhS7%c*726;_!yjAP`oQaY`Kmck6IHn@@YE1%dlBQY?heofHZ9 z`qeA`!lbaqtDxYW;4Yd!L`iUeAE|#cT?RLCl2)SYY>-kI@qI>8gyPj}{=y{Zx^~x6 z_vm}CTEH{?xYhgwvHZPq3o0*x$`W_7tSt4vgVSG%h~d?X;pppczU|L@XB4N!0Qw{xPJ@|qo@Ox(Fn$s2Vz(?S{=rJ*TIpZz6cj@ zOgstU_$OU)t8rE^&XU#LG<=i{K*zNTE->n-$p+(Se{X-Jtl!Z{gpxl#o`F)wb`a9t zU^r4`eC;HHe55|6lU{OiD2?uC-lNh15z~_9?$NB z<@#O((1U780oJH@bT^xSe2x}DGMjYCOEXFjI;I(ctdn#UER{bM+|O>4P$#*r;^6Pf z;|oRT`IW$Y^fh`P%)cndKKP$?m?Y7B8GMfm8e`+oeYzh z0BT888Ca(pP2oKrUmVq?K#-OMY$EjPhpNxQcTofdHU!KyNzjE^eNcdznM8w-re;hJ zeN)5ytA>-q_Z)D4jgAzqnY3-VUDP$hh5Aftp6794n(csiGYY?^W^7thz-*@8>mU1x<(&#B+GWI#Zg+Q zB;F})(4`FvCFX`;U{nVw8@_0tlB|8Yq-@*o7Vw=@*9*OWR)-!Xy%s^eg4c5DlcgSS z&&xFONXoY!ta#uL39U^nju!cL$&!0t54nR$lVo@zw|YVg(PO7K;; zSAgHCv$(;34`Kz~Z&3aN!8=eAme__Do&Y9xNzY1Wv%~7j+|sKT!~H-9)pRqNcrkwr zrZe^YWe_G&5YFccKpM?DIcEE;f~jDHmntoVZe#N5#eawQQQA3R^j+{iih{qd!^Lg> zqUo={&;FQwpSCEkyzfH)Yd&}IbubCdLlWIYNuqv#(75^_YzCwojP1l`I^vB zGl56G0glVxtuv1hKY`nax9Lsmg43?#)}5CFofMGv>d(^S#uB+zf8k0WvlnRA*8v}UZW*P^+nh8bfmR1#E zf2ZvxE?rG-%nzovAktr*bB>3`Hdv%;;_A!QX`Ixi8&4V&!YZ31=yGBh2G@ZNHb|{+ ze~!4j3k^QSq^jaxI614*NMk%+r^4RzG+zvqB0t0+GY;EB;kXuLtMp$s{XGo zJ&?=)hRn}@`%<6|Nma@@?$nl9g`br&4vTPaQ!8iV2LCXZPMRr57JD6v*}S?e1=UV5 ztlxViElg~iluHT726e~;@VvQSeZeSwRv4I=pU>)=b2rs}L0;q^SyM$k06 zi55$BoYNclhsTr)?o-VAHd(#KLzv8#igD)(O|ly-W4*{EG+xtp5S!D8xJ)pL^&_t{ zbee2B-AKcV7m;pXFMz@6$XRJgQ*K!GclD_)W&hF2e(MJN)Yha%%$waG+{*MXDl`{JTVz2Qo1Yu5u;PInq6J!8t7CS`SQc~>~1 z+f4aZ(FLIA#3P{dUtzbJY2}6$t;T#J{%c`$$6r+CA#j^!(Gx?lj)TD{_$ZN zt~TaGD#8EAQeBoCJ)Y`se86+XZa&$rvJt%l_0UmZ z57gWAs@^@k4PiRdAmV4s?t|N1ppKFnt;ebrpNLD5Z3LCc1$4Q|%+bl%z^{p^m;vbwrj zes%St7cUz0!JSf?QFNV(GelHvq;xi=+sQgp4#H*n`SOMTwf}4XkWff+``kDvHe?f= zb3HoT^?2r-1e*@wKVze>VM`m414pbksrm+Ja* zMT@BXvp4EFes!^~cWsEI0BaeFs+r@RnHKtzrhRH@sStwOD^iw1tx0vuvkr7QA@* z?5_hQ-tWWJPK^xZpu^+w`|;(tphP+MkWUbK4O)W@H&N8xz`$qci-^c(s3pA@*~>~I zs0vu(1krnV_sEpO7&*6EtUg3EJ9fE<*lFygz1%mzs9s9Z0GudTiyk4E(9LDQKhOapJ z*(KLa65p3nj&w;8d=(4@$BldgFIKpX_Y{mc#`pNvjLVgKFjozWg(5srs@bxGPp)T= zPcA;ZKlo*Q{3%s&l8vL9xqLx^FXL_LjW5sHe}cl~A(Ae+TY@6H2$Y<9_U$)1Ja1>o za-pRjVfjL@kFXk@h_+tj9PZKEA!cekT;#;Dh;6*@z&&@Zhz<0=g!Z_j zF5hfLOM4MZr1rD@W~(U!2KS-uFJ2RkZ0P7@P8|4vwxlTE3DFAf9#L0MtH_o z;nWYos)OA+%?AZDb_O4faO}NU)6%%hDped9SEb4?$-OUbWr}nB1;q-BIEWV!f4|xb zH#T)tK8X8}nlk_Mi_0?S|12&d&y~AONp3%GJ!+9-{ZOj%RD}y%0PB9DnBKCK>D0OC z2}I78X`fEfiub%*IY|u9+p|mI_qao8$DK8%;Vn_MlY$%|Gb<19LrZi}Ry>fu!Y{BbY2zVVx5%C8mYS@s_!da9SuJkLmjeDN7^qf0vi26>V${ z(w8p#ItX42Dh~3K--XM&i%9ZZi2~R>SNO6}h?5^GdQqI=?TmA9s&~&T2}(iC0Q?%y zIGwvsMA#LFn8AqTm8eR@2ti~TciA6Nkz-VrxRqH)0(c_(m|e|ce!fJUiOX8dFhu69 zsJ_LFL1wXbRJo)!D&PLZe~IY=V(_YMkSER(mi*;;Lx(}}Ml+z&7cWHAW(mw{>~cFr z7iQ|Qge!k}mf-BYH#0wnB>|fkXzDM^RkEI};^dRQMb240)mM3H=$Za?oK{hh(nHNi zWn6vY3Wq%?a3@L6OScag$(Q0N5%=^9?k>Hgd_^^17%hF zI~hYr%XGsqm+?tf`jVduLAi^O zop2s`A3J4fE7gLWe{B@JAYw!D*?WrHr!knef7QxAsvY0z+w+exPFt7TV*=8#L^gkU znS5<^2QMQn#deUo(^jN!dt>>VWhHaVHn{ga4RFo(r)=rFQB`@q7x9X3cSCP|V)Kxj z$Th_|?`~BF&RuuL!#IiEy~@C8>NYCl=h^BmR~nfKHFc>pe{eecHkF2MTQKaKkq8J4 zrEafKDo?U{Y)Z~0Pj3MV%EAaP^p+Ec3@6=FC1RBaB$9+3P}=@EH5X3M-=5~e zS^PvV%b>boGL2Yq0h+O;K3{R+LIHOyyrsA;PW7j{{dK+d(?(fox$stLgP*ES&!(wP zrpej|jvoZTf29C4Mb@RpHm!3cP7TiL-->duacOY&|2AD3TqNM^RN-oYz85U|Gey(c zsx)I5-I+F9!feWf-asafH`7m2W+|q8tdk`DnKm({_Wo5%N+6Wvt zqaQ4~f7|*&7Um!skZCn}j}^&hEGyB8A{tKY$sar#;#uvzb3!_>!Rra?ZYVk2mq}?7 zDKGD4iE~OSYI)+xYMFwFlrkfpcDmzrvbu9mORM~iF1EBLrs)1tI|&65=QG&!tMZW@ z5irli6Z zB7I__^_c-#NnSw_TFih;aS^0#bZa5Df0q$qHO~Lc5MLhr?bGr2!$3N?@$H4x^hmiN@jNPVjC_(JF6>LLKYrg09#*f2K|? zm9|0wIJnZQO95E4AOXm@LMsw>9|4c%nzyD$6B~~J1YBblARzY~0gvaJt>E#@E*}5{ z*H8r@R^jbH`Idr*Q{^6iWvV;_eMK5>vZSquH;KlY5?b^sxtT4(`6ls6y!4o;toa)pm&vCFWzpDhPE8SWI zu)G;vxKE4Wh5x!S5cm(G%Bto)#4=j__#i4a!yQ-pdU^Ak@s#^5*;&r?xxUCCSe`1y z_@O1vG$qOf7I*|pRCRQPaL@(!w#PZ^348ZDU_E%zN$U*)-ovl(!wpYdupn+~;*`p%aktc2PSN1OgahnkW{}r{Fo9Z*ge0t9+b(jJke(nTB@ zcPHrp0=y>W?k<~UWTsLPe+gT2C(u>#XwSTK-q2l!h)Mm`k|B9=QS~>i z+@h+;Nm**QMl%UTyj?`&)+1fJpFB!Bd2q)F>#uq};-vOdtt_!ZaO+;gM{scr4; zOj33WuydqvDRJt#S^4!ZE~{+ucXJwsKK$Y`OWdra2Y&I@Doe}qf5vu$jvLl2tL*A( z(Vq}SZB5dH7S=)LB;T#GxTq=;!1QL;;{GLl+}74_1sOD3RU(7rYDoR>WDPi|+JL_@ z*T&uOMwW)&pvgf0i*UAB_UKw?T}V2h{t-;V)#NT{b(RStiK&J=l=P75_3PmBE-KE8 zp6R!qD~^d*SG;%lOA{(h_ppPk=-*+k~rD9dNEGblZF-F zApAGsY(CIgof0zvw@K;ROa3D`GFq^_w;LMVHN>eCgxi8JoS7i9~7%x8RUO z>1=Z;akq|Vr3rAO4~ZtYda+RU=<91yssLxx_a@i`XT*Qol=`l52qqqP%_`ER~(4QySONvJ8DB(Q2J6mddPN zM}mSsuC3bMlw7&%nHU!e-%lAl%GPXHTGW+*E3hj)6B>+EbV-1(B5Rr8EqrTeotzw9_40((F_-ElHa@iA-Q@< zu=Ez3aaIkJMQ=RxXxRn+tmoQZaveWpS27vyN__Z|tSTk_wesdgk}H}hQ1VVIG9dm8 zK~~`t_L<~&Kq6ZBi!`#TlhR|+)f2ILr6FyJsQ#V_fTB&{?NZ(?kz5@WG`_yd4m+{$ ze;{}=xq3>lw9IjCjWKCooo)IKO4yWDA|+77r_cz5UVN=<60B$V)B& zbvGl_c)o_SrhVb*?D=Pe1GR4_99E~df8+7R(WiscUpl!{^HK{K)Uu9&9iAWZfk7SZ z4p?TfogJKxW$>Vmo!rIomuPYO7%m(G<+Vrr23&#qC1-XviZ=7%Y`#u9PKk-A_&U=Q z%8RUMRe;ie!$HnH?EVkH$M%kpmBxo4$~xG3Y>9|KQnUzLcjHS-%;kb+dRhm4f3r9G zzWrQ^tmnTCM^HyrP4qGhBXA<2G^Svv_t7Rxf~WU)sPPXERHV^ z8w&@of}_01HPG!{Zj&%gn$$#F20LlTmvEB)>dS0(7p(5`=6x>%9W~VIEdT6HoCFo` zeqbc;{@!r3H~g-Rmm&g#SFibmpa{8IhsZ{h!hCmNcIqjjjlU|zHBawBf7*Q(`7QGr z9TCkTwamO8woeScB;-*6>?g(O>b-F?FHfGI+snxqf>adDF; zr0Yy{N`IZ<8@2a}qHSc{V0UMO486T|k+}16aIL@Vy#xZnk#!ZQzo3c;rkigoFuT-A zW3V^z4S@b-T{ISNP+Xrxf0geWz&pFLZQfTvb9_H(d%XBJjf~O}{yTE-7Qyb6x1>`6r1cXO(O*{5)bs&YA$*78E$pky+8Yd( z<&|4s?Yl1b*;kP3dnwpT2aYz_N{S^}zx}F5x^^n^W;fICyUhc*e_JPB$8Pr4|b>bE>E(?6s=f2d&Y5Y-F>C&}K+chTdtznLPK=KW9a(6~sy5i1^GQ*tQO_6ArFXGfJx3S8ZORMY$=*iCEgG%4nkyQ;s$Fsu$7iH=aeGMHeZd_e|6FPpH;=TY3{?(4 zt$xETBAw_r+}hEau3pSX+%nOb)@1cfM4EHDeo((t&&ee~Lv!9_xr6<+S3oeZyB`*c zCasu!CR&Hpe-hED(_f{6#g!Pj>7teW(kyzlad(G-@R2f4McItytx^M9+3^vR*c-zp8|pa3xcxXYaBT zSqC$Cf60V3^jYlTazO{O4g{QhESKHKIw0AHIpMO@jM$vk{H|ji&*rB}*>oK10Ae4i zM9Y$@jw-aB+H@N0fI-ciqLP`@Wvm01mx_Bs3quOg1>MCuV90tH_7c87#8RqCNm$F! z{rMhvMF}x{tB#RcPVw*=P^$QMj5bOo5w2q-18e_(#vHZjVF#z6hz9%k;&3TcUBz1~pDsman4 za-5g%PCm+sX`ycTAmy~Q&^;a-Rl#1KUabQhBJLrCwzCH5OXn@41+OJh3!CT4p2?Ez z{N*J=SV>AMjtgEXAZcJ|e>A#! zApy%0!6vZT(6ygBAz#Gz(durtf4CjbmysLnEctB0t}rD%&;hl-mLXx?^6>1@6H0e9r~$zC}G3xTH2cEOsXYx9@U%GFZZvzdTz)3Qq=GvUQyd z{XFMqf-UBr_DtY*TUKWRs1E5gPu#Z4?a{!!yPO>j+<(jc(ZJoZT$oe-6bNpR^^6Y- z+hlDURxUIKZm#9{SojSMf8e%P?vDlTOy%NO_|P7>XVvpP5V&cTwWlFf7r5J%+jD_? zSUEcvxZRY8bK%tc-lzyKr{YiMf8!2R4*U%9x!8j5jXO^{I~Tb7l>2jm`%$?yqkNnZ z-0150o)O#tOJYh%4+ZXD<@iweb-Qt!DG!Ij%Iz-tBt!+%R63_+f2Sa5Ub9LLfXMM~ zGI9_#f6>SkuW>yrq2XtlIdj3=fm%V%o5%#sDe^H|uIH;D$^I`VU6Z7PoFTH#6B39b ztJ6*Ux%y@^I{~40VaaX&@***7s6wc>p=+LoG7YnA3b*0I!6Lkm1SdljA26N_y<26) z%*z_Sslw7|J*q#Qe^pipfLjF$Oq{mCE@3p5uHY{(vUv@q7@7P?k7E=~ufxgb%UEBh z%U+zN82I_OBI$h*tW@L5fW9;tLSFFAYIbhaeKyE&rrU5iKZK^Q4;}Z+p=K;3B)c`0BC2 zMU?b=Z)WJB#Znr?!l2#FcIxAs*AOt3y%XcN>K>Y~7_`|4F^m+`@3{JWC) zI^W$*;2fdm6^k__NG;;q!(i~?A`#mNP)eTbE`}_5f4WHa5rRe%EDpsUTwf&iwtg`K zp*slU3Vl}y$Dy2r>x+!r*RPM_#my|a53a+dl4W|Mf+($m`4T6emjWCjE7j$t6YRVr z5|dAO+eGhq=8lE6#}Xnk4z*%RtB zeo5MP^%<|6O=Ihc*ujT5%vyu%vyEEe1r)ymf2}>9=F_xjH(t4P%DRkaUB5*)O|n|E z-muAAJ^#<~H3`2Q&E!0F)sWg)&A;)d#xi)UN zf34!UpSBJ6Xh2T>aT<8v_`kE@pFZae~phy z$mlEsuOy=-%`AEmnI+wBlZql}Y#}TWZ+@$(NBsIcnRpxV>*;`aTb2{hbGeqz@s^0S z5wDz%EY>_YaU)q}Uj0zkruM)nl)Ys<;uqtQXzIg{8}VxTo|343dm4@SHGx%2_{(f{ zr`|HkjNSP9-_b-O92_KM(2Uvif7haI5JggIWZKyN8J$vxAf?-HsZ8U8l9lyI=qC2G zM*N~azM35Is`3QuZ>g*Bh*uQXRFlOVUHxpCT9g&dQLTLe9=jI6=3*7k#{S52k==-2 zWT(G6=3Up45=}#|1vsrD(CLirhsu3!Wz;se*l|RsJVje zGXC*F2bwDIDwB$6W56Lm&r(-bw%4iNDx=0X*?*Gr%`4**sx@9MpJ08KbS1pNuf=*t zacdrVWm)}Xi}B;FQTA?UkT=G#Ta6wcW~17_ZPT9cWcH%)yfhZ|F=*U4=pG&t7l6`$ zW+xuSkZl6N^W*}L4n*+bf579{38!_CJS%I(Qr9Dj)x zw~yh%G1j*Srzh`!`J^wBPcBc+&pLTGNBvD3HI(@tQJJgyR$4Mqwv7_yejvqdb-;O_i91}2`X$sYpKg^d0fBSSiR>&_dln@Z$ zh1$#3=))d1<}AU`b8WnQvp4!4ghYM34R(5a)lk$iH5z#geVf-dWwEn+7RB!><9Ij{cY44ctfBhfYpePnUe-EHc1+Ur~Aq_pVzBuGQ@JuPvlK);5d%HJyYhIpW zH8(@H+0ABGuvS0s4e}mv{}}MR{3fDu)lg0s$*xhC!Akir{1@h#xYcNJi&27U`K@j% zc~Rc5%os?x@$||^4)X0Yf$u1Je>FStl%NEERZ762$t?Lj zl@n&cEnoPgE_Yi(T1q^EzbZvoRY<;C^C<~ zDpRs;ZdO;14?wyJiAyo8D8&6%LRs7>#g?+TJqm@g2E`#GEpCb;AZ-yz5>eQT@r0X_ zP$--x2|J=Me-ueV&7Ad5IJkeL-Qt2MFqBfjo^0M>8FhYcFmIH>KxbH_ca(KU_~qbQ ze{`qMHUPFY?m{Bq(UN{5CiUVo;x;2j&l$3-GG1BCYIKWnPm*3RO}6B6Oa8HU@ltuh z;rwK}Q;qOY83(-&N5*<%9Nd`1mT_<=5+36`B$4_qe~G37iDxD{FAnI8iHdir$ewm+ z%Z8aa#-%@IqS%@IReA9{$V@kJJk2>OT1=dA6O_8%x#_KXnGfZ=?9{{fHcTWF_qOb0 z#Dkle81eAe=iLus#tQFe^G7{mR=ufi_3ehUaQ_njoRz-KQSmZ6=6fv*Hp5L%o{-IW zI)T4Ff0WHUHoJ?juOD6U7Vi$n6>q)Mudvg&$+KajXJL5bW-7KS54S%dMK;1)SKc@7 zYvP?xF4Y_Cpqn%cUcuc@w#_TJM~cziW;@Whw@I%%Z@Xb>;^a;#sU=D}@Kfb26S?ivLe z?s7s^ex__t+>eBP|7u*Gdc%ZDW=$;si zeFG{i(t0~vOe-n0&$l$|yS?G4wG*}%XK>M{EX{&O$Nw+Q;+JN1Wc!+v%JYG+%W~37 zF&6#($;IXP_|y4MJ@)s(#^`NprBAN zQ@^}T!t}0O3+!dEqkolzseIXVib{FwrSjgB;D7(BO~9aHF8(p#10_WjU%lopOp!#j z5}1bF+g;OvpGnOgeMn}%sns%SW;6JzQNrp0-hodkd;fzfxc;*OdY&o3~-&*NNHcS_6PMzI8^r~0^Y^{S0AaE>9Kouj`l2SOh1H`N07pD_ox`K};nCY!6jUm) z7(#=WFokvT5?)nYyd*5V!ziRV?9_HE(V0nPj6>rxn+_IkB;({)4S4c=&-KG@urIg}#U(r< zALpUr-RNIDgh{mVe>1LL1j>=%JNvkrhhS+;x~=F3f?Z+61Z7~yR@Xu%gLT@__3doF zQsS$aZJxSZ1W?A^#C18HVyk{Vv@O8{56S1w;@ZSW{_4zz)Y}7ro7Q0W#Jcnyn=x0-(I1Ui{@*qMDnZXnrh9 zJc|+)&Ciwy@6EHd@gaDq!!hA#d5L5d%nb@((% zjOG{cD}r%0qvg;`^c?mm!=Af1_Ej7LC7N5f-TOG?ri$hnHX}d<;Pk>x075jluuJOV z*n8K%=otx(P>Uvl7hf(yRc2@`8P8u{G`G8rInA+?r*pU(X{Vv+@T_{Y{k$sq7prWCFl9UIkr5O=}??Z$d>Kp z?Qm+PT!&7h2W|K1?j8bVic>P5yE4TooXk?JT&=qLvPlwE-&?CyoVL1EwK|gU zoybh4sMTOP3$LS9w3O&qoWc6s^(#(keHQu^XSO;!`#4ASndw)YrTQH7E6z)Op86Fh zy0Y}Erq>|8$+YQikX;`8(5g6n)~!~>e>t@7P8M50%d{%aVuxU=Jn+tj-wxm1EqtCM-0(B49hZfH+B2bt!RY=&Q1id(VwZ^mXXl&!W3t8)M? zHUzg+??dCfhLDfj%JTK(DByT~`7=PUHrXFgRgfBdvtE*Psu z9c=QHz3?f;=KSU&^xeTVN{7)+oJ8Yra>wuN&ge$&vZ1`~{8&gxN|y=`?c^Dw3_P@x zXN)#*-A?}LMjS{wWsqhVSoCbymYY5u`Db+t_lhdww{9m*N07A4Ak9Ch)j~B?s-Sf{ zY3c!gRdUboc2Sjp->F@2e>y6m1O@>`yzp10_F(+$M!B$sJZ<}L{gVv^;B=9tRne9C8a7}tN$p3v8JB+cLk7_Dq9Fr$s^eTq(Uav_T&C50THeK9 zmKVxR&N6GddHxNW#KoFI027rolT_q;S*x;J(_Tf=&aE7N(<^Yzq-#x%?PCVdNhnfKR`RVDw+3}~h=O0fGF3o=B*Qruyw}^u}!8qd8!c~8JaC-9omrup0^}hL|#GXaI zksh8O@{#hUUfUo&e?LFApeS#?wG*5odh(`OTi|?met2lZqP&sSZh(p?iX#U;ke=8u zC=N0BgejvYR2*Jl=2E{Rq6BcEO7aS~IR65$TT@U4*v;7zpxv61D$t&Y3Co#9X#w!; z;B+j7xHSb;fc@}s{C52DY38lQf+>?Gk3c77%Wz+7Pb`Q6Fo_~OGsM^{QS$gL?N zaIR$*367y{3$n;M!I3l{kPCsN{-e-eT%7ba1VwPS<~?oTo*W#G6&DM@ZcRhg?7pM( zv*VLXMP4CCe{9X6s+fN=q+9c-sy@A&xv}V3 z{x-ayf6X6{;>C2PZ`%d8p0X>DE=X~#YvnR(m~fsRHvoIb6@?)82^{sD8kHf4DbzInrd>T0$>M66(#kq|Te|$cSw| zH^{8AYGz~eBRjomivX9G93s+aS!!+}Se}{~TFos?>Gvs|&)?3Xd0OVUR3H4b%#-^h zDTTO^mQiRF$%XmRC=&yVpDSBiKRr9jetbF5S@gQ*ZU@CwUJkDHXFFKHoc-eG+?mpq2|*Yk*dNrO9c^=?Yrui42?+-?Bwj)Jd(N(P4d zsdnd~em2~O@HdC&!B;ErzY1z;O#0_~qL}(kJugT70$hpgHiXSigKv9FJ^^=-CeyOF z-fk$ZiId4gX>(4#U(Z*whk2wMdMtyze?W9wRTY~%+reG#`l}7)!;p#7cEG-+77k8-Q9EJg!anKQR$;ig7m0Jqij3Q6HBOQ^ z$$#-SPRdqxI%YBZJzDN;u5~2Ve;sb`Wi9nM1zc4oS%mkIxowx}aky<)hob6Wh*}bt z4NHJP32xKXVMIw7LBBv3Cm4xn6J9W{DwCfz!BIr#dbq<_Il+^S1RgP@{8RnY>|^M@<&S?FnNczZqJ$>|3}kQi z-o@9~GlA9`?mM@2>m`WJ*=D=;Zu&C)yn=vwF?omkQk(ZCz2pcAf1LkhX2m6eQ#!oy zuNp2>%>rV(A46stX3+S;e~y2Ktf^z$VzYiA1mI<&eFMJZ07{*}%sS2e0KV5cWL9ui z-v=6!C7y=ZxAnCO_e`MY_LP$A4vn&gY7T)8P6ssQg|4 z!^+GyFDtgQi}!R9;ThrzN2?G|y`0sx-opitPaEe!b>uuHA$R~Mf4EWM8tv5cxfK^7 z%0fP^a$?6}pCPMbZP@gQb_9EXWE z4vup+lE2p73o3msBP zT7^YSPGilT6u|H!QgMOU*4;*26y`4mR`)3drvjIZJv+A%*PuCc8%f1xfNNxKBQ8Rd zxs4Y1nfVCU+HJvY#8r6SnP=luN_c0x2D033Bo*apSbcr;!EG$5G*7TBwTwbm^f|<( zaHO(?_(99Ze=sloJe@7|L|UuT&mpOTt#a7@6D4t45ypRUT-Mg%U+@b|4^DrnRD4m3 zNs)hntL0o2S%K6Lda4Hh1PUwfim(3E5c|4Hgqm7XCy*Pse$HBM;Bq#1asyYKk>tiC zzJFNHmvQo#N{&Ks5GtBF;84Y+{%TB=%~eiukh8xIe{SOBK3wf|Puke6a9TN(<465p zLDztxRb88TSzOpgN{!662F3kSH*5Ag|19A;I2!|}+6i-u^=3n186B2osNhUsidhuF zHI9QsPWrBG8{*=&j?B%Rfpuu9hhsa=kGE2`Y}4z#QoVAlU97+l$8sdMOJ21qA~r6I z3*1=3f3_A770X#%!RC%@o2+T-qifH#xZLe&xfU18x#HTPsTao(SIAkL2*Luk3fDG5 zuX48aENto4LA`6a;7y*Pu*KzZTVPu+mhA`^qp{ew5$%=o?MPU_=7DeRr0qyp1h-*Z z^Na!q96Z7$Z{9h0WL37-!NJyoH;psP+4k9pe_LC&buVoj!yqKg$`!XR7}bxc#g%Jj z&rA2`ddLI!1+NO8>N{A_^1V9DSWAOoWL<;SDOv5g71xvb7pAZ}RMhr5%#Co-7_Hj0*-5$# zf0ZjCc5(Uf;Nx{LH|nb4}y?^B9fVF6nzZmT`=U2#5XU>slMG3UGi zez(o}90@DUJh;HEbWp*|$W+L4V0gK{f2hwgamMjpI=GMQ3(~AJR7W0a)1D^kV^OdM z6KA)}^2||fHI}bW6mrG$qyjiT&*OqN|Jk%7VaeO`V{~EBT$gNz<)j{&T`u3#$xzN% z+>cn77RRkZL0A;m#{C)D+OvIL@OZ(%Wt_A+VqrJ93~ybrmsOpedB<^`oteE>e_!Hy z74mX7n*eh&OO~rfzpEtDGp7V|G)C@=@18JXVNr}nGbY@|BCM+L%+YvUg=glpMZDOH z?jKeb!-Yof%kIkQLTBe^pT?&jE`JHOHC$+9S&`>z!jL1qO)AuDzJsG2YRPR9X~dnz zD7Z}`4Z0(&`)jd`GT;@ZuGiXze?JW$^r}@p$!hMinv}oj8`!F*yJ*h9FwQ_C)s z$!k3x@b$mL-@@1F*udBM*udB6Ow`xek$A0$JpN4~+zi|s=zpTX-puCF<>P|}saM*Y z#MAT)t2bZ1_{+ZpqPOUc&MD7!OV24= zKDZc<_B}|&l-l8CKIeJ-KkIPbF&)Q85=;w;Tx{DH6&fsonb9!%VuIK z7g3jYN&H11qHw~F9k6`vfBVT|8vPzE)gd|_|Kro!laCjdpFSL1o+v5`aC+7vIG3i6 z4ua9}W&}KK!Czk{<7->2Pl#5FlQ@Y6Grhlqbe9EhE0f_}r?xPd`sT=+52;L48%?D_ z^t+ySnHmzQ6*n$^7SKy3n`bP~eHxl@Ig}D+U;O(y)y&eSX$yLO-pFF8$L^Q{@$jm>Zoffz1=Ly|6E5 z_af-p+>pTcETM4*PA7Rf(-qAR;tAh$A53|R2g&X7(<-$->N2i#(xnj@PXyNkOPLL{ zQ-?7~MZ<2O;OwQWe-h;zrM^qw%}e_yc?&g_~T&hUJJMwr@lNH7vq$d?Q=2C zR&i|4;T#j=LkJJ(y85oJs~#=A=GNU7b4K)W*$rAm+Fx@IY1iD~+3bZO-++ZZUTwEQ zK|XT@iguaR1_d>IFDTKCaFMCQ2gysFvVaOwjQY@ie^0x;_KP-8ed1%~CD~fv2WN=o zq~)d3x`8XEExy2Jo-Kzr#O-s1Z?c^tycp{y4i*r-=?Hv%ZGL&JTnFikUI4y8LBB-3 z4mEfjRs8c;X3B8+4Lo=@6wOZF3X0JV-gI*74scLs^bqgcE0&u83>1JoFt!)%z>MPx zI&j6l3U3FBG=GAJQ)L)`Wvb|DUZ_Lkyf@$p08k|qe`TsLYTqZL_rn+Vt&jCz+XJLj z;l^K?D!Qlco?kwWO(YN*T{Ost1hP2X&`Hs@*^tI)nITM}L1zeP##Q@GtxC=>WO7UD6V8zm;Q6Zm(XHgwsh(ePRT?$8(Ug2-lOySp>wPoJGsKk+W!J|8f>zWeVl2 zTJ-$p;vt-DN!qd}>w1>9_`cM?v`v55$X+dO1F^uxm#Hq;8Q*{Y`2;S$IDLA7i!V~2 zK;YubR%Zei7xp{hQ2)^aTvN}F7M!l{^ z%4tDev$FFiw|hY0xwIY+goOL?lv@{s#}jM234gA8?frZ=TSZG9*pbm45192v_aG2b z-rH3?o+sNUcYcqiWrIU)HkO*8ZwCMXu7BY3pbGe)WwNvQg5H}%6yj;KPWVC~3JcG_ z+IdyL5Ze}oE*JvOr0oE`VFed<37$mjf)DUySej)hvrF*YSD$vt)r&CY0!N1u50G`T z83H4*wi&@qJfAB%PJ`>mKyJQUO^|&STf}jy`OyG80~Rb#Sh}m4r{2hNRQ9oa^M9SR zut)#$FpfX_sOo7n@wBMu8GgUF|Lxugv{EHJm%S)uK$VY5p5YHE544-4Qo0h$s(6xh z#D_!aX53#3kxw^V4!T>}n$P;zd;8y`0y|1GdI7v2&;EXP{_|M@kB`fBm&sgS9?fSL zkBe3K`#^VFKKTc^dbN$vb#qA*LVrqw#x^=`E;=8VQZ{|C+BbEiDXz}DMP`Q+%?0;g zW5c;K+y9}B(2LL}OqMk7cTDz1wDYz7-Dzxxc9S; zGMnu6(6gww8E8QG_aHK5UXtIhE$u?3NvGZ4@v`d#4M}O&~{|$OB zu8XlfSh(QDAm4h5k@^aej3i}tQ`|}~QgXSB`%10$5yBNVf?YbAM`0r0Cys5{1>-oH zN2^GVgJT4C;TTV6y&Pgj!H{d+D1Ns=K@oBk6mMq>ixUim;_W)VTZfC=H*aKc=w}A` zc^u2F3(31^{vaj{X$mL>g@0D{augJ!%tw`{*$cN4ulMyv%IXy76SI$_>Uqp-Xk95yF*=_l*|wV!M`Qw{4YTo0{%$?Ko#s3SMO zwe3huyo=O{n4NinW};H(lC^RIbGze{ItrU)Z$h5884CAOI6reiF0rc{T9*ntF9+B9 zyWZ{q;B1mBQVLWXpMSTRal5nm)63e`SCP_O5h6MleDm?0{1toe!O#nE^KNSCx%ug6 z;vlE#0!@u8Soovm01M$F6kEYV8WAZ!g5*(=#v?e<4!oN~h>K7Ra|$;%N;`<1t8s-v zamDlV`N!jzfikLA;bIcSH$nAN-BK3==3MjU_vNd**)q6~!hgk5eH$vl@gk*QFdTh- z^&(Jg9|y|b``nk;0!nx|Qy!(%%gXQ+Qm15eH182CO&a&eUzIw_S9U0Ife7bNPSbFf zn^TEPKMZ_Ti=(x4Q0=c+4e{Y|6AU3#z~p)2R_g|;UMVF|imXx*s1$3^cK}9)js*Cq zVpwn-DF!8fRe!4F6COvZcrqSG<+-oi97c8-$yV%Ca^XmU3VQRwbn|U>gj0v-U)qF3 z?BvoEgLtci=Uc+9@;5BnDj$I2hR+P#DwpDmAlE7~u;CfN{Wy+R;Y>-V%@#@|Bf0#= zC>bj>Msjht!edr45|`6Bk&(D=##Tm>i&}c+q|pFnRe!g1x%B#$g(WV{kc53H!sK>Y z9Bf@yk)4AwYbQM%tMJzNhmq+IU-veq0B=FAi>ZVGI*M<1>VM|hVP=qA9e}}_3^BbU zz0w_^a@1cJtjra@7tt!+fQfqBJO#O^Ki2PGRe5>RPWJKavpZSp&>&pud$&qY56yw$@ z=NM)6O@1XV5Y`A7>&m|1HhmnjgObVa{Ahj7ug!{Mr9Y?+YR zjUIILT_MhX{&E*Z^T}N}OVn}UU$x;noxXQyq<iU3>d?AHxS3FV_2O`rtnQ}aW4~DlC?p#gnB$m+ ztA7fP(f;24a8EsKBtjw^mqjqPb?UzQDJ5FPBdu2+sNYQc6C=Ht7u7qnqL3n)h~724e_+NFeG}9)HN! zaGw&75G+d#1oR>k}QdbFCQ(bhzppUMDm8#rALNksW)=MQ;DmMIHyuOhK^1psSb(h4Ax^QS1)ej zIP?Cl!=(7;KVAOc&{)ZYOPLICD;e(4=W}~gIwaLSAwRFjVkpR)mq_ir989tzseheK zu~g~-svXIkz^*`42Y$YQZuopvf3GtUndk6zu!FzUhM{%+m0?-G$qhqXTg8zschUU8 zk#xaDRWh|zDa$bH{K|(UM}Rfi$f)x*0UhXkQuUQ3@vzRfrJ}zKhass5OR%ip9ETyU zm*Sktxz?p_P9>>QipW@%G9~k=tbcq+!cVxSihC+G0Uex5QfZYX@$jj%r6N@p3r;02 zrLsPixG>7ysl?SyoKv}8B+(?kUCfrzG;OlXZlP;#{ea7!x;d?@Ia7XDa1$r@;cBP5 zPs?sq2W*NXdZJq>g!?7;)7iuI`9GspOyd5Y!8jQH=$@&oBDkgV_fPYk>)N=?v zFXAtY;zxHUfK=whI01&{KgPag8+NO|qLBGWwNp~&qln7Rb+ZzsUyEh5@7Cy7R=MR$ z`{Yz(!)eEsynmS%+k5)PUDU>`mVNvD8<~BF^4IJGQ(#ekBeShG>f*OG>uToI-2OB@ zGCShwFW-i<`8w%ncb1j%eSg=2>89No73RfyGEx7E50hJWz4g9N_I?;xl+oM5Wvd;E zQNVr|RwpsQVxs0L2nR(7@>ivZxYw^<@fRlP{8z!jGWZe&VG;$g?j$~q^VV&x8!6H^a#J{E0!mGRBw=kK7X_E^+R)3O0f2A<2mb0ls zdZV1ts8z)?jRwKnI0>TP!~2JMw5yyxwSF-S!t041(H4G=^dfw$Bwy-P zu++H#DPgo7x4yk=L*7j>sb43Nawa0Z4=IJyjffY;d)^QDAW06{tKjl3YHVJhkf?{o zONHf2oNsnKnW)`YE`PKpzJ85NP-`Kbz5^d0$t8PLq0RCxUeBk&b(FDO*1ES2CADt& zP)PpNtJnO6DbldkTfktk^@XO8-DK}Vp;f6KRMA}kyb$Ot06x{zTL7c;Vl0v)?*y+A zEib;qY|o{ym)mtYiVDpe)WQ}=%6oIDs}@=wpWDrZ?rwX7VSgQyI};-~^wL8FK|sk2fF-B-%d?~~j4|oxlJ4s{QBLY09WFCSH(2nlyu5LG z#LKRqGmg!$Xk^(7)l4y#IOZ?UEA0WUe8W-^6!G9dNq={FQLVLKn+1CO@b*Xh+f@ME zEb-Zfoy{aq-IBbCgYA@Zu)i$f*@-bFnh~K;1K}W!Gxo;OoUYfWRLFtnu!O9857i8e zWhFDN$L$6l1E4Gs>;x!jG%7WK9DmWfp;;u@aS*NxdtXr>c!pma9f!f(t0^24;}vq7V)C^*&NBD7&J_aV5NC__ zab{l5oI?Fkab22jDPS#rh5aT-S}RK~da4K-{9&Cvu)W8%S$hb94dN3N?eZT; z1P2uv&FQS!H)ZNXA>S?!{`Tp3d~w7F>3^bZqz7aHPW|V@MNbsqM0z;5<1v z9AAzv_$ax9{RAkh8!jg&cL<;zP%%AmUdEGEH6euDk%4@K7vrOIWxL2Bdea3slf%)R zcxr}*lNVviYI*7pc($Vs*3_H|>Nrbj!Vfh^LO3bCWuyu4SdBn+ljH*|Hmez^_kWzJ zu;AfTF~(n+Dt$m&5j4dG0Z^O(;pFW&{hv_6QtK6s`AV%%O460cg)jV-sbY*8We1Po z%uFHQSyuawySuW)sQ?`nM%nfKDok!8lwf6R1mMg4{>dxrW>BbtuywQN#L~xC`A%F{ zZd<4pgOnkd;^(eYx>F(5t{yj{=YJg(BS4TDPZ$RRUWzJT%`eqxby>^NDED6ijXRR1 z)+4e(YMWNiIDbGmg9I$^O{n5~f2Tqf-~IE2>gjsEnmx=@#@dE}#h3kZ0c+_8;){I$ z^0oF`v7e2v`dx4^zTn@E%;kgS%F=Q(3Br9d{;3@q5lMcWbnq-BKh8LK0)NSma}S(J zew=&YNM3xe?@aRI>vks`>tFKXn{u+`bx`8~HAr?N?bmK zlSoGQ@3|t+j_v`e3J$>Zc31ShU{=WK?DuF|qyna06iXc-*a2DBGk>Q_fDf80HH$Ck z8i_c)9$d*2y#NpW)_koM*n*|As0s2}^fnm*+kF-pKOE$J5!W zmA3L+#}RzHx8I&BZhzZh7B2c{97ka6hiQ=*`}W}UHyjmYJ}WcI_4jOX77(eKWkRDJQVsGDU?e0enCfT+;)yd}|tuol^$D zZcSg+l&emYKDkunm2m_vSJ)zIktu@<96X}dmVu1ETXVCjW`PXq*7R6u6UcCSR$LW> zK%^IN*@izlHh;8(jHX-DWs-VcfOl((j9=CZB0-!SnUx!m9jSzHam8~u<~I)6W8ZK+Z?d5fy!XgNt{539Jh zT@DET%gp``U~j|w+5GV+UMPTsdT>B1nN8mXDUPQflISK%qQ#_lC=fs-v)wxoy^F7} z9|b_TVzC3lS$N+^ihXL~hYcxmCVm$$l@L=xy0@9lO8J~W*{AJVDHET6*<00VE3hVbJjalw_-{xI-b_brnJRcHu;%M>3Yra_F zKWf)SGgR9Nrg&BA1k++qT1N_W@o0UfXZ9~fW`8?*9d0mS*Pw84dM3eLx{6|tH*(QYxHUh23-*yd$y_=b!i;jyc zteJ@_&^DA-3(u!El;#Mm&cVCsC}$*~&dx7CjgL<*$Hx*vdy!JOgo41*I*r@~)v1G+ zdw;2}iSCT6ap?qioG^T2TsvXAkGL?xne@d44V-z|$_ohZujdg}0DlL!g*pJf;MV9? z**U*O-3iX-x8_KpPUhVEHnkjUH_a~D)k^>k*DRQ+{hug_`zeh#mLrBbDZTHP(6*)% ze0yAzU?y}~%9Gr#@6}(I!F8l9_>>Cj*MCc8Q)Z`)4~1%G^=rXk8Q(`iq7+4ZuN)3- z-8+@hxZuHhFE|EQWiJ%PZ)U$c+z5`S>)D9eYcKStN=Lqq#KjA?@(kA%IMb21u7IN> ze+uVovVz1IcvrYobGB0alqVhT2CZ0QY33fCpIuyjJUBVKymFWmfj8O_bjex$je4TG)!-#f=O{D#fQMV^pFs7 zlOV6iSieDYMMvHxiQpwRndrMgdVj&yFQM-A$M~<}%<{$sy1Tk-Qa|{P5=XOi^%BP% z?sF@I)oXmYo6WPLNNxW8?_YI6Uge(Pk06}KizxUqo6mzJT1Km2b(gh32;!Uc`{LhZ zTJ?|Ikc<@DM$?`qgy3p%xX-cU)e98RX9`(-8!1GILc6*P!c7gTM!udaZ+~O92$XbJ zOY>>#O&<~4TIRn??{)fmJ0kotC8WQM$3TF>n<6q(F}n!^6qQg>riNTo(VHg1^y=hG z2^D2Z$TbzcWIGM_IdNenzwVnIEq>F!)N(htUax{!x1P~L_GXqWSM`qsvt=*|A69A~ z`O)hkv;0r)Zz0#E+X@%d27k)DmE!BGpq|&i`2{GdDF0aI){{L-!HZFYZ4<^!aALKbh(#J?eVc1^)(E~gxT6q_L~ zk?TDNl6I_>3h8Fl8tV=L^Yf|@+Nau3D5w5XE11_m*P9Zk-_%RhC4YU!(Hr@(`gfa7A8J9K z9aGs%-&>)LkU0tETh&7+J9Vv;VQ+*5cFc-Of?w_=q~KD2f2W}yGu*oSFKGQ<My9WLLp)^~E{MXLOI9?Hv4v47Z*R4ul36skCeBGMiKyCU{wyVXAK` z?J{D9xHhc!$$zXv@2}bh8nxcOj%#&v4iy1_k%7@W(PiAm|E}v zS>#xqQQJ(bAudsKdq^$Yy$*4~o4=#k6V{ZwOXSizpXbo5Dp*x_ThoiA!aTvt%H+L1 zbGDgzLtJ#{_|Vz*tsde!J&(tZepO&|200;%Cpd$`EPp}IXVA|@ATIu+oIzO%<`9Y7i~@f2AihwVUJ32(|w zZSmo1-XlA?GbR;BKHULhRatKBfRPI>1u=2!3Q5DVR6#0?iIYnoL935E4fJF55UB@E zv&&sdNq=2F(gnd`_M$kAlSpxf`omI}p6f1k?3{!mFOB(T4ZYD$*g@m0}@f zST1!Y>Qq+=%*?jC86;Dn9!#gL_D%nl(J;wrcNQ;{m}t}_3Xs|Kt>{>m*|?%80o%;h z%F}=akAA|r@hHZPYb5>TE4H(et){2o0!eG;z<*_r{YBiZ(QAT7Zy~%~p?P~xB)eeK z!>5B3Ou?yycb>$b??x)TgF+q&0LVfG78$&#-l*pjg6)zQel&T9Se+u_DL;t~q?*4v zPocUHHZP5ERiI;DGS+;E&-RF12*|fDN4T2Lc8^E6$j+I4Il|?0B>OV0-PF#LRj$Pd z7k|J#Sr)_ym%=&Bf+#EE_!$r*T<2!bWl%u5N~~Zx;$)}0osThM70Nwng2MVI(GO{-haXBq#bw8^LAgUd0W4p7BY6xr^^iV-C{l*M{CHeWwi^O%8Mrm3gf`3;Q zNocctiGH6%59yV_AQdO$;%5Ogk$8?eM&)Qq32?9^F@JfM;A{=Dzy@f?U6IlHV+qPM z#E>`t&n7WoFliSk@au-h*8W7lLkV7iB}Tz3XcSohS3j%Mgn)vOKFOblWrBev>3x>7%QTj}kZLsW)87`FHDv9@GG=F9*JSQ~H zK3e@?5uV|{fk-oM-oS-`!Ugz$f)gfEab3H=xApB8DLBX5&(=@Iy8&}Nm!(Yj%d>Ta z%)rLw{5%7DV_qlGYMm^azL&_r#(e<#_^5dmD~QvJ1aR|}Thc)QL?lOBm(U~ZuL9i#z!P@w;-r-7Xi~V2N4-zWdw(SJvoI(LsN1{t zGs3i;b_6+yk~NjTyFP7$?7A>X!pH76fDf}x_JoU4GMnT#Si>Lo_P;@owN6ulFGI>w zqTE+i1SWr<@a>~~=)Kkn;cT(|d-V7vPNvHbiBglg!lf?>k$Q7!O?HZ;s$B>{h155z z5T9c$2T-zrfYr+@fzr*!R78P(>B3Nt-8Ip>uZE|YVszkloQW|v_YwkJrDyD3+{ z8WM9y|Jf&RwbR^V$a zCvw=jKQmsHB7Z0eV7merMe=%@yZ*H-bzN_ZF5mbwX0DGwRe`$zKUm#y=DKxY!-Ugu z-ny#@hY_!*>~%L8&HyhfEY4nClI=(iei)zXFt-t`F3AZOC-j2n^OC>$%Zt*s`vN2t zxh!~NmMA1dN)#Gtpaj8V$x{CEED_iWoj{G)cOi;kuzw^Qe|h%(Ts5H5dPzf2rS-Yq zj9dhjCDr)Lv+vLdSMTUK?8`5QF&DGdBTAC%4!$VcosUD5Bv*X#!#owvB!_y;;MrLf zJ@=028GfZ6Kl5643iyfC#Bfk$LuCg+l(1kI8#03tr6)AVQ1hRwzo(2oK%lHry?{zc zBS&4fL4PZ7G>sm#d7*?|7CoBI!s|#;xjTepej|&-W%y2|G$o)a5$~F~|r((Nc_{nn5*vV~t{lLp4Cah1*d-?hsQS>OY2en`QoD*KY z-5Y_(vvnH}uqZ#_1v|M}!E;(XnH_`i|E$A#M}JDg4~9V%{1g`=pvz?4k;-C%<203J z!+fm(TAHEPa~rYW-ag7@j`M=`oLIy-P)C-7-zsp>aml_p8aP6Xd>K~84}2IYOQ!X- zqj)~g+nov?$w;BuJn~(*yt{}x@_>wwqsY0|<7AJrA0~lTWr#4R2~_qy!_nJtM2uPV z@qdf!hi}p($bDj9#@G^&5GZWSnh>;I$3aRCR=y01(F#1Ta?Ntq!;g%vzf+xaL(U!mt)auX_gF***A?{I<76 za67kzvQ`dxblF=-T_=}@r@?fC4df;5nT#1R{Nkc|mUwkY{Ccqk~-$u+jns2MyI zK$i!9+ras+n?#B1X$L5?zwX6k6^v%@dg->{8jimH<{Qx_@Q0)IBWuWk&{}c{Mt`yQ zqcqB`P%5`@;kPABqttpAC&AnGLIl*UCg_t~Z^McHnEp45$xQt_h4W@MSM!bl5_q_#+!CJdG(FtF+gw5j@IjSe=+aF?HrgP&o88_8>SgE3$cvJ={~Q5v zNt#a27Q*zI^d0Z~^ShJF@x_OOx_|j_wYs`WuCBVyVh*bvGb0VC=dVglh40P!SIf7v zZ^`rJTi3j4ys_x!mDV8hD^1e)=m?Z=a`N7JeL^as<;`p81|j=F*x5hG43?Vc-qZ0K z?T-BbNw6w;kh_efNE6vRSSntx&Tl@3i`&RCSK*oNa;}0`6Pnrh$T*`P^?z44H@}Y; zw}VxjNxGdAwZLtZ3{DUJ@ks&wQTJ*Xc9wJ)VNy$k_?(WXu3K|DRk{f|ohqgboL&)~ zn{gc(y9Xt=^#)h~F6Qj9vzS^bg&)VAH&(s)#C4P0m8QRueZ#hOd5$o$@- zL=6L=R!iFxJ_v@oVpBwXs(*0fOAS1Y+oM z5rH9aW$OiZb~01zWuV_w!liijw_`5F6TBUA>9*u1p3dz^Ze{~zoqx$q;f!xPx!LB> z%_W(LJ+~o5@px``?1|@VdtgsIGMmSq#n$CJsn~PFoIlUh+UwQNrR7-U*`G{V{)71i zWU{rzb!Cd~Nv#!Mn>$P1CV%0op{wcKFhSqT$^wtjAgLh)alQT* zki3DQhDdPkm^DCx2k@n~@Z90@9Czo==x_KqdxEMUsSDDmb+HTh4+TX-&qinnN{QSE z4VGWifuFB=BqD>S76cFA%Wk2_kd)&zMMk|_fFHL9m*s55?Ww<>1HXqAA&uWx&5#Cu1CvU4R2KimhDaSHutaFDA$ku-*{{g{#|2#WXU$>$D}*iR zt;9QPX1~SDc@vaxRUMZ)Cc5X+?1g3Nx(I5+o}JVXmWR2K8l4*{5+1mM%#EVP^CIKM@;9SYZO=(mt47HI$RtjVLDGf z3NEqo?4x81S8LZQVmNXomw@3&Wn6+~Jxe)UGbLd-f)kSMqZ?BQS7h}vVhW)&9kQP) z21ACh%4ZTbv&s2w*aj(}wnfm!DFRBpnd7?*BT|_cn_oxdVl0`r%Ie!cPjOb&F zz>!?~F_B4AiyWKCOSz4V3!mKhUAQ*M+V8?;Lk_u0+!H?Ks!2J3Rv-G4%w$gg;?82m zH9@{C=H*T{!gmlZ-_Mq-s-)cwYSy%f10BgVIB(HU7!TJ6x#K``%?{?k=>B2#xS4}o zm>6UI>x*b5>D7Wj3ItuUj(>I_gH@(B4^sFkqrH4Nm}Rhc`WufRh#rL-X{wK4SLE~MJZM+LC=255UHV>ZlBVNhlhq_F0MVs9k3y5COUw`rBh*YRUSohar znIrYDlG*iIpSRQSL9bd3_-DNfv(X}dQNn94t(p5n<9Y~JcWTvTGI^~$l+|lJYyNdQ z`S^7{`S|s{o_zfJAp7Ysjz4ShGteJY2ybTd=<@MFBh&wWZ=yb|fveYDzWB?(8uxaD z*H%u_=kPW{)0fS=_GPbkq{|)Hk*`9$Cm>|uii^yFggj}n7IOV8?EwRRV1?jq*XD3Nko#a$nw|L zie!*+LTbS9r9A28to5{w-ywJ+L*$|-N?wv7RX2~+rl8NRhIeb=hsTu{uW-(BN>C>>#GjY z);8vp6P8M{K`znyMAsV-7Iz0CD!kR@;CTI@ykGV799Zed3J^lUL`7JN{v62RdN!X% z317yOuE+R1KoLlJC?SnC1`QXYBQRimrWe6PzKSYFQh#T&s4K4%gq80ro_ggYI~`7_ z5ttXrMZQhyjx!nEBT46J^_S%;Sx;7R(is*vK9n;}y%jq!gdlgT+o}z&{2=B5O8!A4 zUs{=ceiATP$5^$6k z;X}Uik$-U%>DI^0QD2J4_Qxoko-gK)6#@P!i5}*9(r>z95+OytJJMfO?V?nPerTat zpzGJAU%pRAnzZE+`LZcxcFedLG=XvxTq5P-I)7$OJWBxBUlIM^_P+M3ZDi^5`~DSL z_6x~14kj-^o)0?&oWwH$a)8Y2+=p3?um#q{wtu{mNrrn*{`c)}Np?%Bma3{-hTI8f z&V<+Q>h9{Q>U#N=acHXuk#STv0V3n@pe!-yQ1ksM+s~PVHk#GV z%YW?tP34Aq(v_5(yRk{%;}fzokAXy&e<*rXEDiE2KIvXd>T86PnI@`9C(W`nCYEha zrg6nq=3cXWcZ;DiwXq%j6dG;2Dht5zq8f5F*?qpayDkg)((^(7%BHpw4u!3lh%hi* zqvf3$O-8AJx12Hs#Muyg&>`clwDM4e;eX%A3Sduc#@6<$>hKhysw;r8pX9<`8nQ*f z&#N29p+d)r_OMK@l=ndGG`pIse@>#s zU{!!!0`$+%7{v1A;zU9kiMp%HloWEho{)_=?| z)sO-Vcvig%t42l?voVS(O^_dWUUC8#Qn0$w z^6!;%I28+YpCXLzW$XBZfw}O`Wi7*@ZfBaka=?PAPht777>7xodzEyPU~w>+Y|iY3#G5$ zCF^o{hJroA;Te0d81vYzh?yP=*9t){x-jY0vMfoa_H9Y00Ie+PSpNUmpZT{z{P^mU zQh0=_nePBWsygV8x}^Vrx+G$GNSej0ES^sEocyQ6bI)8uq+ttB`4_6-#E(ZOR zi*ttC=24aRV9lR(mVfuOT5|NJe{$Yfm4&W3vXv~TA|bu@WEMtUDS>6``q+Hjdt1F8 zSg}DZA1cgO!(XY-57;(V1yNJIl5soj5tpG+3F6IZd5wL0C1^Di0aUnCvhGoe=3x{E z-FJ84d9YZ7v)fv(Ft8z2?9>#PNZ*t+hWv1r{1V)Mjp9-AF@Fw5D*1(Byb`L9OoDm! zL~N=oG21b%h#M3*UZJw2Yy~!=rU8@M+GLQw5e%ET6aokK0UV5u%bX&BlvN6Rp(s~j!E@SGg2L}O@`1i1Q& zS)pSj5A7o_hb56IfCUEA*Tt{Wagotw*bU2!F2ksv%gI?|H|2!J>)cPB&lkCAAz9*i}u- zSzVh7s5&R|bwQOlwD8iLmcq*AecIX8ZWx_LN-^i^ zN=K8GXn%okHIhSMq9`UM>3RzqpE0jEOex#O)OXN=onfk6B$UB7#SYZYII5e3GUM=^ zgtDR-RtB5?wPTYFRe9vnWGko`rqKo$Ho4(5tK2c;sBUt{jKgzs$4Y#r%r^ZS;^#@> zwaMWwikQ+S^KP}zH8F3nN9c+dE?7dEBRUltp??fA&^1UEF|N()-bsL}U*g>_R1p(> zR9AHahT%DN1F%()SK*Ca3vzU6k}E+DnLJ#9jw*g)GMrU9hH+Fkt$U2ab2|4J7)}Xx z^_i6D(5Z3Q4K8ysu$!DkrUQ*vfX|4RFI{e->zyE}4(*JjghK}jyh9i3a>A-S2M>)y zmw$b)TI0~RFIjk0S8)qNJs2ggb^TS;v<3K!Rtivi#H6IjJFcnzE zL47K@Xi2N3bkDZ!l~JOKhUlZVTSkd49Dgd6Q3}&W=&E3}-f~J>B~n?*Qp+jJmfdpA z&gv@BbxQQQN>r5+IlBigF5++_JUquY7NpjA13&FSslzt)KnSebym-D)HxHE3Z>DLg z*m`w{kti-QeGy`U8^O~v{n^4m-ZiElk_w7kM1#$gSmltIhow9ppFK-)^1jF}rhmy& z&}1s!TL_iMpnwt;K&8TIoZazoF*;az8A_52v>9{u4x{d}VuYNufCY`w#DPR$)lFqlxed+6>eka5(#n~%g4(0`jxa#3v^ zN~wipzUVq`GFPIZ3M$waz+gSG_#RcHQU6BUuD;QFs45GM?-izPQnYjzkr&RwMd(jd z0b$_XM6q`_A4XG|NhfQ0%vo_}!l=M+NdBrRKxHvdJ60sAq@y5?R*yTHEHallQq0NK zBXdbnLzW`zE>MJZl@Lst;(zk5@}D+kCz@(D>3J<&0aINltJ0*0st1weHZ*^QP7YNS zf*ALYd>E-FO4tn;$P zMWC@4i3IZSpguAV-vWe!kup%FxuvWYOuawO~GpfIh z1b`aM-TFXnWWMWqP4H64G{qi)X<;9Tab790YXb-7iD<%1PGl%=wdsasCXXiQN}exL ziilLe>d2JersJVfLm-lA!qX+mmmAx?E%BeAZl~6!F%wUduWpFH+<5Cx!^yq(YnX(K z%MFXYr%B;jL&rQx%YPyjcHFda_i3`T?(T;(m4GSd%tXLoG6`<|$w7R3CqWu5#Q;qV zgKTLch{&3k8%Z<`7Gv@J229a3)oNeKugI)A9pEqMMIYyu%E}BjlkN2J>3<@Jb%gERJ!P=>n|8a#G%`XF06U_3x*d#>#s0TJ$h5F;%Frpf25UX zmLjrSpqTr*f`0)@+#NrRJA&Mm)Uyt(_Hu)FqhNdyduqh*FbT4en>7TjEE*?T69yo0 zOQzC3c3KDqC2>n;Z|8My$C6CCrOhOB5v89n>1^340)v)dC8kV)YuJYD516aBlIKS1 zvR|`x>cM~|4)=~n77TV`O;*9I>b+KWRc~MX%cRoE$A5vNa{F~={k`Uze=r7%!y{e^ zv-Dr9>jJ~ExVkQd8&jg2N$)z0YZ#Noodku^S(xKPa5b&Ct)Yo*-PY5&9|spvv*iv= z&Xc8zMZLg}C!sLc)fZaEOruj1WaI`uh5#sd5;vt+z8a*Ljzv9>T%PDn36x#2VmSwe z-W{jA&3}{08u`cKhhyS?@3^C%C#5y|e-{kTVVCDl$mbdO8u{l7U#J@{%cpC2Znp-W z^{=g=KO0%DAU}oYycO{L@7fAv!myG2f3_kfT{`KZ@vUDAx+3YW6k0(bsQLwwU?Q*WQ}Vo80^W`FPPvt#(w_pCX`K52$Yea{8o({veQ0&Dk) zzB}@B-a4%fcl+zjKP0+RW7I~$097tofvzEV_Obzo3T-gUqrQmJLIPgV6QefM&TeKI z$_BJ5hevK#QMtT!i{)XgtW|wCyv@~4JYkkkGU_K8myB5E$e3VViP#2|D%vFrr+>B= zjb}1H>;u&RYvqs&>?##m_pamJ#L={rk;=V{jPgXrWh7P(B4(%qK+(sQbMx>|((M<+ zk3u=NTO^d>IEuaov)g-rR$RIRB$OAG{Rem7NCJ6yQ1uvxZx0EjN*SnW+){=?La7o4 zDkmgi?vPNbbb&g}9jAbbtZCVNB!84D0iY6dw?0tYnD4rdgaU}0Mm1d}0Jg{7Ef6-h zjpJjD9$+Gx%qrVFL#LQ40C_Z-S5o_A43H9YAU)Xt*))NO(e}V3G~q@cpC+U%c#tNp z>Uc1#;4ht{eK9{kG)=_ioS7B#!*s4H``W74JG|=a#2}K))QQEGqVHdeN z1V#&S$eeVko1Ij4%N-mRPloD|2IL`Rh1Zh$U^-vi3mad`VLHV&GL}fOw6 za7pB!ehK0v@RI`F(cOYgI#1SfNPq7q-j0_DOK(ZMKbb^dh1Qq`vCw1wY$U!jAN$vV z83jCBNfiYg1`}~?ZNP{k4sRk|p!2K^7%>EGZJ@KafSGyXw`^wLz<*{pWYJ!3+(yyJ zi-U>kG?$FSIl@B@c*t57!!SY!MhtU%S(!<(7RaUZ(Sy{u^WoTAFjk1e6JlG&+}2HI zQml;RniIOQfB3=R9S)CyZT8Z8JDG{FH+)TZg!$TlaXH*=I}EUa+4hl5=O;5gJb8&Y zftTIw8_o&9uo(_dfPZIb7EZvRCYVQHV?Nej0;wp3T9C~tB;mtgQ$pp=yg%=fg*Od^ z0Y4muBQY*hSHSofj_pMlB*QofVuHG0u0F1qniLs<6wWW2)R)>d#lU15g4I`Fy_z^H|YV%8_KJG^3R#&l<%YK>-!%?ls}3n ze-u$#a>|b)N@EmnDP(?>PW~vJOk){}C4Ll4ey0VK>hvCMm`_pn-9`7(8=)`ZMkI3to#_^~2`BOasvm!S5D#-2t%UA?U4BFbj39M? zk77k0N7zT>z%7rX;b&owhtumE;rQWe5kW%7;pZ}i>#aIu)atctDiUh}`3jLy6zHl} zk0%FHTW_ped@Ey0<0V&-H;0u)>=GCEC3x1+ICTKJ_qKYO89JX>8rXIXU-<}}*4SAG z?fcotlX zwR84?I-`V7zJ}8&R>nIi>toc$(WIKw+PIgzz?^J9B**r{S@KJ8|22w7$;UVtg+oEi z-?LQi)mCo@7oc-dn$}mWURy#1Cqg{3+C6%)T&sVzd$!ebAQKR(<>amDra{Fx_U~&B z*fbd?eWo(mVKkWtV^MA&eMU@bO=ZRpVO;^BX)5blIe1h|7EBA}jHn_y`f5O#14z;Q zTERi>kEtAea~DoVLEI!x_mM#`>&0Q@MIpM|sHtiT4GmPZA|~KK7^iLs9v&kZ=q?lU ze3XBbJ1Gv*riy8>EVCS#|Tyiiv~dSyd{^pAP8+t#$fqf%1(YOh@BOm(+d?cZ%0d4aP@lnm$k z<&@4DzaBG#a2C{xw1s1FEhK^)37{lK>*;^r1zuUEe;2-6^BgqOgAvj6QL&QQ(!**d zfFi0XxBD=f-#^R^hl6i!I7hCE!#!}o&iaYT&bH>Hwi~ISNYp}#HMrqD*8a941W`3> zR-Rz<)O7Jzx2X+|U^5x5NIf{D2E0>1-p$-R91kSm`$5&Q;WxUZ+BtiUu7Rt~+lPOL zZbb~CO40bQ7j#XU{(6y**{hk*IY&{DoJ5OE_2io8Dr1`TC>!25dte9~b$ z@;+zN)AxWPiR#t#oNlk`Pc4&zTs!+cEqN`%_NmnLi$i;|9 z)xjh!=I&n0pKdk>0RUG99FViVFhqZ=?8-|P8qGCQ^Bo~4%&($OO-_GdrQkGUm+Yq%B=MYu)MW{0o_3Oqg@L*Xy)YmcufBib z-^!k)1wKNHUx-YscB323udE_ZrfBRdHzXo|g<$fE;tVkO&vPp| zm$LHLy3vhbm+U9KR0w5X)wcRI6H2k)om}cfKL%P?sCxyGu5ZzwoW5SjxO8Y*=ljT+-x< z&3tJcPt!BYp39t5!gRpI|~m!C-V_skdi0j>Q5 zTKn$^t=*KY(VUY3173gsfYELhM!P-{;J$qTuRS7DYM)OOmh;N+-(kK^5 z2{s&2EBBzQ?*~`pqB3#l>!-ZUv|{##%{Ck>MGEO&#>yrV>(_tH6mi4O07aylb@Tg! zo;G8o=>IM$lB9Uzy}zZJn$EH=r^B%y`{I2a*G58NGO=bEg3Ng!NO-!Wb(r}s+|t|5 zW08o{YH@ean9!P_lIc{Y{r3J8PjapMZPx3S$+Qe9Y9LMq1zs-cnyCr6R55cGja#-D z2i}g>sM#5F(j9+fCPEMWG_ZK#&x#lh!|Vr>V8Nr2F1t-M9{FFyEjWvA#g_goxKOsz zJM-_opX0*rP9kB1%DciK)=3xw92%7tL@x?!Hw=MJ4RQpaPQtHN4~&`i%2=B6mm7+0 z)EBJi0xCO*J}M_E+bKFaQ?SWR)=PAuP3Cyj?b36MqjG5Fcx;R`RzmiqPE^m;w#lI@7oGnx@lt@kP^(3TRlpRqY@vbqn6;y zxzAODoIMrxW9(T=TL(E7#uz3>>R95G7huU>?(>3{m2{#X5zHSE%pVcVze@xY2P+N= zi68xeA6Swzu;??L3FWxbphTaL<1-NJc*ndx%QfQvPRaE3tv{Wvs-% z9#)rPLB5SnV36P2dG24=EI^e(W~V}53=eLYy%?cGpc^7gyG8gV;4gz_j?>5I>78Z9 z15o!$r@_jKmT?&>+i7_S%cJszEtQ=Tz1IK}(%oVS^$U6uPpEZYiDFmM`2O=pf;l7#6X@pCf6BI$}9JM1(1bbxBc z6;aJ>29adtpD|vz2g*xB6~B|MCpdqrW9?mDP^lT@#lcw_khKdW++ot}ARD(8BNtu2 z-k1pj56|)T`pN0F5My8b>q#I{)vl&;J_YBSB|&|fC3kblHo@q09>l&h9?=L8Frio} zQ*sb5V>eZ2@CxBELkwhaFAs<~OD(D0B_PKnTZ%+KQ^1E$x^Xa#z66`w%}{@{0Ka10 z&9%>A_^_-bmP!7ii{0z5f@yek<$5s{>fE0OAA>k);A`Wo#DogAyV*zpD7KneSUQ@O z#n8?6AZ5<=r z>HP-c0vG)dO{6z$K@Ih7Jrp1R1O11?AMLaMlGhsbkTs@iIq@ zpb`(rVuaZlz7Q=j$`U1MI6bDTSCW~hK$aiXV2bX>!rH3P0&JRQw84K)_V%Zdr&_T; z(e?B^`xBjbKuo+b&d0GlIq4=w0;u9G*U7$QxpHSX_(ri`cBFiSirmePWl3mVowRX# ztiV5vqpqtXqmck6_(x%5n;seF*{z^HjH42vJ{&$WNGS$YiH-!OFwJh))WA3@Q8E?N zR2*$Ay7fWr#=d0jYAb(+7Tl`fVcO-Px(_sNt~B&H+uO=>nA9bpu(dO?k!mJ_+7i*} zGncPzQOyS$`2lB;8aHpZ6=Al^dpUxaPpdy*y=s8;2402L<9XHWa@)o_<(yVbwO!te zv&cDx=4`H*hF5h&XBwmzi|t_9r2|*Cz&x!yR(E+G!~*k_I{AM&;+{R8gOJQU^?pr0 z)9i7fgIzMso>j2fI4ZA5wa7H3ZjY|GhUX@va}B}$%x57d=C3UaIWU8(mi-<(Dzsvu zv^}UJzTt&`$b4f6L-1K-{T6ZcF!$|oQ%u~qZ-tv;%D~=tgPUR;p4CI#z8&H|Pxu)c z>}5>c&`PgT@u7e9)Ju6x{AJawr-#<|d1kKskc4)WWeX9ftw!rod}8?RqOr+X2G1y7 zE#szOuRtW0ESh|2H${~N{$)w4F_y=Z>#OA{p$^fON=|x=d>@qT=i?v_g*d$U+2HY5 zQMB-H6NsQRw<`Ok;EPN{g?_ECevCu9=7O4FG@LLOa0b0@z7+2EWXc5M>^zdC5qHAW|kmb!f zF4JaT^*vy@Vw|r_oX$eLkiIMj0I$uP{+NJWG1Pv4fUX2+L_3DDLU>If1u-Y^ zOE8<=t5cv;Xk|sBDLfc^g2-ae!<1X-6uU4XEgEH#eMIO+mprdMx;>>ML_==HQNiMy zL-t?Qw932REx+5?Y>)_0Y7J`0fzxveYG@CqSGa$_I_?$jC|KBr4+|ZtABNMGgf>un z=EIoVzAR8JG3l!%!tFW4G=z(5XpnCp+cWK5yNVnq9WL9$Gjss22kkW*%dnNuI;jC> zi%kvfarDvhTyJ>jM5?1ZZqnmysJb4Pz=qPRR0KAB$&0F8__uN{iSGSNaQ`)mM~T?% zQ8<4T#JLT!-QGpxJAZb&x92+2wgWsaDHM=L2XBFC^fo{cjg)~b?v%3nsGyNB@Parc z>?C6E8fYmvC9XDhX`~A@Bb;$DXcRQ8T1ta%8V-$P|DLhepwWPy^)Q-Dggq>GmOeEc z+(XYT5tbN}l7u0Bc#@>!M}f@*kc1(9c$R-egCqDPv^0nok`SX0PZC3g(07v-Zwf0w z)R2TvqkqUe4@nHcjv_g6bL<3~oFt8Mb5;rhWlj&%s9|PW--L0pSZ;fE4)S+%2a+bd zx{3I^NwA1!@)v})tNysza|D?>B&pW0h9r=s19gj#pLe6170Dg%awGjS9{KIcM>u~7 z*t9!!_o;Nwx_7Yd&o+(h!PzvD&_%7Pbn@tBnK_2DE|RpT4^I-{4X(IU^w4P_N%`Un zI!iw-a#E+nkeqFA*U*IHlGtr8IWV}}&XV*5IdF70pU`d&{n^Qq^!bNN`2)u-9WwE9 zH#x+${P<_d-m-&v7A?4}3`ZDoo48>lXbmKiZ;E*Kt!66@$R}264C<+pBpqX^fh5J?JUQb=! zoEHfkdPFe%KZ7{(KBsihXLWB+&dHXf{yb8dMe1qP=;?=+V<91zQHqo*O-h~H~sXZ zSdlM2r7w=9Tk?;~jU)f=cDxAUlnk-a=_lbV{r6l*B!3>o8Rf~>a5|O#EcKP${f7g_ zZQOrT4{6z)bp`mfIwemYP(#r!v>=xMBmV$UftDNsg1#)71_t+79j$-5KH<#M&XTb> zmToI7E-i-EnW!D{4C7$Bwbo%&Om`}P>`&oY>oCS8$67a->ME~|W2wV9nQm-mMhLrI zrw0s*iO`V8wnifiocVZ-Mi^WZr!?{$OOnmFqSi(v!LXd}_=jcs>lS0l%(5^Y>BMvW z*Jc}4S&p(0#lmWYVLN}P}kSdD&WH3otH?UmgaaO_4H5EO4Wo=2I5=w}w=;dn{u z$e#@z8Hq5$Xbbm!O*SHoN%|jRBf@y4PHjXt;uyv>b!#EQ2&c|OK8#c9-a>?7M9~&v z2HnF>A%Ouzndujwb8S~iw#a_cOGQ@p)ebA;0tP2tv$Ho}DT9B07{b(DS|m%L8_?eB z_Mia*F5e*y{c6b`Ip`IAaV+U>0Kd{S7XkpwOcPls(`6kDU}~BJF@9a9zBa6wn3tFT zX%_y!yS&+t6a#-x#4E7DWow964f*5ihrD7!aM3ZZT7}@EVKcgDInQd3PAl4b@b2iC zn!fclN2m6)UQ2&(bXsX3kF?|8>1`9>nt+FG+HMPJz6XhaxHtf2QgmsFc{YL^rj?YK zrzD74WF?7tE?dZOc+>|%4}|mnZA}9>p}*#4nT?%pkb@H?-DNsrcFC5wMGT7w6iU_< zW`vzYi?`9;Y-B?qRX8~)wt#CgaX*2`-^W4wRKR{+g!)v3nV@14@=dLD;g z(&XitKdCOvyQ_Rhd(l^Zy}8>IunDb*F*t>t(;gHap3>T@1c9ht{|aL>+c_rGrunL1 zgWb>sK7^uQBVm>OsTX3>D zvTtz>&oqDa5H&LmwtEYMX!E5JVEsBVBrjl+XN3CUWck^?B? zFQZ?G$7ECyoUDuB^kmsnPRY^> zKVE-znR6{s;k@3~CF*L4Sp_to>)LyW!pXSST-WYH6wZ>Rb6sCqRBdtH!??;cu2cNh z@wi$Y&Wd%yb#NxDE!V;Mq|Uew&gi6Z-9ndhE8khldZxe%i~ZoVPAvPGNMW)dTk^q) zqi%Sx70HM0G|%Kg2a+$)rQRTso{juR$=!c&7$mi5_-2NCSZ^Ghs!5vO#J3D$uz}5- zm}+z^&wZ@^#C4PmPSmU+)<~M&0rK9xrBu-hO`YmNbBJs2g^TJDPan127cSiW-9iq% z_Y>X4Y9)!_R`BbSM7(Z8kH)16H-mpzmnz&v-cq{j4psUw!!76^sf>pk+OuW6<<5Wc zOw;v9dbmry6G;zuj<=QcaKmO(z;vR0UzBX}hXsT{0o22CC(DFSQ zp1p0imM3@59<$-u+iuVD>}|JVdiJ*4wLN>=Ef}9C(JVc|rATTc?9$tQSktt(&9hAn zR2=`_Xv#qq2{vt%oP>aYhrU<}Yb}56<=pgIs*^w!N?6=ZxHJNBJL6y)eF@qOt@q#> ziq?Jd>B`vQ^&YzQI)}?J<|AWROwEN2mr;y9fXlMft_)kX|5r<1_#V0j1LQa>H+;r* zY~Oni)hnIJcJ0($^x&ckcWeijRp8k!kc<}2ZgT;bemmzmCW}3624N4bvLJuWUtm=Z z2^5R)!Jj>(3XiovIN%ZwH@DudwYhoNb~6Qga4`ny!I4(wRL;z~g+nUraA)CY3*FqT ztnvvv2chSn$GQ1f+j;&v>T+%#-~RcVTvd)xsG|8qwxK`$s&W#3Q|MaJmv97#8YXW( z@Z*=;RUWH_0awAS+rl6f%dB0C!-an`Zp0^C1!FBf z(KRYe@d+2IFvO=6m*qfC(oWnBE`wpnG$Y;l^(;bITjr7WNcA-po5WR=EZH#oi=+P{KU3zh`oX4Ft7wZoxDW@Ry26^Z#H`rUNRkO0utzStksmeHf;C&b`6PE- zZ?mp}g8~~PKiO5-h%tBIPVH_=Y|P_hAI%W3_HiKoa8%35=83Ix63KkCLNNyH6avOE z$X50ljOJ~^h(QFq{*e!J7*#Nh^-K^6_L&}nD)88nndexP<79sk#r|#Z?B^t!9gO_> zD&NN~z;S8yFt~9>Oal~SuPV^&> z9>Xj2)PXpwTYvJaKe-Ehv)@vwI zEqNG(fTHVs9K@lJ{TDye@pxtXjwU*Q2OBN@7ePm*_>6zPIdF=c6;XOuC!QY_TMMJnO&hpPlt#Vp)XJ(flxkzCAt7sqLQ}YLt4-L{^0m zoUCV0h;gNwoG35iNzD?yQMP38O3H*bEoC5>Lhfg$bU;N6O_|8=zN zE=MO2PV+OWJ1l|yU;8H)S4RgI{fohI|LXkWY(?*RGz}JG)g-Tp-c}%-p+`0-@Y%xin=PP;oL&VIoG%hUErcZ7xd+qSHMavO%DsTQTh61kGC0pqAH- zIvvi$thYf7Tp!L-zAwK5vfL2RE8U!G1<_15z%lGkr-N=s=O2cfwsLuOv{y_Ad?SB! z==6eO6Qvg92WaPa47PJeH%B{~b=N5<;YO8$MLuub^-@dg;~+_72tAX06{hXx5nQpN z^NX{CfgqM{F~g~yG#m=>-sI^^rRC%T^Yv@(Vlpg!IBm3+?uIVYz$9=Isc{ne_@HEN zL59MapDY=wAyc#{K;e{6YXNGKYAJs-xqEpA=Xj#z*&~r`m=%g}$!rPvJG zbqYme0w5|Uw^kIIH=>n1J{ZK_odCqj*E&0|73l|K)VF5Z)d(fs>a!I_FxdU~Wa+^O z_$(nrvG0_?BARq&-ogfFABD_vg{Kc~L@Qoxmw5Wn@Qi3d9V>kr26fBf%X7{=f6`xl1iclZ8<5%ybf z{lR$qeAi#A5*3E=e+b)97jeo?q_2gR?*14B8Beb`^!*ito-4nfp;y7<7kq}s29714 zp&@}g(P!v2(1PqU^bN4FD2q9Q&IO>M8^Jn#gNDupYceO@7?XzX2qb@N(vbJRelcw5 zmtZM}i;V2XqBL|?c&zVlLlXuk4{%&l1jeuq+q;6}yUVtbW>eeZ60S;pXoJy_5QEEG zQ9?|2ZLU#L5vyO_TZ|>C=FDV7HHdgbg3S?N8z>>{0o%Z0d53^);P`agxyckPmRh(M zZs=m!_H02$!R({61>t|%S{I&0Q`KdQ5|&Ygi?9WYob1RLgzIo0t;~cga^1*GxQ^Cd zX11F|W9U@DHwN1lm~aW}e~2{*SJK+}6Lll81yKc8%C6HGEQvK|)*!kc$K#M}s1_eg z$%g9l!5G$IKVNWs2CzZBHK@v0TM%hfBv1D?AY347Q$(^}!O4FpFhvMYljT>yxNs{_ z;UZK^fvWh{k;RAZ_VGC6BC3H1Q!chsR%&P-;!ZBYg{5qZuO*=f*OmT<*m-bCY8!E5 z-TreUq2MakHJW^>G;?O?p-N{Tk3fTKa@`0txD3}?puv^0?gScK0ZT6gkpLggQ=tvb zM-2Sc08gS3s>^?~CG>0hr|Bt+nKKB&gwfTsMLmE}gX&)QnPAOwtb2PlF!zY!KdZ z(u>eKUlF2}2UySu1C$XyP%y9lY#~WOi*<`z!%Le1sfB-py;`D9B}!C5gz}Rs%|MFH zCL%-$&s?`G0svSME_r>VZW;i!9IlE*Yfx9oS|BesG6u9Bp1-~&T~xz2^fKC}q*7=W zjGd3rc7No<97dI%DLTyxV7JgjMc$9Bi^{%gqVj5w*F;5q?@bhaK2N{>qmc??(1&lN z;)0;Jf}DSvT{qG5fW1NSz9JNYuMbrCJPWKkmqtn^s-j0Yhc10;$g4K>FkR{4+L&Hg)Sk!DOfV_+Txq3?< zh!@z0qyCwOS~ym^W%E*6*q0j}?^0RD>1QLsmg#5a1zm11T*7e9r}a5ug9$%nvV<&3 z&^dpT88@iSm;3oPnv4R5>_TNd(l@GIa2s^qqwW`s#r@YfEX_z18dPp!<`_JY15N9g~R-Cr)C#&kzYfqw3OP6o6q}=)_1U)=f@#M8o-t)^AO!tXee+JXM?NPg0L5 zpbiXsn?orRBzKdAqoxCN+(PBn+bqk=%Z-z0*8eL^PBZCBdCiDG5N^A3N`4l`(I z^>WJ}x4BPpLx0liKSOu>*)xN2WN{y&| zEu7~aoKIy97f*2*3bs`v-+MB^(($4%LHsoi7l9Z26)tjTX2+J5sYYtP-!d?l=NQV| z42I^0;r=mm$H7!=M?SquSK-W0k*RCF#x%d-16^5m*Tr_OEZma78ZCdFB2jZqv%HdD zL-Ch)3on@mLvfSyOY5n0MKUQ=Bq8Xk4vr2OH-!YrPrNBl{!8xLa$CGvl<$`yjlM~= zm<;RcJO=bIxRFM7 z5f(BGUKR{#Mf2sxc{G0wbdNnFG7h8TJK;ANz}}YMV8nWW;Ac;t(g#P&n5RmQCEmY( zlDY4mzdD_7p1<%G<6tG~@?Xjgif>&yVd&@f(`WR-sgYvnl5IkdC2d^M(wMz43Rq?4 zFrs_SMkzgz8U=X?L_dzBSUSqaK`gGYuuUf;Ww=~Rqty%Kk3IRwl&rjn)J0bb$}+!C z63*E%itWfKm4)Hq-IU?NKBcqbB9Rm&{aVn)gH7b*1LOoo)n*LaBsfws(uULPjL~zlYDPhOFw%g(I>8GbT=25RgCF$O|4j%=t4hcSr#XKNQZ06nOy;!s1gCUxkKpsJ^4{1OH^3> zZ5&M{i8+6ZZi7TqdAei+=I;mZ&k8kDQU zQIf76n{M4Thi;@FU?b3lAG*MBJ;D!FlnDACYteta^i3t?ZwJbb&2hj7&0r2 zII(j5wytcvRG7AZS<%IY?k+260MoB4s+Mtm*A*^;#Fj18UfDXLb6|39Q&Swp24qCQ zEI`*;>K`t}3A&<^QLxxbt`MpW(oH1fl?sHs=urb9StR_}pNap+k1_V~O76mT74g*S zWomyK^gkf>fg~tPC2#~H_{h-TtZwt})^=~Jhr|YS5~F#swbOGOGcm2fI%e`FxQXJR z?+%#x=qOY;Qh>tqn?z+Y~B zDp~o@*@L211kELB+z9&+E30nJFA=$YV|itkO`;Mb{Y`gQ}5qDiNF2~ zO6_l{foU$qQRf3#6C{_lpy62PelPe-{2&Rx1Zu~m@Q7}_oFtiwExz?kx~YHVkHmJ3 zqM3qYs9Atya{eMn-s_s0BI8L>XHIkNi)$KxF z05mk9K{>$~7GwngLkJqkfT5b26%~Y9L8cVO477!&$W<3ZcR4`(GpT<8JH$WZsBThr zP3A5O@lP;=b|A~gf1_UwnxBqclGkFFc-BNzEt43CvWF}+4s97dFpP?kO9+m}RDPzd z6L+!s4td1+nRYmD?n33OS#QEaPRVze@!&d!XH{X9&Oc8x2fA4XK~t&#pu}2{mWV;? z;7?5BqAZc8-hn3>EL?xwXE8cqrjCQjTw!^6*OKd{b(S67wK7$%{|ttUT0aF$5y}#I zDqa%)bUu-;dvPINr|N!q9jBG<|c@wA|K&4K5uxii#3SdhoWoa8B^H6}f+eN^npXK^6!w)OXOu ztX)e&PkFm6#$nP0j?wBuptBt4kCg|`XQhZl(bqB!73Z_Kvr;s(8Ad&HnW=tB%ti z0M3x8%d^+A1{XtuqH_wg1F;gA z=-dIuxnPVFH&5)B>WRIB##UNBvHPQNkzJ#sAQ{Htd=Y=e&L7*rm1aJ;%{Li2FL_{) zKhDQN941L{@iYAVU3HLr?K_Imds{36DwQUdsq>hCx0KFOpbE00>r1mArw6>RK!r6NN72_{c6;y7 z$b`K0r{RC(UdTtWQMGN#Q<8ubZBTAmkrYKE8E6aQU^X<@OqnSHC7KOI@1yJMdj=uc zYDfeLGQExgtF(USBNp4q<~%Y|-bcwiT=>Hu5`>n;ZMMWf@`0a|~O`DsdoErKjY-5XkGw{l*hSQ$qj z8I)Z{rK@{M;Zq!07yz)3!O1ci4u-ljWVIWF{Ry>uEk9N}s(VsF>KY+>Y>|cNAqv>B z;N;~4%B6bNMVxFCTQ{CO8W5=Q2eY5{ zOgVpkRBB-6kOhzHTdEcX4UO^(ODi5)*un)FMuWIYl}uN!80NW$S!N7Xf7sYY7O<1y;)@#BcacJAoa;oX zuQ}~(;Q|cme(7(9!d?}Az}hF;D;TD)_!NKF2`v4DMIk75sT3Cd7X=baKVs1c3UDHg z%6*_ymVSdp548PhpY&dGRm9fKzr98BAA5h z%dpMi$_l=1uCBbYm$F+vtFMYTht(XInDSDmpGYDY8Wt{|s38J>hoRZpePP3e6)yBS zTvOrj-oix_WKFKy^J~@OaD9byEe?OzTDZ~Tg||?4x99pdIm#R^+SGkow-=*7qbbY={v-;@c(`_}5oxjVlx2n>i_?TX+c-W;SdeXK0E?s_N1w+XP zk>lZr?{WmfE<;c@IZUKPD1A$j$B+cO)Ra#vdtkTS(93RXp_e_1?Z&YO_85PDKj6j} zeN$__@_Q6pk8|bs=t2>F1~tRDI!IRih`vQrQ7YQGvv4p zd)ri(U6nKBefA z_O?l8VMQ3KO-!k0&AwI<*xPPb2KKgF6N0^MPzu(jk2HHWfKII2jGVxNNR*y$CFn+C zvWsvU2yQlsMpX}C6poBK2}X|1(-v$mXkTf?Bq&h{_S$YG2~i15by|9qrQ>B^Xh+>_ zmOvo z4i@2xpky;8lSKtRWt%3-K|TjXZSAB@?rLZjn$%@XKohr&3FsoRP98LuD%X%gvJ+Pv zg3jQF^d_kjH$&y4YdsKS*A*`7C#DKa^jE7&2+q5uy(AYkXQzMsh%v)t!>-ES+v010 zgAy>q@I}kL-L2lv*3NciHbR#nT)}cL?L&fWZAL(o0SBc?$MyR(4SxON-#Fp*q&G3tLlVtWmJpc3?~8w88}xllh-& z^_!6ht5%OD1&4ovENcL8ga<}DAF*Y*dDRWF5SQ6|t+B%dWO`twSfL2FXlHQ>Hf{S7 z!Hc0sMY3gO4Nz|s5_skdIO@MW`1Il8YH*al!7n#@JI|lLxZI!%0JzTBmb8xSj+oy4m@V zb#%W!ee>q`6|v{yXY$9N{n(E_^XRk%mjo3STv}bf`cy;Y+f92eKn4f;`6JV=)<6eA)Yf@)H^3l zIbh6-M#jy%kAktm8vH~fKhonx6&k8;b^6mB)!B~jrNQD**2TcKB}OjLbp@`8Hb>D9 z<3Nm=tm0cmJ1?uMm$9)?aO2-i7J1=3J=BixL05khJ2I^su5GT5vKN=iLLp(6ELZe{ z9`dOc)~(D^XEn#l z@R@(%LTh9wwuRU*y8T@(d@ZQzP_6IiqhfJ`>pek2TJ@?R^Kdz`S%D5_;>!4w@LyR9 zNy$&LQlI|9mkF~)IGT&-Fq+?gW0bn0Th-NfR)hC|lB^9Y(-P=Rx=xOUg{z$T8n!@? z0po>HP);p%(G_ilq!dAg(KClvAP8#O>OOxJ@m&~u#48Mh6>NpPGP(<+aFGEXVOFbE z0?XJg3<`MwJ_TJ`p({gnVNgTOzQpL$3VBGp7i?!dM{2f0W|oM=$%I1p*sEa{y^pT|e9uuQOyYr+A&=u7nhI8=y0cYHTGQBtRqaWgONtsCIu< z$eq(?SD{XK6fi2(X<^74giu5Dkwa2>RB&C95UrUJ+~*1DWhXol8>tC+c3 zw-t~WxbzvRd~q(ORH^FI9%rJ z>JB?Wcc{m9a;&)x_0f)QsiDA`sjCo8!u6EwK$NgBX);Q(V6-2{ z{=Fn3N#&UMOddxAH6TlHqLbcFnH0(X0mSS;l@t22#Swz8YW8jquD*Y8k1)e;a|bLs zi}|O@<-h+(`6kDe5npGhBpgr~n;v(?42G&}N0BX^I~l!v@D#XSqh;_ExHQ8xcnVx} z;Sk#duCA~Q8zzG)bI2I=cD%xfC zq|2^^wzZp;Oo&c~TUCDuzjR9Or%w6B+DWb6j`A!w84KCG&W>a5_p?JT@#HW9eoa^`JaB ziL?;5xUfld8xFg387_;vhm-L9ezx%c>dF$3!T+h0SkP|^E%bkFL20pYg;8j*CPGzl z2qT{r!A5+dWK~ivYYPbgBn7Q$%RUZ{)`b(qAg)l_Mdv$=zl2ZS#lgGUbA1UzqFTx< zcvOt^r9pC;ikMLDTl%O31T*N2hS7BD&qhi2U^F^RKd(I-K?JaiSfE`DCK!Z6*u=rr zjBD68yl&VhihzFv2xtT}GIE7gAl`^jgo#Zxc=F+a(IwbbETNkyM!v0p1HyT0>s|7& zfrU*Cf)InGDanBgYQ?I9y|(la4m>!mF_qrgUfdKf6JEKKPqKpew)|A{5$A2}8Qg)+ z$>DGarO!bTH71MA+y;x4(5CmS2iD8%KDDBvdw6<$d~knqboJZm*^&1T?{Y)__YZGX zG?m$28uii%%=XOo1RHkY{EWO+6}6XipHgBzCpm?#2m!@2FVK|>@yWm0j`n! z@oo4en3Zpl^pWoDCRj`h03pOtiXprkj1Ci#+~+|ar=J@K|OIIGHDT^zg<+o4jr3)hG2Kp@l(0MU<)v zj*fs~eHaE7FtioMtq~pu^V)4Pu#AHfn{06nEVv&H(cA*~2c7y~G$H5{Mhzne;F4wMQ-jutmKv$s}zs?xlS+o-_Q^6$xCT^g9^RhSuuXTFyhresKJ z%u+BZ&5Tk6j-yAlcm9-)Np`uWxjb z){@yy-D;pu3D0^jZFR*s*Y>((rkgjr4BSWFZ6+F0VYiFamLD1Rtj)wjD(-jws#xuE z`o1vkZHhgZe^dQ(`Xq6%Aj+d4yzw@ROUWK5VUn-pNsUEe6w5GhQq9Z6fcu*p7a)I) zx3cFaU1gxLlJrfI#E4DlPv?t!=9WH)8L z;(RkPp*)%HTk*e|a;81WL_5G!nLD3&l#c1s5z-~9(=nE3noj$O?J1Q17H$%X(z|>|MXd1_Il%|+}PI0f%hDhyVcM|3m$(MWjVrG zFH#nILq7@3Zb9?BD66o(RTexjMr0I{UUE%RV}2PYvu&9MkLtpm{A#PWz10IUv+(u( z-rGny9q*E0lpXkV?n!x^HjZKcqPH}1{&M8ZQHiJv2AW}V%yHf$;Q~&wr$&XZhn8=dq4Dtsp@`vs?I!T zo~f#SYl$p`L0V2T-MVoCwXSs~{kA${@N#Mq zA&9Fd30NHLi5}}~dRwZcw2xnf=RkbZqalm_tw9HyPL@?n<%+$d*5nq5jIJv4OF5-& zNT)*->aKlMB%nTmFspUCWzaMH$qX06pW`+V9&?KdCQ%zlP}{TDzzCq?joHslOL|a2&Mi)%KyLOJ~GY4{Gb#(SI!DwZyRZ{(Bbwn(h((FWrhg z&2wxY7ZyVS7hK|Gf!NN5&76rk)yAOXg`Kr|hi3b53A~U+2>r7co}_{L#_5GU#raqo znC+5LD9&-ISTD}s+CP9@YQNTt7=6C6>UfIT1KHZv1Jk$FzE{JAzg#b;VF~I#=dnRb zk(t1mW~{i?29=)J@M0(eN^{A%{|K8`Mme0lHjTv_KvdsvXDo~w80(`$a)7TPR6@~= z89Y)XfxK|xl}~dndQ`LOw)VS$DjG)Y~ z%Mgv9%@7n`Y7Flqo+s9g4mJz25*FY7_TUSl*UU+}8R=j{QgU?8UMFT-ZE`~ANe;9~ zpF|V)%fAtsyEv!pd=xxYqa5QHiR0|!tTuUtNDi(^X4{C35&bpQoMnhPX1p^{NsCiP z4phW9-XP(^g-QX)ryQ5n%mqATEsWY{>abT7qDik*Rjc>oCn7#AOj8TITOdiEPVR5e zxc)}`)ad2rL`x4`n5&4IHr-9{WW#BYjT_pS?#~xg9;VZmj-#h&sCeq(hXdxKY9~rP z1VBpH{>Dj%7_2o4f`S+p_agpFVEHO4m@Tatloz?IULgSZXSdyP@}_tzr&t7e$|JRz zuA%|!UVf{UH6m6%`MVr8HflCQ9N@NFy@*S_6OHCVXpNZ%^Hcw)Y`~WSX>pACzodp6 z_%K?m{GoEKF}21S9E{ze3bFZ{9`Q_~@<`^`z(9r6>25`_^&qJoNN-7kdHvA(?!_jgOVo)?_O)LTf783)Tm_S&O zJ{(sWE8Cx+54}4eXG`phrJ~fNq#A@+Y)626b$&vbSU0!t{Y|{Iyx4fQ_tMoI%jzc5 z*qSm)OBZ|b4{uC!X|2&RM|p={@uIVK5|3d$we8YB8A=Di<;spCf}RVirCgf~m4RH4 zHOvvl%*tfvDdlxVQ3Zd&vx3mHe$D0zstYE3?5C2Yr zQ$R`Gik^JBKO~BiK2KBDMu_@=p&9}fpOO4rgA<4KTw7*LD+^?Dj~ptsW-t}6@nXQ~U!IQUc=?)4{QK=XdgNBjCM zNjU1Y4H`frMxiUb21IZaGhyjW-~NMQ9^;U)BW~c^FX0<^@N2<>J|s+JMi1cb(7AyH z?m~??XiS!`{S4G5JZ`zDG`#BYMtNLHX}jd7ZG6euOBZ3j<%9&mY?J531x931+K8q7 zjtSuDM&-NZz)1G8c%v`7*>c#8nfP-95tgS_0rF4I#5)*-Q`UwoUD^qNB` z++=7KIIjOWKNE~0mGnJ0Bo7FdfZDT6{MKKJ3%&RXQhidQC(!6&{{9SmcBr|Cyin`f z_bueCueTId7R`IOaHrW$=+eJlKSN>NSh$F7*r6BT<9hGu>aUUUc$tZ#++y^&?dGaP zupnYlpI=F8#B#W473{>wazv#txnK1CA?=~N3#Lei@^&54NeXGx(*tZz2e2$HOy<1p z3l1KVQ-S!?w7FNA9sBti~*mk76)>6we)^*|9d{xT@%@B&~7(~*~X0>ESGZ9q{=5E;fut*enkFT zk~GoEY3`^3pB51yK8K84!k*{J!J)s$n{vg(O~hZVO}5&M8r!gcZg~h4jixrarMiDc zg{U{8%J#~Omy4gL%bn`qMGGG`RM{BjO4g@CGoR;&->a2iOvjQIi*U>c)G&`;C`$~@mw!2%2c2zuBq#Wx${Z=UH4s} zY5e`1FsTa2iwLr)zae9mcoM{WuS5Fk?estvGss%J+nngeI0|K2?tbGt9Tyv-)eT~G zf-gFJB~RC)HirPw$47*ZU9o;0REP+HAl>Hef(;fQ+#|+86MvQxm=b$*=xvVp`fXX0Ona3 zxoQDdPrv1Q=xsB_yTO zF2fmMn(3J-+0-wY#ZA6AFwd7rzo3>;ng-3^I=zWrx=zE$#AuwR37Wf=3DK*VcrLc$dUaC^?8n<-0e_Jw5gvO^(z*3e{HTbirUl`dHPR>kT(g?txV)@pmx7D&^dmYkYu znFrc0-$o(;?zi0~LAhDcOZxjh%spW{fIsws{HdGKNJ+lPL*HyWVm z90G|_$p2E=v8O&0@ZCmTicof2>u_p`x7Ji#7@Ybyx^0>%HCec`NuOs3Z#sg#&Q4 zW10s6+Sf&zL#NfU;^Ax(?V2?9$a3T%W++e&JLYtFwBA!Y>mQT7JI z{l7}wFbE>ipCQ%^K_qS+@*h2Nr7T67Z(t)a&CEmh)y`2P?5qr^@7vsVcg=GgMn46{Y@XGk?Wwn+a4|38$OAa$^`tDv84esxI; zVE!M#|H|RQrWU1}rxs;|mwt3V-LquLnEx~B=UymML;f2dJj{1f_Gid7`)FZk$IwQEG^XMoM@7sl z*;D=Bx*s`yT1`$6c$mK z^7g@SbJKCX9jo$~n1xm4F9)JLI`z8cOSgk5I`!>Uf!HI1Z9j@Oo%zN#Cbo9BL65N? zzm2{q|JRc>M-Hc(*2MX0qc0>UCZk{Xi=t)qjXLXlB7^?N^fe~*k>~B62vfdB?BL7^r?xEFH z*1k9x1-Flprzclyw+kb7jt!m=!A z>&q>FPC`#E)3B2IeNMeuiu$+*emu>966^G8T=D+(`QE_GoG4~4KNg=X2B*PfQZ&-r z9!!EejUr=&FQ^xNhTdqABpd;ceGv+W&D4I7q4_X42wxNAsCe=v8hAE!|#C6&f=k|#u;_nVtr!(YkRzC5M1NT znx$4#eSX`L+f_QA_YE;wHo_MIeRX0|-g4)s&S3eiBz&IsXHy3sX>nd#bxB#V#!}vZ z(6Fl`J#BJRhe_Ce1m=NN&EV{nUE3|XnJLGEF~zNlwn!uJ0g&CgYJ;dJe-cEjiRY$b|Jr=6F)BF@} z@aR2sql@huX2oxwJbH8{o!0&`&8ZV3{W^x?I04$@m|hjZY>e6aKRv9J>8aeZm(ebB zi2pXdQEo73QECY=fxC5=U2GkQ1Ogu2LA~VDMz?hE04&8Rk|Hwjoe_2^qw)dH*LUzV zJa*b+tKccPfny9(->(;Y4sJcG!Ct$HkRn4ogfTKK(8%%_%2=To+7tTZ4opWx@@PRO z?&`kV8uuX6M~m{T=QJ>Ks&26R;HjGS=5~5TT$o*0$)l}2B~Xf7G|mL%CTrUABHkGV zD19^_0M$`#xIU*kNE!I*kq*WY#&6;xrS8bt3IlM9yZ#f;~##evG zE!uwq6mA+C6fs+GWl1c3z}f;Z1k`nA21}>X)Xq!@47;-vL!Pg=8zL6>cfS^mkC)KR zY6ZBa2ytUC!G?V?kOa8?%7KZ=xg)W-^g`k>#FBr8faDtwPFX}|4Hc(m6KX9 zbAh#~ym|cfV?^DUVE&v-=|co(1#C%gNDen`AUeeaxgTZS>;~}r2ZI%5u=Bi$l?5uX zqIfh0a6?9%8m7mgKv>MFOWxTji&O9;qhTCdS6!X{-uRUDz zqpSkKG|P2qh{(z#0>$C^CH%X)1v&p+;-59oaLv8Ts^mqJ&ayQ}v+_VTOdcjm8CTm#%VY+)dC|Xg zmU|q1wjfsvE6MZ+JCNyL^s^DG7Wsc6{<64xU4#$2%Je` zv=mcxM0Z}9t#=AE`#(d+WdQJ}e{l4>tG;}FIS*DpOZouW2je1%KfTuug-Ap6fpSF~ zgG;Mq<;={%rCzC6UH+|8ccVJ8O|}<(=#QM*^0YCMZ}Oi*P;%wuEeUu;2N%Ni2i4M1 zgzB7u1q+r3;~ZyDAVWt54~Lf{dfh9tB3$glVWKz4Cv@;bBj`2sLIV_A)?tsJ1t8Fa zNzMO4IJ|uP`;xhF`nojNnCTlA;S|iZd%na{BAdC4P)8+d%*|FI4lo=oT#CT{>$gFL z8;G;PQ@B&2)q8gR@`}3}W6MsC0Cn%Hmmelg>fUmtlU;0!5(ftbjByJr7t-V=k#+Ao;6Zt^Y+N>*w=*ba?LJ@C8-}H6clNPK-~W*%Viyj$k0JzWk!qNE(^0ENbB5Ic|5_pl7>jW$q~?jU@bg z&xA%Rw?IlLgcA@8 z@uLb)te8vrl}m^|_v9(KXxTajTlJ1wtn!&^Gq3KO`#sLkzQZ8rKD%5^+k^XJPtjVt z<{Oiwn`F}+wI&wstT<*NRP+lfE1iv`S{{|46K%OJQK)Z0v;mV+2Eyy7CT(U1_WwqwMextj3c&dg1BqwnWF2ZK*7@IR(r)o1@4x-HXYm_1y> zvRERBV3Ir2l!0hQMvCVk#Ga&9c$H5@yTUFI^3)99tGq;nFh$v4{%j@|9%#@ON+S-L z?*E&n2D58SQNzdxrE`S|ULd)!f`?xYIdz*QnmSE_=j&d-vvU}Ub}JhOYelFq(@sl2 z)L{b@=a#Id;oEgwo9q5{mR>YanQUJdRQf8!i}nE89Eq1(RXd`wP^`x-sjLOFp{{@p zIAX>VugAYpQ1ek+3n_fHbv2Z=`iI|Kcl$*28g~TM*QT8!4NSHN@(1nE`;_{e^)Qjl zwt$Lj2GKqPL#(@XR6k_(!o@8_wIc}8!u|z-UtzhF=$Q;<0y9w&FCWWI+RIR0h^g!p zg-|>h1o_Lnd}{lz4c@k`Z619pK6)TQw~>z&?jad5C+@qPN(QWmnF;DA5_k$%68kMq z0EreRb_(zjBxtu z7b@BY9od;^RQ83$3D_}t;AR2CY#D|YKdu5nC6OQYn0oV5AKJ~kG{7ZcevW7uus9Ajt=mc0^Mt`H^*e>^|?c${_Ku?~Ge!nUBGPW_O?_F4XjBs*J znii8ED-Ae1sh5jTsPqI{7q=8P7nuei05LjZm&tZY;;TmD+xYPj`%@hngv!&yK;)?) zg&Wv3kRmm^mH?qrOVp|yyduIB*Sj<3K$>Fw^@*!dbB@th@3r7p?eMn)5B8j)1_O<9 z-x|)h)TAXjVgeJLoZcov%hN^;SxHN}o;x3#Srk{EugdBPlKu_4_@6T7Y~c^b=e>ke zf`F&=D;2VHZ9ofy_M|@vUy5ppu}OwY?lm^JKyB8;qq(jUBDeYwL@Dw+^4#nF96|fE zl42h-$FBz>szr(XF`-VOG!h8u4`G=gX|fXfLw&2=A_ardXZ2MO+N*o9EWn=BvLbk1 zom|Ti5gbo`urV{seu&#h%5fsVD(;jlgP?8P+mqJ8M#{H=ZKa3}m8G7g)=oWjO1v;- zU?hCWDmgEOe9`jwTJO%9mu037Eqm&FI5Y?Je6j5^EH_{RkgH^_eNE)oR!QLF@Pc|t; zvgtEZx!5k6YN9ao-5fL@o}}@9`!+_CLk3G3)3~Vmvmit4S581k&^(zY*pl##^*qgd zUHowYk^QPq=YZO8%UO1M{unK?m9rxh!L9~Vw>?EpuhT{$A*Fy$8$8uP0(5Jtz= zY+#oSk1gg)+;F=Cr)=X@%J&{xHY5@Rj-7C2q{~!B=Bhd!N{=3ZY_sBV`ylN0AgFd% zu+j9T2?_8eGl?l5?2!{Nw$+6I5VC)@fPN!#1zL3$h0lNqLe=7iW`pFpNbdyK^XNp4 zN!2_nB^L_Jnmks+>iF8G0Y*A6d>&%?1{uMc4MpT^P@rHKoBzFca`qA2ui9r2sFR~^ z=xO&z?V9~+w$4NDirp7K^PFT~n*3ziF11qEn_XrUvG9Mon|D>C$BZ_Rop95&oUU&Z z9~Pfa{+v&l<+xfmq`MaGsJ?B=<2$kcCWwGUdZ83gzLx&{^hVYU1B|sPqHI}1%Ew%7 zdT)wl8oQ{{zF_g^mydMb1-k4+K;}n8tocu<49;_(_|`F#UGWkNd};kl*l=7+H0?z9 zrjJ>}jdm-sU6Lo4eXNv>wMq&sN%YPo-?8NSe2BIClr$H-;(* zo1~+^Qs7ZKq^dDe1vLHnDS*m4D`wO}s=pi&m}P#8U2nU`qG}E|2@ai5e1IEc>CzSD z1PwQEh};A{N(@u=T~Ek6b#@il%|3DcHJRy$eTg@;?^m0AMJR2`a-BKsCYkbv3VkWF z@(w4=zGJ<1-Xv999&!in@p}^LUR>4O8$)ltz{h2NeEaE`7_gU#`dFE?(S6@k%p-JOJ7kXQktcdC7%}Q z8E49&OQ5c$s=1uk^SWm)n(BNGao>^-RI;7wG{0K0PGhfmjGDUU*M#=d1BS_72QnTc z-mm>sageS=m8;&URnoxV+=@TIFV3e<_oN?0Wqi|WbKav34V=b8Y-<*xpY)b!w2Go9 zaKNEA-O}{PoogJwgF7w!LWdr(F@a-g4HMYto(0X8cO6vMjo7%k=}^ln*5KM-TQ;ml zGcwI94rnL)CiEaT@@hH|f5beM)veTMZRNVV8Z{QEh9#q`ag`icCr0?)B5VYS-;OL9 zcOi^I;uXN)?5aR9g=SsaQ4|b2upgmJCed;)M(Hbgj^B+Vy53ctj|&XQm`*Lu*%=ha zmfUtR-^X)7%UWOp-IY0Zp(wlPBr!GB%@+ZVftmu-P_UJ8`|Bxam_fx$bigGL5bqOL z1;C_)rDfr80nc34SXmg5zlZVJUC&gnVOD(cBfQ?Az}D6r^-kh4Nc zKa`%`GoTDvfIbIf#;gOFWRkdSMOdXoXD;hKh7DDy$OT|r?jH(V>FhjEz!7 zv*>`T7qE;_c!`}B$)h0!@$N~Q15f!@ABC&C$gz~hk4xL^>dhSLD$8wHfR1Ph*;O6B zhf2oEJmRwHv13hFzjb^(sPM0EAFZK(J=~8BLDGYHbrqo4q|X2Xc+*tJis(l~q&3_N z4-Mz9`R0qz8tfT9FR`D6Ab37+S&NFHO_{JsV9jg=#|-oFB%>7|63{;#=!6qgQP%!? zu~+zU^AXl}P^IcPZts(f;R()%;2Y{+DQ)H1U#%B`_oWC>PguxvzdJ2c|N3{XIlLku zpN7BK)V{8Rr*H}|5WWLnLDIWaj2FtT34gyU8Kj+du2s&uj7cDc-2PY+i1$WHB!kIr zp}nL}!E$~hr%ICI*9bsKkgRFw+l|ZQ`7n*4g!-JEpZ!X2n!4q}2hO$-8%wejqTEj* z3lEw)!lEw((+*`T;P;|9j}*8;bmztB|$~(^%hS^|nYnVKU)^NDrX48w-l;kum|_ zHDQ6HJs4@XO;`nEfTINU@V+~raL}e~XT{l+GCNJnQx@8d1xuxi3%%b7RucmgA{XT& zf*DSE((ne2y(8V(*_^fqi%R9VjCA8R6%+hwMbHA|HWvcNTTIr+>0oQ*mYb;p^@8u4 zarJU>q;FLlWx(U2<0gW+1>Z6%J{p$j1^cW_ST_qcb1)YsD=)nh#ZW`S2cu|@5f#p{ znAavtjH5;<NhN$&;%5tUhP{z3W?F6j2jF|NVzVn0TJ1z3If19`5{&c!7 zdBh97>!6Z~HC}5IYmMBgqIYRhlVZ{utV($&0A*hI{oJIZ6Tj2*=;Jrv<@wdI{i~f! z_tnSO0pRDN&&s-Ywl<7X7+EVnrXb_2nL`JVokf|e0~u2#QV8~p6Lm+dNKX(~Krd>{ zWJ8RVg62}l2&KH!I@OhlaPjF0GRbm5Ip0+H(wVR#rawRe=0E-`bpF3lX}JH2p93yB*PTfv6FFXJeiAR(;l#io zra4@g097*Cf>64pn;Gj*b+bV-B(nPS5wYU{x+XOn-}a_v@B8h`#c!f_s!uXpf-pWH z(8D}t-9*6#1a)jnB^>8IQr!b`$j0{EkOi>zt;Pk(&@da8F% z9C?%{X~0exn^)8G7v|TM9Y=TmZA0hm5i6st1+w@1cmuB>e{Q{jE&qGlt1U_hHN5K6 z@w>woAzo6{f^5Tqi9>2hl&J%kDdKc}Rxep5;xmBYI@*JA=ocjB{_NA#;nJaHBRfG! z)UFBI_BO<<3CqW<_sy4Ghp!`F$8Cv+YdqhE9YBlYNM1z{CJ7!ZI<2U5cA@+6^kGKU zD1HC(_G;N1U1bW6ChqHgxG>hk#4eol&n2Xc(x{nyy{ z3LuD|^Wk_4Up`dx%Mf`hBh2vZ(hF16Gv9`-ge~XY>Ovj&JGG;;jmr>FACsn4(<2*| zTZs!WoAtCp8c+zM*_=UBmiogcxlE;d=ORFdTm~Hf=2GCr0I4`2p)H7b1gE- z9f3p@#eTvTnV$|${WBPzAhv@%%FfHF1`Hm6XplGwMlRR(hLt(ac+5PeGbalAFC}5o zj-)t)?cqxI=#EF}7D(B2IYf#61?7uP)aN_;5W`|*)&yb+D8+CIaFsO%G6472hRi=L zu+^f0C#=cE>Q}tUzVuKJHbXh<_=ygy2Py&*L^cKg^(a9D1c@Lg{s0q+ z&8Vu`GwmLzW0(MPqj@GuM!-vUM_@o_Be3%~HDtZF2%oOr3I7 zw3fB&)$1;>4TsnHBz0aMKD#`$nXbnUG=>0|86pSWjEzzQJ8Tgq<;(18n%?wWnvQ(B zZ7x%l@6-=V?mnd7TM+~_W}IM@ui(r5?Cap|>bhc~^5@Rby3|p(7(n7|P)_wEIhrG~ zb49p~d*~)Boq>d+vtXq(2JY7~WUARjCnOF*ZMO;I33d(qkzcJ(;IpV7u{PdF(w`#d zfhplWG)^TbVPxzvLWFTuCOHv@goy$+Y?&)-bI9nK%^!0IT^k`73bO*AY$cXyLZ{IZ zYuuxvn^vt1QckfT03fny63REniFD&$tCqN=v+n<3z(c1OszQw9u)2)4|E9v9s4I7o z1ySqGIA&&tfT0n)3p&gYYHCkwjg#rR+UV_LUB%ClRjq2&c&=A?d@-kz)_NbuX&F_ zDsb!mT{X+1uDriA>D0#t0h1Ktb%Z5cm+`jmz9UX;LeVP+13gO^xMC5x$jCIt7?B-%X#-K|p3(aAzS zzV4;uH5Wi~0k9ism$&kH*a643nKuhER8KDXr}c>-KppD{&p-fAJjl*=xaw0q}Lz!l0`NTGkAEVwQ_(w%cY4trMPS-tJ*P ztFDXEt7HJJ(dI#fVE(ijYMM~9VzbItKKFiQNFDAy2aK=%9%Ny9FJ2q0E!3I(MO*5@ z%s1Gj4hM>yi3Lw-|6Ha=N82K0!W033h>@tE6C}JqXkzyGoc-I?6vh7$2~*^F$5y^k_}c?dzv42&9jcLFhhFuU-+Wbs zJKu+bs7)Pxoyx~Ej!p%AM5kaQ;YJP=%ZnZN5x}9eumy42*QV>`@&WC6_upzRBhy;s zzx|g%o&_*RiYO(F7Gl3Aif3sw1PW!j$A*#a?abfh9{XYQDOPBN(LY8z;O^-cXH>XZ zLcS>jFB|1@i`_KegmxX*}>D5fCOUqk*f$sOJ6a19M8zg(^0Dbr8Hd#;Xjc z(%DP?S>kYoogl0OfNFNCUjNneQdLEN4rDrU2f2k>=ov?6D5NLmSL%nu)HOgEs=GSO zVbT;be(>Q=ye%8^CAPY1@oi$el{LPiA()I@k)(|VjwBBkz;DYK>XCI&MJeiy{nJKf zg4Z{Yl3^unE09`-WWdFN%g4tDOsn4*$$S(Dq$;tkMPnX|NoA}}Ig9Adp_?2fS%`}Y zxS-?sAX!9K{{47RX4>v^OouX9;A4U-*I|_VJu>_5+7{9uMy5d@$u~N~2uznl{^J#2 zdM^S=jWAbwMEna?NZ-d(g5cAN2cS9~-Q0|6AP~OIS%*0}!YiD50y+an3i$r=COG{Y zf_T`y`eG^Ar0^0aKs3qJB)}c#&rT?U#^2sH^b}MJoLhTkSs&gfCPw?lwo2*`Ald1( z=%^I#oE2;QcRQS3Is*X#EcxC(K`AJw5;&Ufv9s&eV(EJ1~SKxGw#1(NUBb``OflKF@(E?n2BPVE6gEsum=YI511D|ToZ zYorEkYuwqt)#$Q5PnbHu7y%S!G z?DYAP*JiLUrfN^?g)tzn$W+3FCP9}3T@EQe-5fdxp|iZ%Kb!1A$$OL{fJ`pSR7azf zqt%Ek=k?arW_R!u75XD8WD*4Sf+|QM`JtJ4cONhw^zRop@krj^>-mR$8Bzw|$REG6_8H`zQapRSU zv(n{3v_JB$IC%1ct%b8w`or_nvlwUvhfpnt7X9P*9>-?D-%Yz?N=tr0tff(pXJYw} z_8BA6^UIGaXuxnSy%T)a8=~pe;Pd2Aoy*`O%rqJ_TDe)0{V8H2gKYEUr- zlessF4dX_^6B(wi%OeS#)7y5C;d4+wkJ{$~$p8^!m9GVZNv)?ran~~nPuKL!+oO(C zQOqvu_x|1gE%%cTri6_k9wx~1`&4fyaqC&tc1%=0*(?ZY~5)I7R;@%P}U1j##GzAxxp z<78kg+*!e&+KkY6S%pWsVI|icjbi(&I>gA#jUxFj9bxd!#*VtCX;o5m*iAJ5`f@mS zH`LMe9U!;M0G~ACR3A5*gNSY2k#!P)@)m-RDU|{t>2$O`*#y#(E5afJuI3$3q(LnRrv=ijXujwrymK-tYDH379Wt9$S2nc`vv{DLMV%boH);JH;7t zo%|tg261N~kO$e{OH3avdENuAdQ_4@%SgO{sF%5$>|&KOkx@6-8)68phXj{hByj5@ z&R9%wAw~P_fR0*3#esgwyyU$Z0sZrPLE3C^x>GWhxX7;eE4h%Fx&*N$vRzHzI~IDl zK6V9h>P_x?pG!p{UbNLx_EGf72-P^!0hsCF?N>Nn*^8g)unT)X1zm}W{qa%qy~}k< zsxTRn6?p2J{HXH5!}ZoZ?&Oh>7UWG!NexdrnaYFW0r6}X851j^#ejAw$Rsr?f*@z& zVy{%jfwDfjX%d-4lncTP!|RbPh7M#ED7`PUKVNShY8=q3on=K=h))X_qyfuS1;inb zL<9|R2M+QL$!&}(&ReRU@aXfIwE>*3g{~b=$bVU*9|0w5vaV7d8TNgzBpmK6l)j(4bwYpVMeYof8894NI%Mlp>0NSXx6< zEFr~%jmV+`vzVp*si?RFONu9|@WOt`iUul{e=C*>v3FVj3b&Ql_>3F~M1izxYDQ_m zo@Xa*G)n{K8$P5?z92dV@K>%;_QpdWs8FemV|V36IG&ukuxLdUz<=Xd@4XvZB+87& zP>e-hFvIq8X9rbYP?^EW-xAlW6-*q@$tYcQ5@4VSQ~Z zSMqgDjZbe84~wQ5;7jSrP+{C^EtU$X{gcj^Y=rZgagGc18KRu54nBeKBCfMz4~@}H zNd*Z%bTwjdpFA{5x-hgcYm7%?Bk(neP@!J7lZlSj*G-3$5n6l5u2cn{twjw7*99}mB?1xHe%k#O}2sy8Z!*@RldMTw%%AhZiCfca3-jR$p^OIeol(}k}R#%Hy3|*xJpcf!+-lz7$J0|*Fgs*``pCpCH zL7n->bpzh)gvq9OsIkUOY zeb)^IsQ+@r5~7r-*K7eAaDX<5!uWktVP8bn_Xv%?F;W>X(@7Bem&PMtN;{>AlvO7V4?k(=g+}HC*pLn=uUq_jE%ik5J+_o zLxxYHb#5o)sT-y44SOi;PqeIs4}X}rIic4TYD-JYDCNEACZa5}{?+a_9#D8ovyw*V zw+U_G8?#$^MO>?-rZ(7pl|mEkhoZwImfmI7EP`%~^U{n~wy)|8`C>XMNZ26bY7P&E5={g)?fm zzYzGNHIi1?S)7*)w zFkTpp@x?@>`xx_*yx9gZnlbB*l(=u^MLZ7~^vU<7lIp-0=u|XWyYlZA`<7)~>o=5tNM5JMfJnp= ziF1xPOj1XQAQ>`*jh-D}43S%H9o^oA$6aLiq!l9WULSI!l%g3!n`s9WT+m(^`#tlO zrqs>ori9jmfL)me`JP+|O_XNrAmHG4KVf&&7O;Dm6W4q(yQRlx}ynKSpnRKss9 zX+}oVF-%3;J&{m27&$u^+CAzJ8$-kN6C;WTPJ;Q!a&?YFV85>qm8sVOb~4S^MG(OH z1&~xr+HE>k?46de@`);+GJ#-N{;~o83x&Vi=7Y%oDXTjr-=!PSce@`k1d0*D@McNt zv3>tKJpOJivU%ERumL8}0^16nYJqMK&q8_Hlb)jT{0L9htDH9Drsoo|Ppru$8ujLO zsDiq^^AxLX1Y=B*W+=J@$UJ)umy{!YP$OTI_syzRJegM_!$_?k`w>k}R7h*%$N2R9 zfwfEQHLR^W<7m@>$NWifxSS=il$7|Gml7>~^h5LKq za6r{#IfKCFJEJ&1h60D|TEMx(FDXHF_=F0%xaK|&~2maFG7CuH5Cp`StPn=hxkEWi#& z0zQi!1;s#taoP$7#E|%{#XqBukx_&XDmMG|q=V=9?dku!%Sotna*|FA_LV zq$O~y_L(IHux9p$og+%b?VBQW{}Txgn+;(V)G+O4uRR)HpNTC3X|SQe12^~_vKILo zM(f5Ouhf*HX{Xr3gFZIJ*)N&RtV9!rBhjTah5jmnXnU-Nt0Ev!pdN{Z(>)^hfIAS( z5Zhvy?D486xDO5AAyZQI=rcraHNgnlxjT7Xx^{>ZaPM4AT%K6H+QiUyZ8?_u)I8(g zHhRn}0=%>C4XhOI8D`$zTK?zHxua@=Qa1)LbfJCx87Y}sXA8(^zUy!3M8grIR>rU> zCC&(6Nh&FKeAf7W5wD9)Y++ucrdI8T9P!;>>tIVUN@ZsPnhL1bzzeECS(O`1MK;t7 z)NZXLfVcg@)n6oJ4gM=bL~UGwd0B}cNGz9XOj0q{IkQ4B11_@TiX?J^K1yZ@*^2bT zEHrMazJH58vVR*D=wgvKAkCwdO|!Eg9q@l^NO>TXRrm*yyu$Mhxq>2XH8SL7c+Kxr zYc}oL?)Xv<9#q+Lq2oPpw*>&#x&_O#L|fqm0Wc}Lvv0kDPE`J6ilLXve;N+A^|~ij zA%xH!7ZZ5)v}E#y#kSQE<}>X=Qs{bcyNPql;2sS9A+v@+ji920b$9P<^DfSqvyYad zf_fn&`Q9qSy?B8FCpgA_`J1Apry}DXv`3I{xbaa!o^Oft%o_2D>zD&HZQ|i2#4aQp z2Ea?Axa*W(2|@WY^}`A1;tC}QWldr!?-`u2X0L?~GYnsO)*tqKy%+vVO~B_xs=Ci= zApM?A#iVhlIBt#j-(-ZMQ%1mQ{DP;HTNID$DmbXpeEq3^7R5n}nn<0;L*Lz_0a3-&L>Fccfh ziu}_hd!?N*=YWsT@3-OYZ^EZ*@OfXFq4U25**yyZrr@2b)ghpY!uj#?V*Tb+NdO-O zS&C=8l^Wu#^HF-}Ve0bVeMX=*(9h2Gy;uZy2den9+wiQCy%~($N7Y=Sx*XKMUK8K+ z#}wj65D(4i<*Bm9bRKD)4hEZT$6H`!pCWyeERDGi2Z} ziui`*sfP(zBt80U zbuDCW!zanlG5jFfnuZO)-s`zar5zF*6F-wB)qy!eAexBCAsgK_cNYrv?9gnt1qLjfxc8l+uqpLSoL=%Db1kT>guQ>(KI-!Y+67q_&kxqX3WO zd{45%%4cHJly}|g)kQgH_@i8u)=1l^l#w8yx9Mh~V+xE^!?jrXvrN%)kykt<~}%dr~;1U&!|6(#58@B9(Tw+Ha{0^OFdh zFe4AR&u{$)2O)ynh zepj*!6d8!6dAcxck-LcV(OBXQtOC$@aWvix< zj=Mp5k5MS^-wFN?Q<&qBI)eSjVB(Vk9*g%kPi7}zhcODf-kPtBQHXDcW-(mxLgB48 z(cEJtq$P(ha~rTdGZ}xQ@Y4>>Vi>DEGZ9E9M`qHBZJL`!XN?1sd!emNBL#?DETY6u zY3>a2)2e}F)n%b>1^hygAa4Y*e>Y24wX;=!({FJX7`HvxM zZ-Z=+(e>(@0SrIU`D1k&wOmz9YvShQyRLAz+oEHiNcOrn#9Ac-&-JqYxDD?A^?PFJO z``C4}eT-4CXor7hF>;k}&=*=C1(Yd^b4l6gaTt&bp9{-6o(=mj=fzSZmkM;Pk1Wvn zhm*21PTQk$JTI~sHXT%W;?)d}Q{d|mehiKg4~nu0XdP$h)57e$;-o2ABMWZLegA%> z5-~*yKc+P1!G`x~v?x2z6L}SOI07h0xI?oTk-u~Vp6h>)z;nkV&<)^wj0Suc)(Nmi zKR_^kZk@>3ipRV_;Ug^XjIAZ)+~ojUZ|Tqo=Urn88Z*J&$SM?QyrEJB9C$f5b#-rB zfoR4kT)4ydk-)KUi6}KL65UUmBNWX8>4vAHP`Um7K99$Ol6#NhO3Z;7F9dH>n|05j ze(SiKs?2|56ppkH^(sn`-4W@jz{<%i@+Wiyt_?-hCBUlVr7#f((lD%vkUm5rCwt_` zOP)ZC{C^b1cP;Bg)-D*u)e4XD^K#+B&w>n8^qI`Nc_QSem_ zhU9;c!#$xE;se`a4*hl#LNi9;SU>%8Budy5ZthXxz0=B&6gH-aVl5y*PV3i65Xu+@ z`E+O&!=?TZAi6OM(CN@Du22{gV29Bp%X!}>yMEr?vHi8FGQw?w)_LpSWwCrobo|8(pV zSJ~wKiC9k6r~K2gPaF{G{Xu!dsGchyI`)sOf__LJ&K60&!2B=A9=l;*D8S_(gMFbu zo(|2T+1LJpXPEi|h0=LmA`a_wzygm^=uU@bG2BUFMyJ_?X~~ml;owkcSFqOHEQ){8 z^e?^mj;1QRMg-;5`h5peQ@fg|=4Q35;|KqSM)U30HOYaU63TrrmzW_49(IgPK3`DW`$jn*xz-|=p8K|LV^-S zT9dMQm(lb9L<%?D)50MW#2AGr6v=;Apa*ixns?|0m+4LnF@c_>CvhIZ{j;2oy`l3L zn$A%MERp^kZ1s?l4eo^Oj+^o{ivrYeaB|Ei-G21lR9qeFaeKyX-~Y20WD4``i<}Cz zu_yZ7s)zNN51Tw*`7weGlzWZ&N>A7ooUiln`>SIzjX6A$&9nn;T6Sipjc0$ttDI_; zKZYM_nY%MvRG5HzbSTdM5E9`*Io2pna$waY%3_&2`$;A<8K`;+@GIX7hLB4X?s#`` zl)-kd$(U#!a5oIK8@S#W1=r*CjX}^rjDug#()4;=H^{Ov3R(6p_8HZXSaXm3;NQ(i zkK3fcR0?q+*L}kN?|PG*(y4!+%}FoxMXXQx0rvF?+m^j74E%c@GhdlqPVF zl%L>^)MKz>gI=p__cF;CyL7C3TWIByaa)w<134FBumzTrOBvlG>wmdy3$55%|9s?y ziwx7j_s1N{Sg@Wz*eEtqL~8I`Lg(|LmAC7kk6Rxc19CQQoLWqK3q<94scz*p zCr|neVJAX2zl$ny&eDJN$rBT|oe!;|(EWS}wM~?Ts?LX;1fIghE2^o?*`+?9c5~x0 zA6kv3em<@R{Z{iagFNR8rht2CuCeD^K|C_|Lx1l7jq;T46P~XCa+*P~Dh(1y7fvOZ zat<@U@$T*#!0bR0t1A~1j8Qk*eV%E{{6X*(ZU z1+Q*Ct`+@!K6ql3IV6=AzS~5X?gHd3yAjuLkJ5QjgJla zw_>Cm$#d&HFc#uNSe7{JZ~$Ne1q>+Xsq-fhvUeMEtVGHU4*a-*O-k?@)6}`lM>qak z6wu5Ixg2#GrrD>1%-mop|$#4!n5CJ|C zA=Lf;#Z!{fdB3m1ORwKvT^vZG$8~Pj==b-*&QW?S6Q!)!RTXx*l#6T+bDQL&pHK&* zMmOby$9e>&X~O#btAo)V05H@EukkvVhtkQ-dj|!v?Dv09FD@KhB|9jjr9-n?Zeg1L z(SQgu5a*DIu*{YCt@T>$=)sAm{>Q5SMI1fIloL`7R2iowKX;(S>iV<8C@Gyrn1m8B z4!v7lHXPcwVoV^>6mx~J{F;R8<{quoV~6%FImZzsLxr4lb)HIdZ&u2jefxS4pK&x~ z>{quvfCR=4%4a}m*F`ZW1?J!&H5a0+c#}i>R=h{( zd2LUH9)q^VFEZm#Q6HjYyn;H+Ry>{bmPQO;Cw*Q9v#s0NZxRpuE$rSf8<36xgTz z{%Kc4&fF|6Sae6Ofhh1NG712+Gkov@-vOw+(@jOV9X$*3~30R~ZE6G^qyz z8F_zJH-+PNkf56i*MbtSbCG#F5$S~;`t61d=utCuYT3>nd82U*xo9yD`Sod^7cu z`y8<+P>_>Sg3yqZ%a}3p9hO{=m@zInC`LzRJ90v%ezFL>CjsUyR}6e)DsJ>x8m)|| z%)%*+lQfD%`EeL8OuY*;)#HC#jMP7e4J+0}QUzr!BT;vbFTbY%Dr_6DH5)+*Y4*Jf zX<9ySB<%$w4PpeRUh3WO_&~lB0};H+mb!A5Hpwkza$nT?ngU{y*ViqfrPF9A>z%5h z!iJ<@Ca{Uetf@H=B1Y#l^I9=u9Nx>7nP+2~1~Tyu#BOH`ksc~$JT8AJn8hUal9}4% zrQPL1vQ}IfNq$w3%o78p5-%$0PqM`V!m)2N{%N*gBcTF;N^^BHAI9AK%o&HkKtXA7 zmjP%6qj3PQSLR&N49q5`GawRjhRMt+w=zUEPn0i4qiUhM5ZsMSMU}5wkBZYx^`#wD z^(9bozK6r$#rC=EcDjFwIp4v>oRfb4w5+@I`;g5J!~tVnCw`cH*(6t?&;C92CTACQ zJ4;(YUPf?h0=60FILrSd0e%FcG*oKp&e9gdk0X| z#+SoTI>`pKg9>I}%5`&GhN|B3OLho(3MHd-i8<+}{Ll_6zP*23?^@(SC=Cw^3P4!| zDPHAJU21yoc2jt0_n)fpP_i_AQOFcpX}E+KwbYBbEaeH$#RZ0f_Rc3--tGRwVGb}{ zSM?<8!qbVYAPhCjK@|4chd~s3X%s*8)n;~C=T3rMc2QM@T9<~{MO7JcXclX zh1x#LQrM~vy>)-0SnZ;!{fq{TL5kvpqFB5`Kb>e*yQuOwgh0LfLpJR}OfB?D%dWnG>aN$b`#L83A;7jSBH8e8N?n~aHMYo z(*Fqi2fOxiBShjs;?w+ADWc}oy&h1=bMHx2@Qv67Zk~TRR72ZE6@_tV7Q;~3BwdKx zvmBPlfd%!m?A5$oRDl?WW|1LsBPe&l*Cj31N$g~~I(*dzTXQFs6` z6_@Jd?Wr09WOUt@C)b zJw<;i??&w^T@;I=D#!81yt#u{Yqy)aCA%mDgjkw0o)or7OCy)3aNk8Fji2^PMLg6B zeu4Lc!Qh(o9(j!dj!g+5KtQJLROfr zO|g+(RIw4k3O@ZpRml-?)k@e+464yGjcawRFwD(7<4bPGQ}qU2c4jx_M|M%=M_M1V zkE#=hGK>A23~oTD-U9k8MNREN6kRFP@E%*AEg6bf_K@zq{0akEcs<75Q2YC zzt8+B9n7bU9$0|Orv;T?1BGnV$+Nxp)$wCajEg4(b7TVVDaz74vVb93dkrwQWIqj< zR>9+P`P|rVkB+9NlfA6n$w%8Scb@OOTFP2oiFX8ye7|2x39sBm-kk{6QQ;cg{KBNQ z2q1zaP!GPxek|+#f=`r^W7bD}>rH=XzfXDxC&wG|CYGd7hDaqhnK zZ|ck7JFp!>c6R$HflhP)92WbM$6v8YJP;q+ix-T{|79NUdivK zhPU3RYz&23_V|GI#gvh9mc7AeFTNIbhxc&p`q-PL=_1)14q5B7>}J5OZo~bb$2;TQ zi}BXM#dx&6bGdan8f}e->0*Bvv&$Q(HZ_G7IRhL$UmZ&)1|hu(S})T^PTUBwq0*}q=hvU%&~3r@D_bz{Cn9kcuEc*mBCq?V&4#j< z69|U}iJlbKe4%#)ML;jq#P)a|9(FgQk3_|i5(t;b3oC+7#5D@A=s>1orm0uJu_Zd%|#i!6i$5yMAeDzfg& z!q3D{2Sk)V5y9;J{`G&128(N^Y39Fz&&3aU*~VZnBypy^ww7RS=$sLY~M~n(mf`-E%qglu# zEG3KK>sK#dJm1|J6FU6NKArwaE+fcK5)UsfuMUsiUJ`Hk?)!gt=VUUJk`!iUA2Mrt z`2_^Ps8e#S+P+p?XkRA9{;syTH)nw3)v4{$k^uFvTb?54PRb?{Wqkrzb!d%ROxQz8Fh$P?IvvPzsr@jBP%?v%r{ZHz`^y=jeWUQ z-0w{gP42OQzxKp+V^YVZKh%aPgVvqMQWs^#P&~QU@3-|6cH^tV8R~wD;wg{2xW0P# z?&$o}!T!b3HIGVxp)S0bsR}B}8W0;9T$m`w7b+}z>zIEoTzmyrvVl;c7`@#;Jpz9& z|F5tY=hT9A7r3bh!TCVr6mHf_8r8Kum+htyII<4-aZ2ZWrINp9JZdQRCigTIAwuPrf?Vh8;v9JVe9q6#ZB;L;FLDAfM%bR0 z>C-UjZG(!X-BzTEsx*@12W&BX_ruv+&g|q{#r}Ud+Y1toa;FPk(znS-`f8QrPEw({i| zTg88YM5TWe1e6E@^~k%!H{^k>8%LzWlt5HlG|9jlx(VZ+u%~acKoqhB$cTdCFFXOJ zu5Jtfp%sjl#}mMGv5zObk{cA)hHa9ttA3P)oc+R6TQ@QF?h_8P0EorhPhqB2ub|@a z66EqChcdVCK%pc}oo-Zd_}2I=sps{hRlkZaKi*Y!4rv%4kt1`@KGyRO=yO zIM*9-2XozS`jk`>XF>|50yW|Lh%->k(AmeAqR>HhHviHGNBCr88^?jIhWA6;C4{r>Fg{DR%Dq|*11 zRP}dj`#dUPlYKl;w;=LG%(ztil;g;6vfu`gW*wDxrVYD~@4AN5VIi*t-+;xp+)xYHg0Pk;8$~^0G!s zzoTjLL?F1fFpMx#Z{Xtze7Z#M`qxa%+ytA|GK(EE+)cP8!&*!6W z{3;Cmdl|0*m5B4u3~pq&mQZO05@*LvC6AG5mg+!7g1*(nHu}UsdivzOMMZz+K+oc| z3r@fY+9d2o$ruCJgs(YUzLur1>k@nzY18shJ#7*n5> zk5Kt}9A*W>QTjwIITrw8sXgK5EJ|Kq^EtW}IZ8xLFP_RHQCBnZnUsG!l?a<6g{f>@ zppJ`%`u%y9@GK|n7nqf{Z6D6*ggss4k`*!ePZTF2o=`#9$JolD)yz zXH(+mB#rzwB&STJIgo$!#&jM%K&<uy%M=PDRMeg z1@MX{S(=%$#<@g)j(us=@Th+MsR;k9gTN(pTBsiuBlPw z;&)wU%$2Ey+u|J3YARtY58sHfr@~~$j^DNFL3+Woy+EF3I)M}DlA3UY!p7vo9#^lw zF@cj-j8haz5u+K0)1}dre<()8-FhPIvBHjA#$f?e%!jkXR*?^(9Bo=zEIAm6KvmM! ziEi_0>BM0&LLq-=_|1xEPRjMfMAcYi>J=2?aZrCz8J-+4Z5Xx;MW2#5(P8zv zDZe~IK}2{SQB~i_PdFle%MTOC#?4g>5w|q+!sJ@$D58JL(De`Si33qM-UmeS;1acQ z)RrNP8Ox-|UJ4LE8K(o}knf@@jo(GYl}wxpdsL~9(<}}dy&`(*`t1B#PF@XW(M+O6 zIONh+5rlupPrr{d)*uAJu&wj67v4Ec7b^9XL$fGTgu5<=ELJUeA2<%K<qf*7H(6VFOsy*&Xyy6EiC5oA*#1IuO~H z#Z5sJ+Y8u5e(JGHvG_2LEP!u;cuDX%|8;$gfti2UPQqJ8D0qrC9U&=FOgVJhjoO9+ zsg#w~!pI{Bm8XYmY3b_*kTOCcQgYo!0>Xs(%AvDv^fMG{q+h*LG+5>wh`>egt;^!) zKpaN;Lv|84g;HK(d0UUOD4?`3UuJmto9r?r>KKL zaA-r~Jk#z@qo5 z4=IpYcT5e+U9=o8rDoY>x3pq%#%V@D6x;)aAH5jB8hM~F{lXp}H9@RBonr{;CP|jO9(FOiKmi%m1m4Q33;$KdpLg!^Yp%t z-cv$)U@heVke-N_040+`?LjsxQI;l9WK2##fu$rdtl@^_$+w&w?)R&%D6drJ7f?4g zkXzOs1X;pSRJoPpx%E>bGnYHDaui|(9XM{@@~uLW%*~=PEKnCV&$=x#R5K>ZwlCk0 zA$b@Nwq5*F-Jn`VC|JuURcwDj4kL-!-E=S*m~%CoC$gK&hI%~9A2H#}s2jA)2nBb6 zlrQ`L<}-u!$s$OG?1+KE{43WW}q6`(`Q_9!rz|&EH8i&cnu)06UVeZCmfGT&*4)cG8+`yeASxpWnwzjXgwlyI- z?J8Xxn?+T+9u1i8%Of}i06#~{Cv5Z6FzNSmSjb#et}9{PMfp0Bf7FYg>6h$;hSbbGrcz7+w%F`d)t6KG^mT2ORLA! z%@)L4tJ$gzMAq*!5x>Vr{G)eI(PLZh%Vnml!UJKZ0Ku$gN`z|sVO}otV-=YQ^Ya4@ z7HWQYE}-9g)c6--em<({0E@#?skU-yHbAlD))QV0XG?$D-Yb>b#w(TDroIO*@dVI0 z>{`c2p}_&TS`Nh*gGDwEo~^fp+n=~AL$s?M|A<`%Uh2}%VeU)csEiFs`ovh@!lfU~ zWhS}zL!OS1cySy(Ue5fEP_-?A*Fj%$29; zlsn+Q^Co}ycRZh7`|jHqhDm{>`_cMPwrQt{LzHV7gf@UdDc-W3fXk)iAw~Apy zO9NY4-#%Mk_FbJpL|ftj1!i5Iwx!<17j>>DwxNGCUAOTJn&%S3gapN8D_h`a&>Xzd z$uKZ{M-HRErAG0VX|VQPVVKKGSMLCvYTp-zi>&l@1R!O5*^XfsD}6~WYTuidGsKjp zb3cu}hF;I3nlL7zysi3fQSi(^(Qt~=Sn4#xVi=&0ZNX^Gir>FfzJIBF|Ls-2cWe-l z+n0ZDc8JmAZ`7y4$RPebr<2qR?*b~0y7>2(Izjz%YrN{)#V~1p=!gtllil;|-%x6} z-2I0S;W_oDfSN67jZ6TtfoQ%k5O{%2kA6pZOQYmdH<=a3| z$KTphgyDXIBE$-{Q#nO9d>p5|(sXR!4~BmYihdeb(cDSf7&E_C^~S`gi#u!Tm>if7nP?&bWn2@F*mP0)CL_?bmOLY zw(`xJ&HySihoJhHeEWvKti>oQ(}uASym{t3QAAM5FT{-ez|9EzKqq!0R5psTxUP)LZGlj=Nre_X z;8vl*(ljZaC{+Sea&WkRMLNmRcmWO#sAp{3=bp4(dLRuM6n*TA}Tq>n#_u* z929FZE27d#tj(;5$`!HFTcb7G+@F^1bZW+IRkhSS5DTkz?j_0=`B09nRZCP7htbVel8?Pvnl6&P;gJ1imfe3qeCKfg=kd;X_hP&y!>YF~N29IrFkK8Eqxk+dh#r&S zkKTj#Z{zKQWnnuXDF0P|QGFF1%ERt7v_pHHHPfgcU; zW;JBq#9la=4d;wR8V~PcZ!y!3*;_0I$TsbV+)ZT?j6?MOm7gbLyz+nDsym{bE%vS2 zWUKF&v6j5l`;;d4X|$-Ix*#j%9K;4dzC;oR@f-Fu$6XKlP|ZMsKW98c$M;vqn`9n| zYC5W*y{Nq_cQ|`+vB>dr9yvHUCOw5SI$QxKlzW;ypUztC-hXWd?p8zVD=B0fp>G#2!K)%oXDed<^_TVr6$6%Ju zgKz%|Ki%Rn0WNcA10FVv(z}6522=V#gJ`ibT0THPKk%>11Ia%sMzbMy=3Nv`$s&OA z!;rZL#^x}zjuQ5ClQaN@F5jQrhtXp|8SjN!&xu3vMwF+@0i1t_p`RUfCQEo;I>sWV zd*nR`(Kml7L#`Oh07AJ$S=}(rKo$6b&JN3}cGyzcC%2M0d#n zg~K#}N2^NgZ5Dq{ME#sC5Uj2A*@XUvz69ZD_dF=w2fl; zksKHwksl3?&yK!8CLOj18dhg}wO$~GQMd;$W{zE6}gY3`K$*JY%r=p19O z7e0XJ1PVKK>b?_RgNo4^n#HW~?4javNS_=)o~yfz@nW72f~(%_eZUtZ;Oy${rHH(plIKlo+$tADMbqO*xj6oxN1u-0e){g`%cBcLQja~d zL3*c5H6ARY$KH68jJG$~?s>lPA7nU$U1LwPmUEX8nmFn&Qhs_)&c5dZP$YjSXDNlF z_u-jYixh>$#;Y`5^Tn?y)I1eAEt3<3BmnPf3g$Oa+)mP^k67ytvV zJwaMM0u`=iKTH%8W-qo5moS}jm^VQ*xhFJCxL(1e9(&SfJ1W;I;zCSND1&ZK8Lof6 z5>XU21pRAzK*g~s^mjtj@A7Tg+o-+o>3hR6V|dA9sJ2aUfxn}vB%$;n-{LMLVVSZq zWYgSqn;=&6y&cQ#8ue+7)JFxS@zv>*P~y>iuo8y@b%(_{vq+)vtM6Ec`BhW^Hp<{4KoxQbl``#QSZaElYGCc3j$keCaQn;n2JOG zeVJ?rK81>_Q?xNb1>N(5$cd6ZjzXy*k28NV%Zc?vrat&mWvJ*9_Jm>?D!dAU28>{_ zaBG+=4CAfk>Bh~9ip{fc70Y&Acsi@~q;Jm9MFm-2ZxeD{`d^A{mXe_t zYxz}`=H`zlkzj<}79iCj(Yk;A!s0n0+tpBoKssP2G@N>2?m1nhct9$d+(ii{St>K1 z3U*ew?SmIKgQ0Wyyr@^=~^JxqfQlI$5Pe~L?!=Na)+!N}9*zvnFJno8~MUT8g>y<+VEtWRzH|mBOmVy>Ng>J}HnyZAq<2x&- zAdNGpL8GMwA2ctn9Mt=u%za@+guVWRDj#OwDwf~Z=}*EX_F{jvaWva4>rW?TBcf8D zggqO!z43UO$w0Hr8o6z39Bo3a$Zg?cxRhbfD^mQRa8ape*bMybZ*?NwNTCgPs>UVs zM5p%Q38U1 zo^#$WDs?I~y(oXxDV6EKRgu=0+Oj{8`e8cyinv{7N#<2#wTn89D&(ZjfrxAwBq?Ks zb184(6y)S=7$d^WQ7<;?m3j>r?>+J+GfBhVUS(Qp4x*6?EDNd?i~1RE1z|C^isc+m z2hrmCx?)xcd9Z^}(!HA<@n%z%vJuhC@_bf_ z`ER`-anbqpC8ux~oq{Hpj$6fa8(Xzer`RP~c#8K=P9R#ne5}O1SgF>zWWS+Bxy91v z5J0>ncT0ce@k#6oT^rJ69*E6dkPXBO82_6-{Rfb+QZN^O5l2Cpw5riwjn9Eqv*er4H2^@1yxr{k+MX=r2401ArS0UebB|vjVivR=&BM@_(AgR z??Qm16Naso8g`W|7aH2uSJJm?X=xL?ucRlGwqAcjac3h5HdoO!ernRVH9>OvB1|<3 zZ+U>XzII!e9_gt#tW85m+2&Hz8&huF%vSnpNi_p05f4Wp4`uGb5SGH5>#oygifjyN z8j99%IBgiH`GA(_av)-)udHLB;wzbWP&=88p@Tc$C{z43wjdfRNYO;UDl;zz+zxLhPqRJ}W)uY(7{k1YXo3;o> zsy4*W7+4h!qwy02Pzfv%T=x=z!>H+Qw5`QcqvT_KY=(Xu7)DS5UMQyL5Y&f4eA&-U zt4MztRC4gc{`tkxWdT9Bx_q1SBBqc47vCOv;R zpL`$IscNQEiUU{W<|pp{;_P-nMem|xZrpt#{*~YR$vM5t0xyO?#bfqN1c#k+)1_MF zj5VScuo`zAmom+U9_OUbFu@lL++(n03BTGwWo>EG2G!`R0v@s-J|!_0 zA>PGK{v_&6z+{nqb_O|XiRpqVYybn1Q91l}0?!P{fft5R3UeA}fjK3sF`dHB)5Ig{+`HYz2DX zRJ2)6i3`NY3fKcLF%cN;)YzpBi*mrBwC794raOTxqJT3^e5o~l=C|WZ{0NLR7&AOy zvcKY^@iE4;&$oQ5W3L;tjrs$}e)SgVqVwR9E)`9oK}pbz4~=?pJCJ`UG>d(!Hm(k_ zIYd~?p&ut_w{3VM3jJZ@Yl=H|;SrXu@IH+r|XyTU|#?ps{g>n7~!03V|;r z-Yl}8EE!JcoSF$`6{b)n3i-t&Xaq!|x$!V3L7P+| zfx`VD`0j~G8X@90mH)@#oS|_L_6GrlaIkN6O?d_Mjayh)q;G#zpx~sjJP*J#U!sg% zTjT-w31Itz-xd}f?XB;rCOM0l6uipga6GZRMx$0d!jxY|)w8L*GDQA-O=lI4NysH2 zC$A@HlFxu@Ax^3~q7G*ijbN}pqbPKOeXAIz(lQXLNTNOBNwi;$u|ZHlbmvcor!r*z zcZq)DBs2v$b`gK}q$xFI8}`JL^Ip)jiF{4XGMAnN=x%Tj1p!wq&7nEQer*Gv%KcvO z|Je80D%ZcMQHz)+&3+p&eLSJ@;2qC8VLv2`RN2+u=TK2$8BZ1r^rnGb(zy0(6$?>70^V6HN^V9uOu$XkpD{^^m9WVWceE1Ol+vxvD z8pFtR)9im{wXY@r-O>5Q+1pQt#~1HT_J2M)WM3Q}{iPVjC7@G9ZAxC)jV$8m!Jk5$ z59B@KV{{seoA*&W7BPm4PbbG0muv)Qe?B_@^YPJ7#UR*(Pvs~Q68KOh=Nl)Y-PCL? z(T7*>PL2=uFONRGIX*f$RLPmG1qeD=to-`$>@As(h-Xx$C8ir4V>S^ zncdj>N;ySB?T>DIt4lqYdkeW2_V&_9rqUfu#MPu%Tu}z>OPV5}e45)>`-;T6Rvm)N zjNJduk(8usj%T(Wku<`%nzne z-$4Gi1W>L#Q0HAV5@o~0Bmo0nGIQFKH|{)5p*cyBsdwujGkB@)na(9jnS=V}(6@gr zsJ7g9F?3FW)7WjCHM+6$isO!BxAFd($IdBm8oQRY{ovowXukb=tixUyCgD5^>epYE zK+!~4X*r-R4aH;tB{g$lro%RG!SWRB3p1GGPOuH^*AHIO;ItRCY_Yanj%g+iqAX5O z+hH{ZSReUjO-3;#f|%wVp#jpi<%)lo-ksPE_VPds;!mmOF7g%~ac6d48Jlhetu(f}hNJ^vKdSS!m6$I0pti&|tfU}7 zm#`JyH)(22hKw=EYTmz}BW|FmX)@Dl>U90i9=Wz=#Z#Di zUk2~akKP>r<$0otns%i=cj$32g>(Z)3Xw21F9mRl7SSn zhzu?-VLrAsJJ2GKLKgvW3jfxIKe;E5XdifBEFaxIp4Zi>=oEQ?D{>3BQjS3oRx@cE zloJOa_iL1mN6lx`*U)Td|tm^M3te2)_WhYu5+E;&963`xfu&JJ*VSz0VF~^vkIL?TQn@-F9x7eS zYYp#Ry?2-dy|)f!>dJpf5f>OviG15Q6B^vTmhsgj;3*w|_q-fZSsxeY0^WUWCPw3K zv$ct@P{CAO{vrGC$H8Fm;X~-MIJW30ejdJfkmXfY&RpSKF2@w_AT)A_AEQ}F4kPN+ zy**Q0*$b~_mu`UAlj9tc%O5!=tyCPDj-? z*g?y*cG!iE90YXEp7+WA10~~4@-5tsp1aJA-hJrK$S%gC?H#A-v34e|Fpb;T=W3+O zG}w9)S2~X#X>uBc^r=p-Gj`t|ny%4`(8(_ldfmmL)qDqB4TSMyd+oWi8Zc9PN?wx>nJF7c%*zn3s1-!Db4#!%*6% zO4YTxjtX6-Xl%U4uat}>EZ;%_891GaGP`;Fs!BX4f_3WdrK7FUYC=JLN!Z4+x0)fN zt96NkQ;ZcKiDMj?o%63!7*F=vPzp=esf}XCx4t_6iw1wolCj5i72ndV-WrN;XA-A2}bLTY40sy_zNtV(cw=@!N{>$N@%l6Ou2(b}Uc~*(D zQL>iyr69)M5!bG|sIaN7W*xT5oB`=2gei6ACE{@R_yK52VWjWcRvY5$C#%?0m#}A& z%=O1#PnLfT&#C3r`sQ01*Nm;&Tmr=sGAUG9!X}@$W=A@d5G}2qII1$I>Ocl>E@^_B zIdDupAorU?M8_IxjhdKMyIP~hR!?mivhMf0&}u?=V8xisa@C{a-8p>@*9OoFXl36)gX+?`bxW&7sapr(zj zTBXJ)-GTU8mHw6|xmQ{;@r?aEqElp)Pc(>>fn;e*v<(`BqnVKQNlZ;#6O~oNT0Ei) zayEZU8)FxiHkb>QOh<)rI)FK>3Uii}l%=4N9v3tAy}LziPa!;*?>vB1i7jZ~x2^w< z_uVFD7F|8lK4unG4Rejrt?Y=cB$nA(Q>g3F)KC8yv96=Bu6|U@C-yg$*0qkNQV=8%awrT|7eAc+^l5+pS-gDKD7Bz(c@k zlRaFM^TsJb*biPZt4l{_?#?MM*omLi^kourHZiO#0?r|R*tYti=x!kt5QpJeusB>2 zIoOvw+Io2{>zEmI8ykkB4LP4gF&*%{LxW@Zw}HWE?5e0J*XFSI;s{f-9^R4 zHh0f4`3}>7VSCNJLm~+K&QTGu?GYHp?wuK9wR^|};n2I5A2w;qW-=fTfxSkIihix> zJoWAdm)@PdyhX*k+D|Hmnbk+?7#c>|{rUudj4>i(&XlI?MDhw9;NgO(EnXN&WfHUk z#u$h~nFDKsbPNq+cv1xzQ!+xW0U3jeI<+1ZI_r!zGKR9z*GJzOC~8@*$k3`~h*cYC zjCQ}LrHq+V2>InvX|)g;!$@3W^KYIw0U}pt$XkNsR8w{4WZo*O0<3sC%vuBw-=^Dt znyOiDG5eAe$h4D>kaYislIVfPkm;TMjO0UDWT||v0ajp~LHlt2D#%DAL+#D8gcox3 z$RbMo)PDf#QhEoDdWSH7>*O~ppoHkW>l62Tt^Nl3}}l9kRq} zAnhWIjjf`~a8;ls+;%E-LVF7;I<&ajCv0f3n-6I+iTy5vUJ1ml}^(pew#Oh^y-&?rUf*D)7J!z(DaEfBe>e9cHH)%BdADb>m|2}QHBUL z;doL~!;yPh#VYe&wTG*e{aCl-Y-ip$N9_|e8k=sFsL|LemU&^oQ-&@qRlwgAJY^N? zYzdw+Ij_*g2H^#seNl}-Y)@H@0D8QbMUNqTuXeXEs^8J{jg)WVC-6vrV+~=A9TgQ( zZQrUb%tE-Y*{J>}jic|pgid=KvcQBKcV#jLiT^i9pzB~bMu$lk{KgCdQ&1sX!629A zSsOM?-+Wtan7&n;3vUIodl>=aCfX%un?t)zTxQkAwkQdt{O&3LkOYcCs7Ix5dgXC! z>UA6kdRrxeGq!5O7CGjBr98NSpImrzDu-R39dU5SFT}r+VHNnz%A+nYPIS;W<^-<~ z#)%3TM;%pt^R4tfW2-jYP^@G^Q{!IG*R^5#MjA?NIGvy*TTDGD`?4Yj%`uMkincb$ z@wJWl&=Pd2v39KjP^$;V0VVNz9cX{O-uJo_gW_wfHtAwzc#W@rFmFPhuy=zR|V~>w^F$8gXb{Cm zK|(9Cq*OPk0rH@KD_^>;<#zR{16BO7yo5oxmb`<>0r8KTMkEXVn1-b40X2nSX%Yc% z+bFC&&QB38{%9avR_ielu8R4%EQXeoH+hXAP)!Yhzi*&l6xcD5FU#+^U_op&WEp3w z=vIF=ke-*vF;QRC&vBW4x6(BtP*sgY{?#xLRn*2bj=bo9jeY#<2nEVf#OIYAFTK0! zA%;>hO~a7oWDJ84-@2?syL|OV4y{MvG%j#SO_f5keo@96nWu;8pdueiQev~hVK*ym zYqQJ)HXSI`iZ2@q<>A|`9)->FhHBc+TEew#1 zgl#AhDo0FBe>Qrj%PwhU*fck5qqmjg()o&&KTwHc$}8uZDQ09<7Fw>Huy~hK#gvmd z2>-P`CDw`N;Z?EfYV{`*nRaII8nUrW%V8^`iac_e?n!P&=)~}A%yKib$^yUk zG&dvbEb#D>d2aZrfjl?$$ET+A7D;w=X8~x@o)HJqe)AkWBXk0I`y@Og6d=c;Su7)Q zF))wtS=amQEJo~xQ86DIV#5Xm3Y?NK3b*Kdkv_@DQjYx)5RsTJ0&ha$hYm!eHLE_E zL@^_OdJ%EuPrkW4Gowo4~EYp-U?zs89Bp?7gL70+_`KbYFOIVGn*KexmT9 zDUBIB44z!5vWi=&k#EKxP^@*H~CV!+))R zGrlLvO(#3%QqHMoTlia|{A{vkF6^9o*77L~P&1LfGD!i*JQuH-Rcd(Iukv!quBGU6 z8orjHp^W}X?xm7s2np!ovBKjrioUsXN%ox9dKPLpz*@38*BsG3Wg1GP&ZYx@ZCb|ENSoNX3$be*dUdJ%+$Wc8GGc)yWTTds_na|t zgL!Y`D`;{mG<*29(Br}=Es7&HL>g&{)^e>zqL;~xZhOlln`thJIo@QToZhB{|HgrO zEl+HuzV|ruCo?i<8l%{ZS;98qqZg*!hcTrAP3g)m-Ef&+2ky!U1P4BU(`LO%nt6eA zQ24hRQbjn|3aKtxaFQQ#CBg$!JF5j}XYMYBrLWQ#EhAv})4 zNeGQm011a?9TY>QObAm_$!+4I%8#vJ4Y}e#DhiI?)5idhmgbGSAnn zID0bo-a(xoTY&}|&R&y$HPXC}-70`%REWMqvu-ZK>LKLD)ZBg8%s+LB*|n?%W6b48 zF)o28++3Jrec*Z%1?GZr=8mkg9XqtI)8dECeyk5l z?_!~~d})mf-NOE*{18h%cqi$J4ri|%S+9y4at;C*TSc=wa9&h@z`8@Tt<7O_?TQ1M zL#SM&C@PR0c{H2dTE^A13Ve52&2ID|eZYEiBue#EO0QfcE~S~_>d0|-4)Vh}sX*ae z17yaQl_jveR@al32N`>E=)etOs6Du1eT#FeAcHO|t&ecGaX#q|u(LyWtPfr9V#)P^ z>}yQSW*qxNh4|g%&x*DTR>$R zIz3y^n7c;utB!%!=uWX;qHFP{UoPObwi*&?dfOf`3S*t-evB^@ki&0~+v@M|`bTR)(ePYW2qZ5B?1%fz08iaIz!8ArnXVc)~Yk@o7%OBCI=h!g3T6%NNli|#WA~| z3R8YGnJ`{NrWw~AM2#Q`ZGar?tjqiQ8JD}j?CLW@|4?$a#)xg28jSd?6ir{Lexxd= zW9lK9sBo**R20pS+T2{!DQGYVX(_OOk)BDmU<#Y+%>L}O&rW4(8I_i}&K&z)PrK@OpKa?sU6qpo|%u4-4uHIJ;$&jB-yey&hZg~9= z@QJEwy-fPXEmP?=oQ+L#3I0g#sN~~qu6Lu$(c*eqHf5(x#cXsy|JJ9**ffTJ{U8ow zo!U`SGq{#9dSRziEIg(J$HV>UR4(v4{=x64MhJ@jK$?R;2fw>Yp{5&>v3i=S`~BwZ z{B-})-hzWU!_DN086O-3{>4+6dS3?B%JKF~VHXPNPN1kAZy%$EIr8pQ@ml8glZIgy z?nJ%aKQ&L3h(XeDFpT!%P7^PGI=?10$7C3Br|$ghq;YFGYD(@zUG9HxKVj`EG8kL6 zfG^7dgHRb{kl;kcayX<_v|!0ae-|{Zowprbp*EC?w9*yRB&jzaT=4%mblTQWuU{-1 zmREPvEEENYeQ3kt%!i^dFATV{lB=Xmlda3z;7ZY)*X5JhU-uEv75!p=+u1dnDLHTr z)VE<<=I)OgF|gWcKp|n8dw<)MO-J83MsaNJTsY+%y0=j=Yr1btTcYpX3YXVR#BXq>4E96Dnyg&* z4j#*r?;o&p-T4nRRE8{J^7+c`()q6PL;fIdxVoRoEfl|0 z26eLu&PWT|BGo5`rClt4r$?Bf@;})f-601j3UFhs;OKEQjf3W4(q2s8#q`$yLX&sGaoH=K znN97oX%?z})*9k3bQ9$g8uaV0 zB4vdG8Y-vjZN-}<9-Et$ui)Q?qMce!YK82n^;qb4VXM@CHO5wLq8H1H|3G8^_UUbO zm@NXptL5ALO%(TRnUUPqjp3KOt5$NGIHEjLtqN%u8ZFNj%tb6uhPt%H{|t%X$|Kr< zPixD%zT(7c;shL0Brajn`0g&J_>@Y4%KuSAJ6`~Ya?*M*k!yu)$3ifAKv6vrz<^70 z#5j~)*50T{@1P+iZS2;tN%8bJGHZc#|W)fKnX#%tNM=e zYQXJ(o1V{}5+x~@5>0#+NtbhLC^wth6KxT*C<$0LYt@7q8hc$wn4z(8beN&6jwgd6 zR9XRz5khClt9-!jX8b3E!60A1#)KC-+8ql23b#L~$a&8LF9=S(bTX44ku50@mgz1e zmUwWZqW0T!1T==p{zi|gykg%fhK02Zm@MOeGd*B)%4c4rf!LDN~=ldo+QtGf*QlDAjZ$YIKV zuvgV;ePq_97bpr!cD0HY%fAH(?C`_0rUaH8f(QnKpiP z*V0BEX|u|zjUy5+>RKA(S{lvKp;%R`nKXGD*HY&>&Y-=ssF_Z2>(-Jv!AxQclt?pi z>^iNbEOnf~_TfajR@VR{fo9R@RRJV_dA_U&Iq5-=ui_7cEE#F>!!1`;+o(OVq!c|Z z(}TqHubCfHStzn0bCiZ1tp`5R8M?(LDzF=Li+1JgGHZ8?Zqb;wx&@Lnqg%9-)-966 z4c&s#0lP%EXeUaq{&ldu5cn2dsaTs(?e*hZ^i$RegLVU&6q!sN#^HoFDdkRob?DN9 z$6BCw%>7y5P;AgUnsl`&waI<}&WI6VNPz#wbl`_m`ekqo|2By2vE~+G!?^0eJSFAK zK`U~GjF_ny=+c`xkmigh=?ZAn7G#1$IOvi#w+$=QPcVj4HCXfX4dYB?c!Wb~b0HuO zdYVvX^m-eVzF`c9s@UyTZc`?Ij6>-`XOII5ZDK!YtmVyR`=CH0(t)-HkV9#f?Mbz8 zP%fbyR`;|8%t23#h2!yehB>UsS*f1}%bY0Xh3FFJVCRP{+XQ-?5_`*lRjHLupcU;h z!2bX2y?s;MNU}cqRkYrFBib|2rm;PKxqqC&81Jyh1_$7s-Lp&(qFaD}cDh@AB(-hM z#(ei%Z)!=ctWsuH3H$d#Y|LV4s97026_D7=f2b-FT7Yqpl&Vb0t9FS~yc9++TAQcTA@?nRmo9bkUN2Co_Sd!8 zmQC09Y_D4t2iCtujEY?pgrc9}uOO+UqHhIFQHtjZk~wB)gEDZoUP6C zE1UaEb13C@P;mjTFv7Kps;0=R&?s1ugfEpZ)DcBN_buV3PRaKKQkf5IYgZLl1t_}W zoWn3AFSh34Dh}^|b66E?d7ebL48-dsno2Y80yM^XgzG~FIFBR(noaeZxNS+l8dtS5xk_ezpc58hf`u%g zAjHY(#nsW<(_gsPn7xsI3YhJHdV>*xN3+b(rx3*; zLvJ+@dKug}9ldOW;a{c405BAW3wl{*ifBW>|8**NVfN^3xvNS6dkXG=H+d8tjTy}G zR?nskG0K+n`$*O)Ci?l;Fo~p^TSS#87HXtBQ7V2ZEJSpjXjMHk1Ewzm0SwJCnPv#` zo$P;-JW~UIV@zToyfb*DXuLC1wTPtO?wHEn-AR8%v^i=oDei1s2gYfD`q+m^ine*A zlnM)fPxgfn^{&IQFHov5yx14`RjUEm7x=}kA?Od_-a*y&(DVoVdJcSX0PI`%CgZ`a zVssq`>H}3o(Zu?YIx{WrqeUYAXjaJNWR-ZV?%^{2phF~^^zP4bo@VPJ`oSdEtEBtH z9h`UpSxi*b1qZeQRd~@V8K|9K2G$3v9E09}DmHWj74Vx3>+RgS6voj($G5lRr$Vp3iN(25 zGg`$;H^ma>r_BO|v>Zq8lX#}`;Kk3&Tv#Rfk1uy=nH1uVBpNpXNwObBDew>*WwA(q zX3oZ3kmGYE@C1wbewV@RqKpc_L{#(%>Y0&~t-_aN6nuxS+20=-p#A|;r^Dq5eO z;f!}j9UIL!TDiXd*oor#Jo_U5QfE^tOcSdLw-10y{uR)g+J&OhfiV`2%HlPUZM6$X zW&X08SbHBtTCcXHbr8{Yi!Z&buzdiaLUfmr(u}daYeog@hBeO^UsS@UJ?#b5n*BAj z)Vxo-01VDWIx8HUx8Jva#+?MoZ5lvMl`ov-Zx@9zSc2xGH;(n(IQK(BzPrr?nyi7& zBc4g1VO$c?dGZf(NyKNkGp3*LfJ!iA^^$m86Y4hnS&pH#vTYl{|7hio0bcNfl~lb~Hd3!kQ!bW$oS^x=dJUu&FN}Gd zpsBrhHe`Y-KL89QFzt-BM-y*xM&@711U5?t5$cby0<{Nl`o9}g#A-4%F>}Xe>cR-S z(R9#_FmQmwhftwuV*mnkR)>L(NiwOM6~o3-p;dwl33{Y|?2D&DL@#tWpSGPfT=GrC zp4QIghE5?_d0;(TM%ReNs40SL5PJJ>+g~$Z#sF(!`YfEF*a-0k`fW* zg=FGmwOI|bk(Feb9TEkdUDAbIwKATq~J4yuhSFRM=LlSu&Pd%7L`gkTjrP z?2|^BX(>cyq}5_IghLo;Kp41|p-&j6eO5wptTQBk9$oh$j1|-oU75CRb7wg?qa|xj z&PYj$lhOW=@3a#_-Ga>qm+|ek3BC|NVgz~dj1UhJbH>*;a3+43CtAH2J`rbpX#*$X zjILT}+f=ckHgI&Kdfx?%HIphAw(O{sgc0T=RWr1$r<{)(xQriVMprd#Os43$vY6uA zW?_YY_$M#MOd^nQno22Lpa?UGLxK^9C9ym-?4mpXjS1(h`EYNq6IA5`y;*e80|#wj zLMU7q0Irn|COW~hEij7bC+K2^wuc;=#gdGqYSxu+M7!th)t_BJbXJXjRS>$ z@L;u47$wuYWcqu>v`Uwb_V7Y(p7v_Oc{(S)mi!Q%B`ZyNA+P+JBS2vwzbMSpTBKYW zgGOfNKDy4b-{}w3#0QigqQ9);JQn{>ir0~FhSz0$Jx~5WdGpnPMR5_$lIc9o6-tqC zzeGd7M}KZV$Y~q*nEn<+eCFmn9@E}`s9PXv<{6anyhzh{j3+G52XPQot#Q%o;cs?4 zeX*ZaFCQH?4nuL5t>-dD`Yy?ZKbNVaag$ZWd7_Cz2CKxGdVP7hyktxv?@?NQ{U~Ie zjHBbSl2S}+F4-2!yJ$ZWKHt-5o|L6H=sQMaadxinqvUHmE$8>qvuKuz4vR5=Q*!>( zwUm5+9F3|9p2yKYvUN0#mr*<~GO2omhSIXjgC9q$tSE2NuUtuaPuP{DM_=Q`YA!B` z*-aErEZbJ>G)nfg@fp>j{x)3Wi%i%W)vMBu1RdM^xr z_=o7{m9Sll%IY1MJ7dELGKR}=Zy8nsPENv{4mg3Beo2Hgj~*;j7|uQF?Yj4JRgl1@b9)f%A=mD;hZMh~TAMXW2Xvmj@{17L`d+ za+D98u7u6`mc4?wVN{i&4{yqrQnPt^p@IaZN`%VU7OK&3Y=sVZl}N*L__Tqwo+0fxx zgWc4lVAA0*w81ZxBZ5p+>g&xUq4jW^14~4}j15RqOyJPOlN7@VqrPa`;H(8=2)-~E z_c!ZwK6CMnzmln?`%k-auxWx9XfjfGS}~f3tj;5@Dx2W!Kq{B$tqkCfnN7XX!j z-p=crC1sq>g(P_r8L?EkpW-4E`gkW2ea~mw*U%qR@l_$rY^Tl&bQM@k_CbUgRK~ia zw!%6Km`wCGA*x;jXBor#IYK2bRo`@=y)dnDG6=WDp_yFasFL?4fst*BwqoaUh_#I(8tSJNcfiMgqsn+mS<~&?SBJ+LkHcXQAlcH(5D6 za&b7v#0kF8>R!PLeM)|(seN~9ZL~udm!E{Zb*6XPI(f%-_BcUfVloK5ecnq$=juMv zt7q28td3fkdX}o`ao2#_MWs{$s_5!+i;a?Qtx?Rmtv**B>MusG6!2BmYtjM6W%SB_ zLX=V6=UZ4qbl(8auv_&RgP{40Ve<+;lnhe<50O!qN2zUA{mK(0C*YvJqS|J)(YQ4B za#Wk?L7~jhTSfa{+Kefia+{P2L8GUxTJDW*hm5LYo|Zu)!qC?O1qVZKm3oiUOJcX} zVx2Tu5QmwGLt4w!%mGMht#j%{QfqC0l?Xtuy(_UC8fcqyZaBazOp_G=X~jBmgM@eB zdep>lM^vMAIx&TAu_27$zj!`O77OR_`3c#I|?(2?B|G}MV%rs`%OR;r?M;T$0n z+KE{swgZHQE^z`=z~k`p1gx#n?<}npeYrX&Tb6Z_cFOCn-b?gkJk5r_(?L z%lEhIr2LX3%c%U4Rl+)PLE&i%5e>FBPV{5y+LCiI%_bsjo=R1kqW<20bw;hCPzmiD z{gJY|?GjMQ>@m6A_TIvf)LWa!=o)&fjMztWo&HosUDxwDxpO>$Y2!;FC;g=V+Z1KI z2?14UwwoU~V$e4Afu=vDFC>b!l-?>L**ePQ|m2cC>v_ z=GpRgKz)yAAZ6%#H2-LSZ|1Z$l!0a#^(qjucTc77qn8EQQ-9E0rBn-I=`IWzpS^uw z)njRv5|`za{5(|w0w8G-&o>%bD}9WI!`mNJz-?54kE6dZSlagXz2Z3bW+}L_UGH;K z$5T0@?m8Za9L$%VR^g6uH{{Rl5J=V?OQr$s_&n-G1CmJnf+G@tMeBefX@*unB+VVm z5Q+6f4a%k{aRAX2We+({jAsl^o$APqZxJtG-w%sd zy@UfI_2ih?Cv3Q9aSM5=cS<`d=UIx(_w_8iqjqNxTO4Qa5uFGvzl8I!E)wO>MTQ?*Y=N zEKH+?pgM?Yf?ky2&t#d#KC-@=NgsTt1RJ z_43h9G@3JG)9!CoGl!XzGvj5GGUKUc%#invHe<#!R&BXrnhac7Zc`lobQwSe z&!EXRq*R`Nuw)rPLNZ^N&|DeF3iWVFPn6a<4AnGhT_;h7$~cZMJgXd%EvqEA$GG-7?RWJ%sD!XOjB--xSAe$ zn4~*@#z+W-Lsh+O?e(nh)RRl^oSfH9PYZ=3M#0WE95g~KTwRf_R*sjY4#$?l4Q>GC zg)Ob`(G7ps0=*LJWr9pHTS_43D+Hh;pLm^1qUt<#8g<0Qkma#fb3bS zOn!9^sTwY$tec&zK){a1R?_!%`$sgD2>sFMcs@^V<9Vf0Yoc%#mkC^4PnZJ~Ta`M-0rG{b@xyup zaE*PiT>{tD5420@2xtK)4gfjmcecor;Q$bV?jVIQQgGpZc>N4l@rQdUVL3E>b^|~H zme#SPJWJ1~pV|PD!q?Sdnt59FKYts4!7u>fwh^e2-pBcEa+qgdX7Di7LyKC&v&I#3 zq!tlJX#fCGgF2~ClBN-B=3=VnZqyYQkc6z57|S}W>jMJ?3}e(_cmRY^BhnZEJ$w5- zcoGAk_XqHOU|@k@+XRLJur-em-<9doILb1cqnY^fVxN}NA`=>(oGU7JAw;Z~VS8H@ zf7E#^2YDXfyWwFcQ0YFnc?O5qXHg{d!|P7~#3W8nMVTk@qT*!8a>l&+BG-U}!Q{L; z!1N8I(3>p#oxarxj0jNQXGuIeUC!^lWI$CpIfT%8Yt=k3`llu8_e*lfMDy{bRWRKj zxna|+(?DT$vG;!B1Us~Lj>&rM@BCvge@l*~dxGk6b??RxwDwNA^Y@E!#sXVK6(V_) zdI0(lRjNdvRE%otL6mxlPweP&YDhmzxJpGNjgJHf&^1VfDneRitMxoqxk2WQy`e(? zh`yxdorFCQUX;Q*Z~{8PQlfJC-C#~|!x$yi%KdA5gU*5&i$8{DWN5urX=U)wf8Qi{ zl$JsN#El|l6@rqN-zdu2NWtim6#?CHywdoRR?#HZwMH0tN&qged?z4-H=*W=~77z-638zR@5!D%U&VO2v@ z&yJUms%*wbM$QUc@$%8(>4%AMf8q9CA_VMud2rqex(r2%Vvq!dB5^{GYD!-{>FHdPJ{cklUxXTRWNE7sOHdN1|FQD<++;MzJ* zn7RVa(Bf~7v+O>46VKz{^R&2I#><}l@zegZXA{8n&9nP!-|YdXe}0AE9>Vk8-(zkM zZxgrK9tVeqlNWoFzjyY>+hi5zrA#CHC5dNps_9}x zNCIbO(9AB?S2ZItf8u6TTvIT{grFE;HYbQaLNuUqvBRCBqreX zYoT%(eX`(VrusQ{R6ol~FcYx^4kTu~2>vKm)+c8#5G!k|82y4!TiEOl`P9@*@0fIP zO`dJTnxHd43bA_PFP{8W*rbD5ESV?_@ZPt`05Q@yH_=N7?#~zZ7HpKC{_$R@VEP~k z@2PcvhWnS^e;X_FgEuhHx(%M%LUoj<#yrEK!tet!2ydhJKtlmYKY`30NBWv%ZyzHS;jZirxKB-35;SZweP^lq3R4Q=8 zs5rq7(O9Su-FxrUTDmD_Z%G1xHwf20t>9VbTVz2&SpFPaa)=udlMNsb;j3NNb z0Zrcq_1QzNY#lKg5F6^WmyXujEzNPV3cw{=e?{TVc6*gqTpeU=sIWTTC?SGduN>8V zU;mB%l&b*hsf>f|0jVm3C_DIln@$@B2Q1JLOBkc7VAisZ3PY0Incflo{hLoa@^kZoyMdX1+_V^s_jpj1;pH(` zfB#YA`*HREC#NS@C!gNGf7}t>z|=o(SssS)bcJY}OoLtjxMdj_67jQUw93-mf3sV?DrHdh%JdoO*eaXun>cwqFB$(FUiDca zhMR8LJ}dm_-FwuP4EiWnB5=J{^vk&XlJFnOA#Kw1x{j;O`6NAiZ$_**yTn`{%;!A} z>(-7*kKRtgL-^$>2+c3t^dN7Js3&VFFvnjC*8YnSo_uT9U$x?yAGsDS=#d7!JiA^Xa9XPo?QeAMN`vQ=`I`e*Eiyj z^Wx|*PKvugqh-TtS#=S;Jh_A_!ks&WFj~a#C}G77Rvx!K7`q9q#@NE_gvW%$slqm%Iv$9{1#M!9w_x zZCac5Wh{nU#d=vBGy4Lqy&7g#nbOXqP^`B{6$i^SQlYWENu-|Es`rI0e*>*QOSi)> z@j*R$+xT!?^mBQaXJ3j4Oe2tUv0mP|BW3nMZULE~H+md7XN>N#yrgKh?cjMGLeTSl;Tbo#OG#0H zs!pJ-cU2no>)t?zP5r;5f815o0&b>5kq^pu@zyGGrhwvF(pB)wL0%?aQhYpl(QWv| zxZAEhZ;l!~QwK|JTkvdEspn#ME#h+IdK}(SMQ&qtXOiB>xneHXjy-4TUxg_Ou{KW$ zvneoAH9P|~uZE>)Wm&64CG_lDB_$e(M#3%|shW-6JV~c1%_|3|fBk`zW}vgGs#L4M z7^he1o3&L?U%9WLa&zgcXfxK;=8*rBx|CMCPv1~Avv5BiX7>{Mib`zUxBs+sfi@sT zd(t=HWDiu4?j_P2u}aw1c3q9xI09;Ser$#l8b!U5aYhm^ngvrAB)#5MY@x3DHEYU9 z;N8QhOU7(b)nqeff8lA&CVQdvB*mJkC`&kVHrX3iu}=0VnpGJzJwl^XbWlkXhVvGS z>Mr&zmKHCJQkm=x>qt)aC@NK}6E!}qI*yuwzPi$1uLftd!_-gEC|8?%tr0y$zUSCU zSlO&OA+>|T4W}vx$Dml~^mLr)36IQGsS7pa4t*JK4cVMKe|>AHgbYKdHldTcau-5Zz6A~ilyBW|_?=B< zQH{~)i|Td8tRm0DKox3G7OfI8kdJ{z2IZ~-J!)x2s1?LP`|Yd=)l;ntXVe(KlhG_M zrBH6Z){`8`f8Bsku=$CEA$5j+PULzV(71RBiF9tb30#$eTFF0|VH+)C-c4Z_(BELES)1ytee|D!48{27Ic6Vx@b*E*WcA9%> zr=Hoq-2)B>d+BEw<6(+gCa9_wgt)&|%^YSO2$mM)%6=1b<+;LKQ6bVc=n5KjWt~3x zC7G{&O_#Im%Qrz_~_vF}-bKVWfvOrem+3l@#3f_zVcd(;PUdTsV z02bI6e<2KPlnAJD^L2b9p&{P={loh{xI=F?9no1aO_mZ!S#0!dK7O+~> zmrfuh+i`^Bh7<&lX_hDQU>1ks!>+@r)eLm0fAQ2aub?~)6kv)g+sis*DBnnPi{vuh zE>~G7adamvK(vyUgWM$!W5Aw;WNjFuR$4?MwHb?&ucZW-jy|OyrOY8M*!&jrRO z>;JpZa45tR`XGr(&<+@YUyt6LA730@eL8zzSN-3W<*Io7r;pvARUp1339~E;nl|YjqD+EAht) zvFP%0dD(Y&=t>I*-P{k!KMEoKmKJHL^7dAFrm`NtB-i3c$!qaT@rlON)29#>sdG61 zFF?2oDx5)UNwhB$&GrA8#i;eD3}@(%e~cQgqdJ6+OOj2;;^}!HQO)j=o=d%J8d6EW z#)WL5rDF2+kk2~~kwtv{EC)pP#Bg9Mjj7bGS2WF5_gpUwg~LK`75m!Yo+xYcXxtSu zQOZ|TX7Yn@Fr4m;txrF!6ziP@8|Zgq0mDWQ4T>Ut3W+I@$QmsbN~upEy;pQpf1WWS zLfP5Rt2mDrQJ!UGq@0JS%w#=T6c@@Es9$6%`P*;2A*#)+jT5WQ>Vb^(nB^$l=*5 zMpKDreE1gomOiP8Cbg` z=!WV`cR5eFUE&o()cjJVT@oWtaj#0WylE_^d=?3(IhOB>Ni4pX)nDQtf3dFZ`fL0- ze)sq0Z8f@3A7pF^g16G1sVDrY!h0jZR);`2fm)r}TBGbN(}iAuOk8H;`)pmx8~ij; zfQO9bz|&BKTMo2a6K**Ox(|C;bnrwhM}8mapfFi1JUmCZ*~fEI1e<*{2Ss=GP1Wrz zjpx~|@&x{ns}Rqn_7U?gf9w=%-=l#*Le4x<^_l+IMkxs7hqZCyCG2yS&eU@CFlWJz zJqg`I$N0uKsba7@*IT514~XJxsWny2a&6GYmyeu*KFd2H<%Xu9DzZ|dA*gw9CSUA> z03(!)(Ym{-3UQt;&!>5kEL|O2-zBk%ihdJBA#b>53e4?=fi&m{e*|#j1m#ijNtO9J zF=h2lpIVueb)JjAncqj(iQK7jceo4aVX5%y#aTcPH;x9m)yMrh%jSvj9@D~{Kj*Qx z_DU(|F$qBRwr}+9JZf;)LDF{MrhT(^;8w#x(aMWy_mC1$E23Z0SwgrwTDuH`Eo*5U z{g%|QUUy<(J=@sQe;XwyyWYRLKiAf^bca<0uB~fn+B47E(kk|tbCfk6z2S%GT{c}8 zV)GjB9=U%l{o-#qbajkIcWCb48#y|b9ws3=)EhWY{(GGi=g%J`Q zZ>8$|$S37b0FFR$zxmvGf~-B#OLI5bZS^Wu=>VHwsVa>7qD&T>A937!65PR-bSC#M zTIa3e;qBjZ#A3lD2sy^9b*YmmMvXj{!2k`ap6kO@Na#I1Y#|P7js_O>xv3UQHh zrFYlq+|N`x_p4Wg>0VqI2aWl6~$G^PEzS2j_&Du7do+Y2LM(eKIqmn;_>rdUt! zWb)kQqj_fXxPKo-@lwvK&^!tSxsX4}lSuqK$v-Ev`j16J`eogDj9}3TuXqPC4@vyA zkk|3$G}(~{KA9&A@u@ zv?02UzNGWH6hx(mETilDDjUJPi0A8NnJ(Oqudq--a(^-{ZBueGg{?AgeQ|V`CpQK& zU{mQ}N*aWU7OwJc!&kn}vfp>-$>(JL>`7V_>!f({^yyERkF?IZ5chlaQyI=Og{^PI zUqtFJqG#rLG46j|gohaDbrEjdOL9!?M8 zm$kQHl>(f|jbYu@qv8>X!TH>-UNOfA=!aSZR)57)6zn`bsN$F0ZC#@P$=&;VyL-=f z_g{1yr;uW7iW6Fw`9tw-haq;0^+Mik(&a4qD(?g)NMQB6t-=!0!mX~Oy>T?tc9ZHs zUVTR`Pj5%^fK+2lX2){WJ#VL=|3{)ytc!*i$!H7$MLpn(L9xffwfUkX3dMA`sZMIo zt$!*@9!EWCc<|A}CwNDi{A(kFi3xVuzxv8eAks`qwvw_VfEX=aEshW*%*;v}#huj^ zrpv6wz|Vryy?gPTs@QE;sx6i+1}GDp4vwVR0wiklY%v6a6Ty20QjQ`Z4~{+V^3iCS z83MYc66CQseH`frW~0UDk4F^&41s#g`hReR&k=8Yjf*TVli8?#hLeFC@vVG~mRva1 zYA9x!_*Ur}hHNZav>UPV@$_z64h7~YmrI~!hDF6HXV;T6 z?5LrV(48;Y+MKvvvYS9`e3!9_lSD5CZ8bGTQm!93uS6$S;I=cXDt0X!eIEv;hTWyFpaJ5N8WMmO19=z!>p;;B?m+R~a9>VK`Z5PnxO z8?)vZ9kaCqe@SVs-W|V}(An?b9-Y;X?N2_Z$rl$cnO!a~Iu%>1=qKd>)=T0 zWbgnEAdlYVkf)%0G5$ws*Po=A!@>`jT36Z4i$~+da9JCKA3gftym>f)n~n@ zWezu83sK&n)Sbuv90WD;0oCqys z24W0obre+4fpG}&_+us%KDtfHclG%jwFF?CLo`O26M6`4+825VZZ!<_kfm`NWjon8 zs&^@kUDrd)Zj%uGxIM73w8|Hv8rIr4u^JXOmOIe}23Zf5fD&r88_j;4J-B!Of>~?R zUInw(RznobS{o-6%zu&(YoE;waFU7m(|{@6iFB0FYErE)6@+Ja`Y}a6oA;VjpQDOL zR>PQ9_L)ULtJ57_)H^!8RjiWXIJy*svkfB22JcmE_9|}I431?6{>nUB(8a=|pwZFv z(a>e)I9$|~=?sq&4_X#&ph)V_$avE=J@A9ZE~D>s6#f`_VSmsFV;t*5!4i{mulKpx z;&*A1$NBW`KDx=Xg)mvlFwL^*TGm3)Z4CuQ%s?+!Wg87lztUO8&QMf43#z=SZ zpSS0XAyXg}Xt;4|QlP5gZ~2bWfvwiV$0U-_$=VN>qpE*~2_%7!HFQxSsSb3nUfq*G z16ti5ZZ1V5X@6fBoudKCx}7UM%=9`?U}YQUC%P1WOlOMEM44EI;D_V4tYuz85=Jj4Fj`U8fD6os`F9;<{hnItufa`m7+f(OHyNs4AOcNNQ8 zesaRsSOpkP_o3k2=&fROUoc3ViAp1U`2tKE+?0*$Q~|kN8oW=#UM4ywq zsGtvKmw%5Y5tJj;a;_zpSM0kng^=|TePAItx8w^UZ>F>y?cn(sdVpLtf9DjS0ePyqPS47*|Dqiv3e0{A#OER;vG9X<(U14Q} z`B@fC0F2j9o|q3x{0sfupFNG z3?6Vl&5=lB$lb$~V7>0mxP~&FC!JO6xX?co>nDX7f4J*<9{cJ zCrFD*U=6<*rb8PS}i`ZvKA5@gXn2=R)1^5-Keflb~V}FGs1CSh;gyg^Ll1>!m@%WTp7%sjbif27}omV2OkH^S%gHg~h%Y~izW>wg|M8;^Ny zM`hfSPY|9&n16!Ab!j~>-)eLf`XM48A5!vek>`5p>FL zxFb(uKmM+cJUZPtHbIF7pfE9Y7~W8UvJuHdbI&*MxNqM!0G9;>Tm%+?rN5U z_rD(ekpG|UUI!v5mQ;F*zNUOW%8`FgR`C1zr0@~6ZzNnwkmhbx6=o`R9$FL^rik-{@i zp}`x(mB2Gap+zEudk_b>d_2<=2ygPXY4D{Jvb2g%Hc*iLjkucu@9)Ip>YoqtIPac5 z`x8CRd(}g&4vnHI7=Pa}?m0GXkAr&JI4RR@mB#HBA4||3cXVmgnuYVz4@VcrACAs} zi{k{mH%^}8?>m6}Sl`!pLc!*ZmX)CH;qg4ZUCN@YYUqbYCl^O&SMQJBT|g-ulRX)H zskYo$i>@G!t50CVR)GBYurc{c4NVt4bb$z0J@1cJJ@>dv<9}J5824z%i=-w+D8*Z> z;%UQ^l>>HfG_G{?fU~9qXc+mw$rX)t+e;m6Ro*lirI)6X@uOsvc0|aBmgMAl_5fD~8ncE-bh0c0#WL47EruR6b&<3zo0@juf%lue!R&Pv znw(vCRJcrv5(2ZIXSb;^vGTtk;-&c8{6c&ZK(?0+425a0grF0~d~3RPQ^%X-x8r}U zm#LVw^?xcYlYAVn(($IYy%@*p+oS(p$8!gd)hios7Fi%*a>pOUw=xrd{Nd>Q{NOJ~ zSH~xRJ9vNm_Uhx&+4WFgVtzXL&y&+% zPp%G6KYTbic}tgzfUfV5%jB~a<3s(8JS3kalYha%+qY*z)T_5g=Z9AZAO7K@78MQ; z@Ek{Ao#zO6^x@$6y@z-Ne1DF3CkG#nJfx#g0WhTd_{-^uk9Z`qdq_U1broZVRwqW4 zTu20sUR46HnPXHmN*rMn(rG-`?~28kH#uJV`-Ng^16n00a1woobr=K%tqYY!kJ7M? z4}YdpF{y8prRb+$0IA`?N&{3F85H27@DCUR_M#84wo1^0u*H3o++=wosgax~;~7{5 z397j~Nyr)$zt_3b&$DOd-u)I z1+@SwUQmM+##2~b{kV>o(vuMpB)hf<~MQ+L@>tYg|L_!TPsRuxb7UFg`AAgYl?Ym3? z6G3tGY~7kGB;zW_=5*4%pC$3^bUD8_tdeiC?05QkMFl_|LVOZC;bWfMI6O0zlYjS= z$#LN5+VCZQ>>+=(j-0J7B}b1e{r{`zw=wzW`o|1O*gCT*$z~<^aiG2P=gO4uOLJEKI78V}7 zk8Fk!tKUX5^=r=&p-REX`xQ;E@U!t&$<8X3V?kc9qB4<(G|ule6dc_}MwMpKXA8~k zVs@3X@R71N&0W(p{BGD%Sq1>0?PDLvD>;-ph{~c}3Sb{ajyC>3`dR$Z4mb zl8dDLv~pslTf3vA4Z-HWqW^CGNbel7G{jOQ{Ux_2EZJ!5P>yB7{QR?|({9K-{#T(C zoSQEhmX}h;1i38Hdiw{BGY9>FV@R8(dpMRgm+O$_`lg&{>mp1(@oieiCr!qe%b(VZhrt31fN|&GG zd0K^L-evhBF0T}@bkV+lJ5}EcTd5c&Ysi4uwk4{$Lf7f^=5CRF`S0Y*G3?Yz%##1CK+(;n z-VSuJwl$tzqTbd*=_O^-+12{T(W~AK4NVdyBT{eZ&hT4e)jQh#sNJ{0Az4FUAX}RD z#6Y&Rid9{h4emh~0d4T67P>0d>OLtpvfklQeM@!vs^G&WiAcii?0Fr`uJ&~!zCAWd z@#@#pGkey7b)HBR6MwBees1QaA>K|)uxhWLe>yxA-|pxeS?}KV;HaQ0Zxj^;y;V?u zSsv-s9fPzthl7h9 zAk-(3{!NO~=&|D#WtY{P2F%(tisOQw{sStqLCzeSwZeJk?DON}o3+l|!OZ8(*#)Gy zXY@1IjQVv3+qAga_6kA26N{m#!t6-jyoqg zYtng{Wr>i7a1ZC*^3n=X?ikH{Slp8r^(IhTA zk&ww0dFfEl7#!&6@i@m*Aqs2y1U=qfv>QRq0{Mtr^h#+4sI2zHrJd$iCBQ5G#GGQ~V9vx>Pq`MOG`V$U0$`G>cZ1X5`&Wh#D}%U4MK zY_!+}gylm{s@JlRoL{l2#8kXrZQvuWL(fXyqhh}4m&n!z*@O|cU9p|09Svnf z7bbg@w~tn`UZi0>s{n(xE5@lDHK()Blz?JUUN@RWD5LE)Gh!->XY|TNCLfqay*3UM zjPA*93#MON`a&Ca39wq-Ne5;*SA(R*O!lzK)ql<02qzUz_6Yh9va~yGGaJR*$4V)4 zWeTND-c;3_{ogQB(=5-$8oNjwZDSzNPd=CqpP*_y`johJ%&3wLixS^@1|lf&9`D>D zDn(0zE7KOOEq>*tZ%ax~u$>@LhkAT)OWPRL$7mL-&w7*t_+~Ic1Noqp!?qO;s~#+) zAb)tL52zmSir1+gEMumo26lbCAru5GECJI8r69Hkz)}$wQG;C5Ep7YW(=E-0xTsqd z5FTj4q9YV)`FqHARE7B2pnY`2t{K zY1L`0Z)A*VqCWA^wU)haO8yOSGqvW*>VL`&aph{HCypNPs1I(E`H1KVs-)7UMCk;XR`rlk(+QrL=(`J>PVf{*pxJB(5dG~Xp0|h-F-0>Jeed=XU4IGV zwwF6_q}A#A!v=}OnACc@!`G(8RJD*2fn0rKE=Bg5rH#y= zwu_fI2svI+S^L^ivY?(kiH?{55_8_lgNh{ImsCAK^_+==sAo;NlUoZJeSf)2mcj}A zEEbb7Ar$amYH^>d?ylMZy!}R__>7{TPd^KHKb_efU;ElpLk_K~%lLEBywwBn6wT?| z(T77~GO4*?%nX&wx%x8OtGTrp3xlo$>U161u^AlQQQcd5I^P6cDWuxx48kWz-q9@O z?VVD1$`FN`d+Ix=bhU(a7t3Bn&ps%?sXj9M6+ z;@@r5ONP8u_IdgBW7I|}6+b{@t2#s>d8jJMcjFnGe>V1W3r}YxB!7B5mhRg{d|Qkj zkFVv=9S9f>DJeR;`G$aeX<*4jQQj>vBo2|DsZo0>Sz=JMF&K%fPXhYI82y;xkQ?i& zGF%f>!4o1J^jp=;Vb;MIuPb~cBKEG@5Hw8j3a{_UHmL45z!u+t2lk`_KmdW>Au^!R z{|!LKkpf-hYX|z8O@Ev)VB!Xw@o=7=-!IGf>sZp}9RK~w*cInqcmXXNsEe%BBzyr6 zPd}ZVAN3)~cKJraK#AL=QudiXX<-1wZ9+-kg)UPV*l?Rn%73B@1t*dYu)WSs-}h}U zh;7psJlrkR#lc?~Q%1q942-W16nCK#OUcH93^1+-l;^Q3$A6=nJTjno-J#pSz5w?X z0fD#fjX5%Z%nhhjHgv9ZOQfxwW_dDBCA;KUaZI|M^J0TlDHxRlq>^ylQ>Z0I$ zt(|*f>V9woDOLsV^;=q{Oy z6*JMOBD%@)NKT}T3~f$2T?$k%urG}rY8a!uT9Ck7cgntObm$7^1(#uM6<3IOQ^ch^@Iizxed_=;VSWAQ3gh zE>;!cZ+}hRn|U_ zcpa?O4Q5cJWbe+7kD7wrWy*hc7vtH;YDgTB(yZ`~Y z4cPt0G3s%OE+4&`OybtaVt7!iyKKoBRe2X6;Sm;mpu?|7Xp)Jy)kWJ~a z{cMI<+%K-PIeko^$>i$5YIGZ$@3!}sk1mpUdY9y8WZ80lA3cqVRWcRgPoq4WCx1n? zaAa=)ou7>uP}91)Evp(xvRIY(qCwS0bMwiU3iI^C*?>XqZ8f%r;p#J5myh++Aa;TH4|VSX-3wEn}%L#+lw~h>Pag z(ZPo|;(Y%4%kjn0`NxC9qk5_?FMrD@y1dNgf0pim%VZzQ5kY60V~UoO_=0hJX_ZxyTb z%`lxWt8fpLl-!CPz)&3}*P?BHZ5p_w(dv8ry<&&dXO!{jFYv5gjpL@}}oM+RWZ zlX9Ieg?sz&pG8Bzw?V!Ch!$}vZe_(b=F--ukWzbde{4f<#nW;f&p&7YD2u52x2_E5 z3B(J9CJf=EfuZ?5+K!kVw!W%>++a}ZGP%b5>}EF?`5B3+{FjUYEjSC??x=l5iqC!=b{)QV>;x$z$hs9mCp3hWJ z;zsyRjnUgOF|m3A`IW7!05IcNwOw;++Jw?d(2>!v8)nB=>@dGcp{Ikbp<^N!p4#Wsx#!$=W$L4P6(QSD|iTgzy%rUZ~+ z%jEhiQR`fwm^>KGhESqb6^&=z_y!j*Jk^G}!^D+1+pY%#JJ>D~0aaOFt2&NQ1wm-L zTM>bS?V^&wm(9~zbgfXuZVY>2q^q|S<+TEZE|R&%PBg!$;e%Uu$2?iY;#ceC^e$fB z+MliL$Cbb=LVv$6;u$~s3{-^`!Z%PXOM&MGi4^kCmqbwxu9p%nSh_#6>;yPn`@4HD0il9~jo|^K>SJBa3Qvej zKYxO--@jGO$epzXP`GPcnr7z0>&Z_{j6x`PM1o6vzhH&WhX5-C8~v7GgVFTn8~OFF6zD|0d|u^qs2D%lX2Ws!8q^t@ z0N5zKO$!-qp7oVqLO9j<$%p%v^X#;L&vy4;bo=$KEP-b<6u@F%#Q?+WW1}p3gX_Wa zc$SY?TE(cv7D$}UsqZ5&ggW;{c7=H5aVq(z~X=d#Q_dXI7<5tQj4|g?}PNNL8)x%}tVvA4lc=3eafG$)%_?*W^BD&Fmnq z6rRL+duA=hf;Y8jaKOH)tpX368AgRl>8(=UkXkb=;VeSUFGVGR);JMAOlA@U5?SWA z(aY9yzutN;`*1?3xy`6p`(+SahsNvc>=%U;5^BRxbe-qkuvB33cL&{x8-HSV4C1!o ziJP}~hs+-gaUnL2T^<@z0=<1=9&EjFs#K#uDu&{idhQrU4Lw`UkZ70(Q!^;&HhQac zu+YwKnJQocj-r7endl&(0e`lQ4O;=JY@l)Q^miC#1Ia^E;Pm$S_xkuYl%_%Bc?H-q zFcyZ7n)xn#T{P5}Gtmfa8imnCPFsOdwJdLPQt+Rvw>R?B8yafM{jgvi2@x?%JuH-& z&UO5tIEkDO4Ay=rS8!`Yq4UGO*uJ|M0G5>Jg>KarRgytc=?Vv#Z-00gFSBJjjpsT~ zl&lb8ye>2%ki-i7w+tI;VHK1hG|i1n)+|4g>OjSN>Eimqc1dw}bl3tRunrUWO6-T! zr6pEZX@tc3>gp>oE#C;1SYGN70;{VNMP3Mt$q$oD%WLiu2$3t_-E)>bp}4fv+NVVb zZ9GR`nR#w_TW0Aw6TncZ!(6DXuFw-aM+ z8WSl-_(rZI>;_BxzG8|0sgsfYl9rLJ>4Be!6J~N`KB^ylvs`Q~Pfr~ilndcqAPF=| z&%}m?WNIOc@rR@H^Mk(}UDY_pA3lhi!PUFdvkwOs_9OOGrhl?cLgZzWlI^yMCm8Vh z4=5ljvobWnyj9dKDv7?3V7JzZ=7a^36p;hkm2}|b?l#HKx1yrQh{wzI9XOjC!jBJ? z(mlj>1Tf+0TXN_O?=FWzs3h<3GH%E@7$OdAaJmE=q0+mD+?g9{3C6x0xO8Znfq*fc z1J@9>NCz3>4S#HGS|o!E@dh?FZBju7EBnC4rcEKpkZ<71p)Rijox1^*CLcn^njM27 z?9i6)SwpI#9Th;oH}NcK0HxIwD9ND1TQyqKYWKZKW!z%%WdJ9Z?-0 z&eQYzWf^}RZ_&f`gdMwZBXFUH$2PP{sI?(u_k}SmHnEfnWK3I_yNXRJsrMK{g)tg7 zp_HfSMhxQE=}eN$h8n3yebUk3kMvA zRDbbc(0r@RyN@kYU%7KyXLGb+9%XXUTD@Iwl5%)Si1-Iz?u3h3tm0{+LBLmr+ME3B z0@pPlOMRMmsu4Y3$S>Db>kcaml)YQObXAB7{>P~G3M>BIepVDeXeZs!h2~Y3)j77U zw!er3dyRkwtqnwwa$=-{vPwkzvy*Ho7G7cZUELUBGKa@)7lqd>@<8Xb$k+!;j5av5Vq^V_{>U9 zU4L3dq|$cFuT2q)EP0gd(B=p4vVZ*TdNo(HBjVb6lYUK#QR7LHqfSvw-t<)w*tp0_#`);+Z3mJo;Xn*DHudtez#MkX}j^r%vL~S*^`L~+$&A-^*KaR|pukcZkWst>#&NbD#+8-jn^MU^Bmnq{g#6@Lk1bQdTl+QkP5 zy(1nfGRilIUfe5=W_kDe#@>+O54yt(m+JW3S30l^fp08u8PE3_0fDP~0^V0hlrD|U zVgexaeTpi*A?%W->mOK|kT_v{wues$1XX&&XqFvLt#*ixfG~Ds@Ng=CKonS|z|}b4 zYY+sk+X<;ui2kbWYJb+cv@!PZFfUJ3au>hL8HvQjaR^)im(InFp)5&+Ej}BceL3?Y zb8$4wysI-WXQ&#TK>MM-xN$bbL*3T-movEJ$A3pKuj|aq8Ht0%b4Sz{H^z=2k*)ab z2>#{Fi;2b2Ec-#p?{dauT=Co_n~NL6lVWnK`0N(;CnDt2ku4&BjB+pILxWX}%i)U@q17Fk7oH0&Fdax>Hg5rf? zGz)6PL9)^(=&~YbTDoH_SY6o7OV3sk@jo`TpdZqr5WCo`7IZ=?{t?Iff08^?1yqcI zQ~XI{-D#U*%YUQJbOP51^_!}yD9M(l-Jg80oorxLMAoX(30!I9Qvl=U1G9;Ny|Xhk z464S5(Jc11%{=v}Y9090PqW2pJukBSUY+~u*dq#39O6(sz%4E;W1XtQsDC@Y$?`>9 zj@(QZJB^LDA-(t{|I5G|n4k)X7|l|XH}!&O!uFN2(|?Rky{jTCw}%z2>W>E|)>kEfp_IQa2|i)_L=s@sepjDKlFRnM>wrQJZH%4_I`3RN!CIDiuR zYh_+ks?*5mm8au^oIkj>X87|5*UIo?He1vu0q%Trd)K`N%0Pdq}V0cdf`{<&V?o)tyTt_2PIfNLX6423Gu-t3yl@;#hc&+-;U$Pnz%4)U11Pc2zN zW$`<@`*zRB`*8ir@P`(zWC<4%0L#ri4}UF@mF9aov~al#T6D!<6Y9{yH8KHXd~j9F z;0gBoaFNRco#Suw2)z%Nw+slA-Ki^J$n5(r{q4>%Ts4ChU9u2`I>uhrF?M5!Cd%15 zvOQ%Ejt;-!i?wHg3;Wa(i&gwjt*7OMYhMT_)&dalP^Z>UIU5?iU8xLl6Hfeb@<4S z4zh0T)$aa2AOJ?uGR8&8q!fE*nJssd#j5n+M%*VA;JElPD$c-@)03;C4<9eu5Wij- zKo03Sh`(;$9J1PP3Uhim7C*dHv6=`U=E6tm5hKvg{9Hiq`@; zOZcAe?stIFzTM^*TwQi+t@MB)5q}A!FC#Kuf*>EpTgtK5&cfiKmdY6U6&;@}DQC zzn)a$(dEJzLYG_{Hgmm<)e_$2*_XaO1?WWzo4ZpQp(E01JU?E}l7Fvax{goY9{v65 z-SOG^#ns27v-8sv=cyL%NOyzzz~fm@HHtUHj999`v7YNZkMAARt5o>@i*9cijo9h! zeOi=#b#HcGe>FbL=JRA)W;th&{-yL#s}#a^Gb~u&RVjQuHz)|igP`N! zzNIO3p2}z7*gc(a%YW9Vs2)HUPPH>ujBCe?u~{e@$0fw!Jc)C@7#QV(5#wz#Ps)TX z2Z~GsBgfG!E%{Oq)D%_<^}PoFc$*Z{JY5Ox!Vrz1)!d?e^_d`wGw71yUAp9-9Te>b zMv7mO`HC+E#qo1VA-E<5@y_#Naj2)I^|K8bG`-4AnD#^^^=hcFdQ7ZDhAa91G6|8;xzM-PE!2@SK9r=LY@(M`IH z=iNb>_n0Q&Sbyg;E_gBPs0VQn;ZlP^s$<{^0bX$ow0_v&X{R>E7^Ew4=thsDQeCT~ zjaBF?kpV;@F<2OUx>XNM9RirnDh?(4zjpK^W3?-pM)j{An@v7$&flokQ4)@_feW`n z;K5l$r{rNZLv5oiXgVXpPBkcwEP=o;p{57XXmEOeuzv#wr{Gf#+*ID@0v$OzOt1`r zj-Y+qyk?H8nB=dgXKx=z!a*zJp7UIfI^sqfTEPB_EjsA(b4y<-@+=NE*^&sttAMs!NvdNYy5Wj zSz4jfWqr{MpjLJR-@z)Z8NY;73te;$sAj+Z zYN)!lqYbUY+oX(Bp@-^~bLqdA>ZS0f?nvnAReufr*O*v9`|UJ#m6s-js|bQ62k(Wn~IW4vL7_QG)Yd=yg#z13mw`Dkhi zt5&&7=BqGTg_MuqW2qW1!*;{k_z+|BGk@~*$>PF>)l=@_d`sV?drPas`j+VQdg~FG zON$le2n6&k8)*slBhdH|V=Ix8=b7TdN5E6=;e1O}4n4iqVSP&!b%pZ?te1H*&2E>e zxYi#pSL^ahpN4iaiW8g9mf8ywV7ND#>U-4ge5@YqcZkIsP0ie{-q?vokLiPWopR#J&*PjnRdiLO=;TcKpF z&4p`~nu&3JRk?ee>84>LkejDL8Go?Kh2Dvas67+WDj5x>AbcT{RWKUzOz_$qt6VgM z8FKS9kOO{|gH?c_pfBC#X@CZ;`7&g?FcvZyw z^3i1f@O*#o{PGcFr}<#FnsZ^BAotm5jfHba7_2AsLjo5&g*zm0#nJ$W1TIQKACk2A zTfJJWozEmLk?FfPY?nNC0Sh-#}xvXNqe9h?FPv_IapPVl}Sk@$z@}a`4n& z<0>%%r`ZH)qouBPlROAzW;{t0SWBcFhb^y$kTYa%*yC4{+tNe#pSfTi@TrB%Epp^nV$LOU1&-zSrF18V69xTkVsC#*l4U&x z#!eqNZo(v}5ySN}t8gJ4_NpW^4xGBaxhVdc(#J6M$~vjFdw&S6?iFHj%PPJ$qE>2L zT$U4=|3`n?@G(CwK|j7ff4R4}{{~cqX~EEYO!}REQKLxj)~LR(2_JB#E)BvymU*1c zSUYRiYR5O>-eP!#pWjdXCAtgW9*RUcIX4SGw3wtL=N6C$TgwOoK=y z=OJy3;^nIsdw+%ec;k-tHJM2tD!$G>OH%D@B_A0%n}U9wqDM1{3_m^XcR{2XEIycM zCeRUG|2LzVNUZxxEjszYy|9Th6#MPgvQ zH*wNDDcAW@c&q5)~-jrN&te;v>&;BCjX6ces6A)T>LmH z?^l4b;Y~b~6URRBEgeIjeAH$4-y*;1`6-a@(hRyKPX6j z7!>##bXb2Q&w@f+Xmh^2Iep{Yrq3WGJYPI`l!Tg$ge9LZLOe=7#iqg%kAg4C7EhDA zu;ioQ&GQA6d@hFFg&`sZk#u-U0t${jijzRwuYY1JX6o>WF+FshkCTVDpS;ikt*wG; z`+>ps3A#Ec*uF2s73e7Naqg)=!#4j11#wRv7YeYxl}ul|kB&Mns}tu-=?o77TTRtl z7Y8?wtvYQ6FyrF%TByy>^7P0m-K&M{?_PbYvz9+Ci}gyg@Ox=-9xoETm7IIo)+-9xJwOE2E&!wARK`t}TQY8qU;U^Dqz#tA>(Xm&l}PwW zkCWQFrh|p(7!fe5Jt0!N3|^GR)>es(#(!$RF2#R#R6amf-X(bympb5+6pe5l={;ai z5++VwcEzJ0EE&@vQ8Sa-fjHBN-9G5OJ^qrGcOUPvWir~jV(DKUE#h=O+Pb`2VFT== zpa3mZUrGQ2(?9Cm@U?u(Y;^8k{kG38DHFj2*yoL9a796FlAr+V$=jWTJKu^vJAd}P zIuo?8v~|=Jj8W=Fmk3>>cBBL6Cc#rl$9uBsMBHAni!#V<6pdA1*&DeH^oEfcfzdQB z9%9E(6nINRzR9lb+h(I;fK4+lv-jDTBtML0#g>P*VIbt|EhL2iHjo$*OVxOxo>;dJ zMU__D=PoYlR4|8%o-%HVf?5;DDQV%fKS6o0rpy;aJU zJM3*A4c`uXwzyO%d+%N-oYq!}I;oxZ6l!AWfWyGVK4;CU*E59m)tngZt7p~3ufxnM z8f@J;uhKbU%&Z?AyR}tfu&;el4>hlhhly`{DJMa@TX%xzbsUA*PH&a1!B#TB7ivpT zR9K)$B!4&19j@@Z!4Fv7+J7oLkeA4qZlK+O#$V^`1~~Z4-wh0a_5pUoAQwn9D0*i% zm~@9keRF(d&GL6_V`C>9Y;4;$HnyE?oQZAQwkI3gwz;wG?3?HL-Fx3ZdS<##byanp zJ~N-{ss5JYn?G7q;U)C2HV8oBYeQb>N!0IIn*&Z5%-G(mIVw}+Gkvt03hq3*QEbL zxhW1-kWyb`RQ0^^wCGr+AkoG|eA2LEB87QciEAaJ;&S`eE>ED={nvd9CXt=DnM8Z! zOlgzXp=fky=&;AqWP%tEbn?hhgb-0xmH2~F`9|LK2?F^;z5sr{=Ns`!R|yGv zg}T!)jEXH4r9g!o0xx!lF2HAH{VQM)^-Qi*Edf{hJjHC$DWPiQ?UMTflEeQhP}+g! z{5lz77DX%n@Yl%=tf=1O70jS;yFm|%7AAjr+;5)elJ?>GE9Lp+W>o*{>@ZO$z)S50 z(t;o1)oSL_sB){-t`m-FOqTiawsQnV)3o~K?&LPRmj=9uIvxP)PvEdLg^d zOz(va6G4`x=mG$m_Uz%xvtZPxrCP&B!ZF-#R|Q61M1XRx`IVkWbd;rmMtqZJsvdix zv$Sn?r}IGv%Lb~VDc~bPk8;)MYVq?&1-AKWR{gv01Lab^;k`y>7}P!OCJvgz^zmF0 z?+5MA%88eMBBw>fy1n;=>F;bNAFI<}#Tzc$dNqTE=gUZfly~2LRuBO^Yw}OAjSR2e zvFl|Q>b^}RryA%5(yp1cipU}BvCN1e19N|1Ef0#VNPb{Lvf0bQf>qRg?gl!$7oBKDYg7cPj+ zl>zsr1u-;idpJ??fi$lcSA+9M3i@aq@Of!gT5>irzLDswxP_vrC->uP+@8%<-yaV+ z>hl_oa{4c+0aeAx-*Q=tH$}o}K6*!6O+l=fI2?t$EfKA8h}#t-bsR%>j=mx0#bj%H zAgepc;nmEFd0P|4vRk2~IjG!fDRs=3X5gw3GVCpu(H)*GkN<%$w3e>Ya7DacPF?j9 z>zG(E-D(zcs5ER{tDbajT^m0S?BE;myGRBzT(Wyw2NYq@)U`6lCT4o7frU1!$x5dP z9`S=Ln7Z+^%$fT&Ufwgy-VNooZvvhJhce< zr4p)S;#U(0oyrV{2Je$p-afLgelphAA86cxbee&b*3Icg*ZayHgFRb+HK8eQ}VE z?#fOPN&bG*gkQlQzGYP>E!pa!7oah$pfX#qlMw?O{vjBHi~gfsoqA2qnhzyt!QESo zH>*&*BG$>8xA~yY-73nd+`g<|@j;E3AcUr&02tv)=fRDjySGr-uZqFdibS?&B~S;1 z0xT=WyK2e=HgAo-yI||+JXE`4Q>>gU8Cs18&l;9hR9uON=2tc!b0eq)h}mPFao)OM zSHO)G_y5_n#D;`QRrXfJnSs9 zlFOwTOLsC~y79O=M2NVB9ob6hh^&3x9FS;#q7!ZI8nN?QeKlwrDAV=MsyA+EeTXuv zMx?|182$CCaJc67!L4Y=mvCmLujB-`B0|H_zLH1tD|}M~7owP}{|n?n9{VEDYJm-= z^w8M_!b&~nH1Tqj*wemYnC!rlSmWz`e%yVs6ki}jrwi8uCYfUu9J4-ms_+@$BQ1co z$v?bQw2$U3(rw=m`p|q5vu!es^?OViRSZC4Tp`^03@29(-|EkO!_Xld1mD($7YwuP z1F0IuAF~5dL$qHu_>0f4)+oq&#Ph((TD<>&V1OtKrE;PRFV+D}qxgkUEueFzpf3vP zSixLY4MroeUNzrEFJvyz;rA-w$%!nd$JKf}k}$}6ozt@pC+&}wKx^5g%A3-=a3OV| zM~DO0#$T|p1SQsC#T18=uR`HCG0mgOD%1J4VBVrC(`fHLCSX{FJ{fFu?wceXRF_qnIYv5dp(B-xLv7BoBZ3q*{;U^%6xNA`R!iT@3fTS&xz;l?gr3{? zd)+Tk@_tG;J7|7Gt2S4G)34x2Dkq}zK>)3FW#yei>+$Vx@Ha8m*KUlaGH4S@zjU6F z-=sT!G}xo28PNxa_y7zqU+gpmYd3@iA$?A7-icDkqK$BXmX?3&e7rx^b*|72b2r!P zQQ)qrauX_5BKM2(Hh@M;GTsJdHdt87Ml&T;6uub*JQNJ!Vao~|aRJoIMbl=g(-NgR z2<%B!Lkz}8>U8;d@A!T1^rCn0pDc$b``9UV$Ux;68s0{klRuK@Z!!m|$5&>KIA>R$ zho`rw`zVhB(1%!FkYC18i!`c85J+PzkxRpkLAccot|@V#{m}@lr?hnd-F!Zi)V5?Hh(QK$ zqvmQyc+vAE%yB&duawc#4df+Qqj*(p2GVZl`!G-uxa257p3o&gZW}RPLc%8KMG?9f zWhcO8nHR`lsOJP? zWJ)Raj6ym4VBJCEW9Lw?A5rn2_Mln#JQ0Ou1Pj@j&{>3I3B3$62UwkAC>w<`A9`DE z@Q;9vcewJVnb-k@Vm3)W(}d)l(08F5Enco3Kgm*d<;Z5^1j2 zO$kZFm&wrVGQD&rr30rq*c;0@5yj=IsRu@aA(wIVEK%gdr(RI@UHm3WUvz9>#-f zSRWd`DHeSl?+r)g8~(|aXj1*5LLd8Z&z8tZ60h^5SxL20nV0B>XSa4H^#u!2?>E`} zi*G%-v8gCE?3SKxDCog9OkCgcJ`&ugScw7ZUcG*;bXfWWf;|Q)=mRC&5`ddWr6>OP zQ%f(kckx9;n|}7gTV1pvo>NyE-Rx7GhX^pjwgpfMvn}BaISwe?H?U)Y;*j^AaV4lx z|MXCx20eC7*a8c%lycXjx&mpY+V88wz#VoL`ME;b_ZdWVbQO^|3T=&pfI}hzvk(bF z8)SxA70gH*h)?3)3~lR(0kAcoi#9_wA%935>supLP4a8Tz)KLEs=9VST_eRA>;72~ z0UoCmui$BA5t-lmW<|o9Ok^(qK5lA@+Z!t}u|}hQ@Q~Jl)&ABKke9rIJnNwxfw!uw zjKfgg@)_2Uc{puArnxm}dQTC)$Gf_*mxaZqsovD$tj$&DsLDuW4me1f)ZpIy3eE?g z_LKE&BV^IZX#OT&h82wG9mh~rgoJ+;+K6_Lr^s-J z=S&`p6ZlgvI`3W|Ls6g5eWhu|F`PA?{0@C)5RfqbELKnLvsxA zf;{CBtW^V}f#GVex^0Pr-GXu0fcwYh)f}*zAs#O?t6i+Wg59|t2f+@A+d|9neZ39wJ1!v94|_>1aLcKrFs11Qp}#HGL4fRdwObtZ~ptxZJau`-1I-1xjVRk9iqlL`{SLh9kwcEiv?ik8DmONv8jNq|p#WtC6Vy|7;?j9Hq7yX7G1&Tblk<Wx(^c3n|E=bM&^<<)? zYTnifwhL$xht=A5bsS=FbPS~u0#zpIk_tzxye>BP_L}a|tSp@Z!=v!aeZh1a!LLl+ ze4BJrUPmn%Dh4)z=Rm+YWJp+s7T+LV@zR9z*&% z?vJ|YGW;`j5Di7g`|{jYqhY@*qZ1Ph#kgU-kNH zRi7Z@l+AF`KYe5Sy_z47A@?n8ld*H`Km*dt7S{{ipmVqMsV0t3+uUA`4IGI&r4q&^ z9>KdQ`7i}9cFumj1}pC@Hmfq^3iy0_|9x=|)m)kkqWL8hQEbp;UH{J!B47qLzjj>- z0zg#_rcXCD4sEMF<>q~Fe!VaeKGlUCQ67@i8P>F}+xj>8f#&_PYfd=w2hA)2GC$?4 z0?%x&sg5zTVKpn?X-u3>f6{UQQO;GQHm|*~kG0#5p~@~*u}rZt%?S{-6=gUFsOGA* zDeBTB^}_ajtI6q=a|s@NKPXf!K5I&nra`f4%y#kaMh=qms<^=MrVNTd%1o!Q> zlZC8na@50gLZ&+(LnR!|TVak`1<2^Z($Fjgvv@vGd=={#1o(*qUlheDRkCHHFhKes zii4nPtBkb;YABnuGRcwxCJS%$aT<3<^g!&He& zR<1T&B~}D|y!1AuFx_U~YZ&=(SJy^>-uS(ez*i%17s_C4m5bh2uv zjmUFG?ajZ2-Ot*Pq5=b441ZIG!k^|_5G^scPC=c<>}S0N*UgGo9d&P|HPDY6GGq8w zQ+hBum__q=kDF;nT3|{xl1aeIGO3_Uv@vwgq?Z$pU-5hVY{u)#T})+RVgbsHwtOuI z<)=C)t8GQx_)!-t-w>5P;1pE-+6XcOZY$U8TV6YtE(8~Ae~y3JYn9Ej<&n_nNCk7j z;Xrm&mR;h6lDJF7OftYJCKy|<)shc?{URth#1QC&-5J388!AxiWTPJ^^|5g!sjNv( zM0zvd?Y!bGOWCe9KYA6_8vvLWYh32cek#!G1h5Q@2E*I;W$Dzqw>2;R9gMK)%Ne?= zs4DTo?N%a*=8lcImZO0FAP%W5sJ}P^QDa>yfrc&US7XgbDuA|w4?{tH#zul&1j8Cq zj4{N2w`-}%v7t!9aigU6=$*&$jU{Lm{!*0&cH@NJDi6K^boAt0mv5U_6gCLP?g>NFiqK8tHK4dAp zrE43{gENX)q`%QG8*11b)C(4N2JDw0Ej;`5SlO+lOgSvUL0yADl)%70B3b;HjLo(H+X_9L5w;HYO6PO7)*YX@35!(xazw=1=a=udTSt=PR{W zb^TeUg!w9L8Q48TiJ;aYZJ(@|96?*zLcw1^qj*x?fHU9n{ElSCB64)3gGU0v z7@C@Ct$Ja4MeQyC%SQ9VQqXiF7CjCMg$+W2$nC zbrvC8&Z?vM9G5($E++GRe16gr zYz;%zwB*gGVi}a`^}YhVt~tU?^h|(Ja6gFK|Fmc1j##HoIRw^Ug$&@6=_{Y29cmWY zT6u*4+5iZl!l`4Q`e9i+t?1?Tn&_sKAl8JT*3-~xHw2^IeYSfUP&=Ds)3WD@U#lLj zO8&4YowaQXR(mt)$*-|EdKmST5CJL!Rl(;bFGQywIweE0~gSOqRL|Q9Xcy;)5GPBkOSpn+J`?BA~>t%}SV0 zrhMSf?7lB`^^+u8y0%0MTz($)R!Lr;7t}78`YQr1Yd}eyS~8@%IL{ew@gLVr$%&ci zaS>W1A>K~B*`u%ok3utZXL_DHa=Q`-KX6{1=un&6I(FBu{1 z9OeOf;eJarQz+qnTNDL^Q%GTXk-vPZ5<*8%o7m)wozGhNXVQL1j0BRd&@hO3KsrWO zB`}Wuu;!rZe4(0%dCv1pZ2Z9$Osn`I>+7;FXzN?iOlXdgwFqIeB)0BTLe9@*}d-$=BvEx5P*v~+uUO=%NY}450!<1;K>4z zkhtMYq0-HB;8dy(J$7os(O$;u^cG*Sg?>TT${wx|Rttt>w_lr#{OFU_RC{SK~7 zL1X8RPXto{HW8<$bKhgX1jB}%rc?n~2{}fm;(%-WL!!j{cdw`Hl^J|0Fs8Zi6DBzr z$MFr_?E>wHK9&Bf`rs60EuH-paH~w_l;={5=DMF%Po(b5zt=3@sn=uX^a?Qv5;4rs zbfJn2vl36SKFvo`slFyDUGpiF!^@P*@V)VEyS^T5=;ske^F1U-b!aqZ?(rSquE2|X z#P8&>)RBWw%y+4f$s^7#MJMOXlYith9u3J1+!c0lq(9jdag(QG8bYx%z*dA+H zijuOHY73XYHYTRC@@YKAR|yKh&HBvktl+_oCqH{B*?@L!C^|yi^<(T{k6^fFGA(6S zWq=T;lT7r*68FX`kHN-ym3{(; zm?36!PFTx!e6v|QF8uhPKczD6!{Ct0mibV`l~NI^88KE&19PVjE@GhHFR@w9A$nha zx{MNKjFR=qy56YkOxUk79?Kn%w>-+i;B4o`?G?8@txKnff!!~{3?jxRq##C)zTv%4 zQZamMVTyMmA24CmS^mm@dc7`kSZzIZeIw}Hjt=@0iab8#o`04-e(dC6)nv1Qho%)N zC0v0wTHOk>(Qwnz4Eq3=M$Buh;zI;Ev71QjWFU{#NR5&JzSrdG+8kxI zxIT*AW#q?4F+q=#xx>QrgD>n#Pzl099SNm;&{KD3bohR)53nf>j21gw|XE7bEMTTMrInQ%lUFY4=Bt*XoCz z{uSWTs01=$HdW+L$jYS~Drqds@un005CiGJaEA|5Ei&l%`e5t49gwB<-G{%O9V>Db zA1vI6q_T;1KMorQFkcS~IXL2EyEiay1czmVnD+}N6ke199+h5wYl$Mpb~Jz1@+%*5 zMv)MagDt>u9bgS-6JHa9CxvN-)EwiE+9=A7)fz~RYN(*lOSVq#;Xk(E{5VIU zFw(|eP7>Mc0ULa-`$)8aq^d@*j-bLWr$+1J*ik*5hFtiAhLbPcf|?$nhL00>=KdT1;ADQTMqpJWrdx~3jBjVl2t->2wDSXU`A*nNpV6Qw=YccU1+c@SRsHmmWl~|PU0kd zhRKUr$FxCkwWtAcWmOQ9`JO>6&QQNxq@*BtOyqltA_C4AuDr8;aa{Ppgz)!IQg9q! z)$Ii*DgZZKAUn3$$#=_HagH#qO5bIgHyhsetH_rg8b@CFsJGn~HTPy6$0O%8%8%d;#uvC-+*EKh|G*Lta}bwvS`o z7P^$Ge|On3k=EP9VF`x`6~H~T3xmU`3edPaz5`5xvt9J@hHQ2a%U69lWC|Wc#O_R- z2SB;XL=>s83xF6?pb7}72cu4m6g4SNmEWQ;wlu?h6G$}`0z%mHu}v3n{4r=smuc0w zbA!{df??h|a>5^xUa+Bne1vp4H@2Wh#c?)M;cJiObHE&UDtpU0m=~)N)hc z7EtE-a=!122uK_myCuI8?TyEHvLj%vcfN^IC}r-r`s1R2mW0weAMr+MD35Y`UhVJK z=6*sd%0R;~a~3dwzk`67Wx#+a%78;)fIz{(z<}JNr3yjelBE(CH$kLsM>b&tcTctP zvB19Qy+H{7pN^0^wJ3!eDgveh6amv+WBP~T-+@3%gm;Ea;~w|~X{J4)YAA0-tDkpTfnX{nF?KXsvBbfCVUK`YUJ7 zC-4?3HvY1Mha3Ue`NxNJ;oIb|+8`0obZx;q|Wt@j)S!sd*X}2>)vMKR0?=TZDR9TLQhTt@8gh z<6l(_l~%~9F+p62sd+g*5J00at5VYcsbZ|O3T3Rc1~OLKB=!GS9q`P~wt(zko`1Al z*x4ea`Xzq(vo<>rGIS}y_N&6T$yYw$aQfw9(A@tGNIh&0O0`|0nw``Ac>U(yyU^hy5cvG?V@pFq7U*@$x@R zWIz-G_e7e1mHe}Uzj`Q%#OSD@ClcUIh$RH$^H z4^X<#*HYkrV>Z*iOuh#N)ck+%eUXsF-~n;|TQlji{2 zP*T)j`cTv!%jLSdlKwp)AD>-c!8}wM?OQtozL_2jmj{P z6VLeT)7@2J6kT*qOp@ZE=rOvXxPrK)r>h#!zAPOOyKd&VM8TfwtuAEPp*CBnQ5?4< zo)lzaLe9!%n%XIT@4sA@slnQwcNAGHt^gl{=gHhwP|^$UsSVt}tP$9&s&>?wtZg4I zD=C(K?_ss9^i(!|72H2zo2-cR$hLHGduX)$9KgEsSB^coD7ChlqI~Hp`yqA5%C>3F zXK4XwQS3b~527rTHE#P@-rm@Fce*oCLG{fg4H_FeCieNB!2Wv=H9Jp7a?p(;~;5x+!~S#a`5Rbo~7+0qv|TUBme~8xg##6dLd0 z1oiDN+(7=N3krs(d^@T}{`J+Swjmt7iR)LuZDU*eiE0BH`$17~JPj^Ir_)@!QMD|E z1=_bDa8z&d8IkHw+sWH&mFkHt)r)(0ob`~d`prq7-&Ehuz;J(bT#FqGvY$}7MhuGW zc0e1TS3aYVwOxouv1ApECrR z$ZhA5-5MyXmT4fiz^XfLnrqNRY0Mx9le#SbHup%!aQxfk`H^b! z3%M)u2)CsG0m(Dba&8fIrJWqKc$?1b^+b;m%}%Z|*U1`F;EH7JcQ2 za@FgsU@pA1l`9gTgAfk895J4Wm`Oy@fGCc+`Dcl&x_E_k%Yto#NpsG`86q1$pnCw8 z!6`V4`x{OII_cz!aAe0V0_Dr9%j;RZrP4*P2>XjFihqM-p0KpuN)VUyk4B@?MD;>o zDpqN2xToRj(4tSny zp9F$DC1@0>EU{K=i3tZbZH@FE;49m7-3?KrBT}Lg@k4OVCoQibMcm}Vk6Z+5MqF#C zNBWQ$1Z`N5zNUz7&^~sW!Kckr0898KIdEUO;h?@>to`pq%>FDMmY<3awLCVu40Tx{ zm?3tpqoKX--XH*HZ6dw!81M&&m$HPF+zViGKD?(3HQqz1Apo; zNhYf?8iJDSE@NUT2*V z>WUm(&!vl{d^+9RWhu|}yE*3wYxz#v1QFFW5yU~gQ_v;^-BUtV{MI+6s6Qr3(xQnd zJu>m5V8-Z!B@5W&;0-}=UN7s7o?pqz8?=1_O5-!#Z6BSdw7rr=0BK{J3}fmwJtF$8 z%Dy#&M%ME#h# zLA|6?a19GMZb!owVFR=pY#4Sw`H*?Ic23HA-n2;{LL>DbQ7gNU`cyRU zhA#5V-?R|HTwLX8jZ6i*VJTb1bgpK#H}sAv?V+P;kywimwdzIhU+AMMi<=!eIxeAg zxXT@cxuXbO7qk-^-k@w$v!(V%5;Xb)=a;R}({=I~Kazi~0-PRMxS*!C23Z(-NeRp! z^MKDi*R34G6us@|K*Ae%AN~)Id!d|)Sq2GamgZEiqCHm{YQ`Tw@K35TzQXj7Zg2{* za8#z3P!P$^LIJP!HLr*MNQ&rnmu&5vWfyB#>Kp!Duk^FW9sC!GXVFKfp|l8r4!9AW z4bD^`j7is(<1~h# z2yNV?6a&3Ub~Y7dMwwixV8nva(%>8yZSGrE9o7ZDS?{o)h#9i!Z4fh7I-~PzQ+=7R zY>$dVigVfCUMOhRWZ?WEKyE}%uhl}difeu8*TB{{K z7nRl>@cZSHKu`)3^Sr?lCZMC(ga*=*<0e`f*AvbkY4*x=Q-_a!`RI`2tQ=UV%_95( zXPi-B0-*ggju%cUF&04DFsOS9LBFo5-XdbSf13?iv1d3dxx>@@U7liA8G?Iq|8X?` z+WS+cK5m&GLRng@D;kTRnbn9kuN9Zs?p6#0X=!cwoWze5m&jkB+IWo&LB)%qsnn)7 zf6r)mVFiCFUu)dK7aCIM^x)5+Tf5Wd;pH;uCO~#%YG@`u1A;n%h9F>;+C-8$@4Ph& zZT*#{A2N`j9jWsBl)$fhhhHt8F-FZ^OtyQHH%VzDUYl&2vW7ng5Vj2rp_k*Spf&bV zz*@Y3yNJ5G=gaGl16X;Uy@=KtCq4<*CvqpADyzzH1`$gn->94SgD44BdXm2W9B)t5 z_5{RUbYxFirGPn`5xO_bjoc2$fa|qfxZd5Lp9hcu2o+wQ8eQMl_1uI6s()2A=Wp86 zs9WGHm)qua<$B+B*_xeHSuW%V-E(d-U>{>6)znh~p!!}7 zY{93#NUp=piehycKJqL^q{BhV@-YyYE z1UXQR(M;@NJI(EqSQ>(uT;}yhsJO9rkxJ11n!0;*E2b#Ue1kaAxh3{bEJfQeMW+l9Ro8KK9*$p(@TE(ck$ux zVza*PRr0r_H4~#WTpQFsg(#raW(B zfliX6N#sS1o8mD-5n>|+FIfBO7S3GUzJdm;ay&HF-gdQn#QeC}Y?_AA&_-WiWgUCU zsjG&3K0d^*>Kv=-SRK!Z8mn*^?WDN|27!4hyvtqiK!RG~W zJ(}Nc9WF2TO#RHmwU75Sn->@soCZ&eSxcD)~E)H*@&H>&#Dp zbs9LT?BjWYBn{Iql7)0`n0-Lh?GQ$3T@q&+b8VJ2*(^N@;z64(Ibp|;X6#EYL%h#B zZjqa{`T~s?t&U369*r%apYmm|W>KUM$^q)y(s3%tR0 zx!uCy0=H9h!~&{D83C_1n@wynjIf^}=TQt9ziVjx{ZIjBp4dID2Wo3XHW6w&j8=G1=sP^h?s-)r@ffsB z4yQAksQ5<{AVovizMBK42f>WswBpnPkJ7G^TsxLRPHpqjW0%(TD8Z?TIn}l6hft_{ z<2a#<(*&W%Kv4rk9Rj)THLxYrUu%%lT62apv)I0QYn?YUmgEgIw=kw)^RKm^;3D6| z`|B|;ba%_T1n)!~3pxuKD~AnA8lqGoQe~+zql(DdBV9C|6EFbsLH8+Q=UlZiO;J9c z5{y!2iJds9;Iynrf+8b|W@6CD(us@4ERft!&Vg?(jtNBCS$uLudx38J%sZm!vu;-r z^@|0dDFL07+8{l|EhEfXXfL`+$5!4A5g~^rOe!sB2P+cUzt>A7#A zIDf!_OM#Y|qzeGd{P4YJkXQ2-4gW&XRT>;|uKCvz_~;2#H>d_9iR3U`%_WAu8)7Yl6 zlHs6?>!)&LdsQBte7PXJa?2{sH8^!Xv8k)KF!_Kj&^e^{V@-AI_(dT?Wq3XDt4QSW zY3SWm<@|hiPPZ4|>88U)6VSd3;OqI?=K12(bbz`f@B4Uoa5g`GdXTwXn3>uAj`zLpdS{h@~LNe|BO1vkCL>X3KvfJ|X}fR|5Sj4b}3hwGw_j#tGme(o!p-a=~_# zQ0DS(pBO-|y3Oq=C(Vj^Z2rmGD z_xAToo6e5Co5GKiOEUZHtuGY)Zh^L&`NZJoNY=-rt}BnN!fiLA$wI~hLmJ=ro6y)$ z%5&a_IoDechs=^n696+Rz@@zlce?O^e3z_CQ=wy!^iawPQ%qk1w0pmIfAs78MJH0h zo5`)j)zlkNV`qQjXfm*McmL0&*)U*brB~lP)?8uAys-an)#d7D@Yv|p<=#D^=KB`! zLm}g;zmSKNCobK)buL3p2Sy0bdL|#v1s~xBAL^V2G!Gd<%Eq&?@V-EUhF+^X#rLp{ z$wdC)>!cZXcCbUrbCRFK6Yv4?L@@<%jpS|eSDk5%kP7daaSWQc_2kjNfkA*vP0#Vw zIrvVzE{y2<;|$&KrImz0?9tMPt*vvez?uQ&NOt9EWHhK;;@D#xLs4IMfOa9=z-BrBjo1B~*{*(_%N+dCKmCJbDj$CDuve3=<;~ z@B7&bR%7~>C-wVc;L4;?TR~iLJ;z_^+=>%ILry0|A$3j)D}iuZYDK{Hl!8xA)T(xU zmy7`Fkt{8djRupTg3U(1#qXfqE`Jd>(u~MjKBlSO-OR-7P5i(=5FS#b;tWUQ$OJu>ML>6lp%m}5D2STj9s?vjWg_yYJLZ->>`q)yN>c7GtPH1ps(8vDi>dvD#X3;;OVlgx`?2TEtsG0j3I%QpKPKdq&9MX^<5Z#nFNL&!3!6F;XYcRm`o%`f;mC2a1XzBGF_4{K0h#*G;my6vFf(bZ~ z=f~A54m2WPC>%^__HXCPvJmi;=Fp|XHf$bGck7M&4CX}g`UKtP-cH`04!0p5iGhWM zPs2w?=f>Q>IiF8h-rU(dTyH=3jtT?2ea-f7o)hR7#zvWPzQ}P9?hFKrmB!Qfptr=n=Iwl!0@5J<$eX{(Pj#( zizY2VAcqqHC?v~CwaOR3)p@_wEJ>1*pX%cT9*S&*KM9~altU7K^94TtDjD3eg_-h^0_+wa(TykRN77Np^moL<3TjrYsa7BcMCI*ePhE^oS7q-CR8zSE-Lkg z%Of^88J#zuX2Fkihs4A$Nert}PDl@-1m%duoPvo<4=2Qby;8gLlAV9|HIXnNJ%%$U zR8f?F+yDfzEZ1xPv12VB#y}}r?~`2H``$+-65WUWn<EiS!&4AaDtD69gt&=sjkZ zx;BlTu zZ3T$-VdCO$B102URmBYU8w_GI< zQ`L;7^!}g+t5krvP%?b|aGgPlObw_9My#^LJv&kq!nu>E$hM$>igvm?*%p z6XqS`J(xY+XQt<_88E8Y7x&ud@gzQr^^xRdp>7?44==tnu$;wcEX;`&AsRQ|q;Qr< ziyd$2aFEc4D`To9gF_fb-AubsylTbb9?Q{ZaPMzpl9!B6$cJL?#EUHkq(ds~j()We z(Uz%s&aVUj%%D~@x0FLjwMnvFhe3P=A4Yax$?fG`jdA7GMNv7SB>(ev+AcRc{UyYG|4=J~8WpVJsw*=5-gnH%RHGjs2=e8arLkFSiY zu}mb7Q9`F`qaJRjYGAf(!aQEgGvxc2G4!sS1pW0ASzZ~1t2yuA#LMZ{Rje(~KNzkh zmr+N6J%^#mnCm5xeqsq|^DH9+rtBMJ$^y4M9v3qh&`qBryP8Rjzn=h?aq$G?kJ9Gu zo$X~+qrsyZIf|AiRw#Mtl6dc$w5%#z`0#3xsF=PL>AcZ&H{dj3B2Q0G(0D?VGSk|M zq^}8dt$6I}(87}u7YRp%64`>!O~1uJ$R2?grh}f-5Prn+B^T) zanwQbswz3*3vxb?K>xF5Z^+IALA1w}_bB}SHza7}3-@khIPhA1#|&k7Tjtj)@6T)9 z@0X=)2pTH;J*mlCuQx_bw|ng)B(-^ce)4EN}B(((23L{M#?;!?(BN`Ru_mGfN%HsjPUzXi&HA}4uN!g6CNXbYr@Kn_S)IAA2bm%%$eU$H?~`* z6fE5ZI;r$ts@DQwQlmG<-{4JugF5#J@peC`@Yk|gQc0$_X*qE-Z=@wxJ}{R#koa7E ze@q!I;;kZk=x6eFAE&)GQg|OxqkhZzo*k{u0P%96 zT@5yktY$M=4REeR-()@}i^DL+f@DbX#w5Cpd4-^5(MBT3|b^sXlAUiPSmKz2Ut;pH$KS`C8P69|7o zlPEj2%LgC&=!+00`Zb3(r`o0;Ak8V~wofRyvMTNTEiFMFDOBEa;~p|39As+kME?Y` zAs^{x4ML*|x5#pARuL^37vhMu6@=<<` ziV48qFvi!CF`?Ak=)La{yD%&Vr~fi)rLS4)U7kxB+Z!jDM7C*%B=?^cGFet4cEFt4 zWHa%i`aVK9X-?q6pb?br*3kS(1exK@iK=<)alOArbg;j&YR*VTB(Dg}Rf9pe{z0-O z%JB)%8Aa^@Y8OnnQc?XKIyz&m;6hWkRKyBN5@#I)ri*cj$l%>1J;Z=rF*t=9oEHmCvZ z;dSGkkN(PKian2jh(ydfIN+B2 zP^&|9ak*x`vs#-9OBZh}MtiSnYKi!%(&;lXmeubyA)95%CyxLpo&Bk^o%Nf&)^$VF zqDHEu%V>!HW9fR;WJ-kLk<7>c;9NjJYU!1GdWMn=UY_AZVn}w}lFt!4ih>ua@uV8y zg~9LhSu|KUBRgivhl~xvml6r6u62-{Z@S^eb{9e$t;R6J&CH>AP~TXk5Wt*($Zn}6 zVj(g=>(acoc8G?Xq&MsjbfXl(PR44G@t`8MU!oXCccj=-F0;QD$XR;`T^*R&_BLCa zO7Z4bBu+U^i}(wmySK!=fLH1|gTMgL`dvE^_LsN6d(orvpgVo~(#&5Brot_+?tCs` z!B-_U7R>;A%RA$$vfU_?^F^i$+DRd_bnxALo8(t$ZnHx+r30H=BK$X&!6sdV!Cl*} zvny7%k~cwAzV<`;sfaXFX>$pRPdRE8W&`vPH{*ULTwsn4jPc+$0@q`UnN0v*Yd=*G z$UCD8A114l%27BUO?YV9GjzNfTFrxb6PPX;JihsHli;L zu_hPD@+2c48sERs!;36P?^y(R-lzS5ZHg5wPY7S)GSFwvzrN$`&s{-R?oZE^ z$68NFA2DTgkL1v&=j}|@L)e;TN)2az?jzt()#%7gLJ@fvX(U_heRqH9)eu}vT(!DT za6x`d>T0=o?!e+1ah{-?a~KeK4)rs{8#AO%-}At&T|5)1)H32ZXuSrU#Glmzwj$&I za6#QS5r}5~OkU2FDm-HFZ4J9*Q2SJ^?@h^Rm0J4o3?b;-_xx<;UCvciTVS8setyfR zFp#Ly=&=iZ1tBlKi#L1E!|(_6U6P{E_h7KLkP7l5r1Xx72L>!{Ms(wnMwz(VTc)As zYJlK4^>));!+|KgUG*IB>?T}wI?4N_&TMG>Ii{4#6GX0abDz`ST)92rl=iaz6IrSD zHaqtjh4+3w6#X^&u>))Qk27saAZS$(#+m3e6#0Yi2jbG_&vREKvz~fZvGNgqzI)M2 zBsLrxF4kjBG~*OKnk_Y>WcuOd?UY`Mz#cKa*y~x@k1<2hi7Ge%UAkZBA=*Mo@J#7S zij_vZVCK#P(lPQ>gnZKr08d4RD4y(6IPJ7Zmc7jZWLd9f`6%to)eE?qo46F?`P)!` zC&zm1x#Ha1(F{YXg%B(i`(e0+pF!~(15V6fFe#LH*6*2T`_`!Rxe{&DBiRC8U~`ZI z@_Rm5K9(}y^mZpehA#7+4BDUR=`_ygz#9^36uZE<2vnwc-J+D>1%B2~FW#FDe_&Xr+CWOvQPY}47>&-u_lF5_$x$aOj5}hnm^hKoyl%s>G@8KR z@5ciIb=zJ;kj|AwJp+1*nbd=yO^WII_eMxw{av=Z7LvV*{!G)gCx}yH$o}7Dl?@|b*AAaTurXm}vz^3!^;}_Y; zJ=~Sar0b=kxWr^l>DADzDB%&LRrY-*Y)dbDVUfJVAhDXhtLPg`A67i)?SaQa3+ld=v$B0rSQJYPMdWf$TP^bTz}Yet3(J_>Up7S@?a(+{s@4+F88S9#l$ z0FPmZSeNNuD?5(8Sq$(^$LyC|9u^LWM1ro+``0T_tP5q@%hYLq721`E=Y5hWHvss~ zO1Y-8eXDg^WmAEBU>%1#@f7F_EBP_?7?D{sG^LClo+4>)R)^;Pz0 zFb!7>R8L=$EkvFcv#a7?s(B*V$BTjX>9`VU1kXkIejS&6NPrs&&R9cy+|00^iI<^B zfFlsf=;&qx0OS7sm+)FNPrf9y_NWsG!e+D%67am z-EN+BI394?VY5QfENOSu5aY5@TbXyP&7%02@Wzpb$x`HJ@ygF&a}bFO7bYjSFjwC| zDo&!Xa;~!qUVvN5pI@rN*DXV>%-@;-G|K+d$YeV52z|SrfL1GnnbABsr z?nP`^mQpnX3mG4y?=R8k=3T8&A@?CvPm#u7iLaH5ygVKi5H5uV@F_$tZrrWz^Nwv( zp)e{@5LH37tW~<*ZHi*f4yEJDF!R}@Y>!5N!lDoDLh+M-oozqYW!7*J5K^-LK4jM4 zRA&PfSDPPraqys{{#H?lm{72z=FMa}HtnTvvKE3`AW6*;`ZPGv^S`&crCqRG zl~n3<>A((sZz#DV`8W9})MKyWUA&6cp$-@n!bs6J+>l}(Bgld{msRN2x=5OQOy;B# z{nnCyuDqKri-yZFr56o$j2PUzm|y3bMm6N4D2(&p|MkBi6?f*zOthh(I{Q-p(eaf^ zFhtW20om(NRp7B}2tpU_=nQxqxO zp;`RR){pgiieh^^G>dY3=l1J^5X>n&4rRu8u|wjUwSW#Vcc}o-w{PF=Fqa%mfFOTc z2h3Ap)Rn)IKqn5B`1Ie_J_O!{T=%3;F{Gth%gX?2qk|zws9N44k5$e43x&F+BRTYL zEw__kO<49hZ{?q|@6iq%RIhj{R`x2xkiMV1>nIwuOzf+8 zlr7>orv0#&rzrYz`5~r<((6-9(@uXU<-Q!AWBqWSrzrAs10d*;;Q}4p!2m^(rb8l% z>nvYR8JoCGOyU&DUIrC8@$NuL23pV7J4ZXZ;*x5atHXahe|yGM{%}QTj^PTE`4Xg2 zOIAX!vb`FWORKpY#cm#EHYi<`P7bPkHRn?+nWLG~oBcGq?U&pOlgyz~GEjdBje+}8 zFN6zy;9sj-UQ!n;G^|Mf20kWq1h~X`T?Q@tronOwX_0{73o3;(Zg03OuIkt53I-t7 z5jM#r=4lK*q5O#`Un8JXfr=7UTuAkUof!t(4_$kT;%mc&qZsVjkcc-Yf>`)^GmJ_5@;uj51gN`A zm=Tj|N2YI)52tS|k+}^;`ix@ql?@C<>|2AZROdo;Z>>;pC;Uae%(^d-Y) zAgJd~?Wrp-R-Bvt559lYYlBi`)_yrmO9CG#w=!t$3L-gmJD}WNr|^kzQ3{-<56a97 zt{qhIu#lua@Heag;>GLtVa$%QsM0KslwGZFcJuhDbtpXtYB-`L<WlK>PIm|F)N4cV`Zc&LGBux`qck)>k~=V{CHU2Fj>!)A3FArV`zRn;&*RXNxs1HUyeQY179fWJh{h8k&{h;(iHC1`A_t_6Rp%{@rs>-B`HKb^rM=QHhV(+J)Co77j zI2>L;UfeXZqDGK$U^uh~X=P_~v*p_D=EHz5RLf=(IACS^`X z^)9j7(5xkEQ9Q$;wnl>q;A`%{%mh%LA*1 zm_SdyvaT*8u-KMk`WrfbX6PIj=__OCAvG5`)WL=*-WRFVv{hn(!#5{#(j7+M50s!N zeZ%3Oym8pKUa@gPfKoN@i zM{ah8BGiA$3{?Pb;DPk(&z(`1nDs-bo1qAG?_ys_tt#vN?BCq7!Ey~%g*;$PjM(Ln ziT`)G%TD>iUoY7p^i`UO@(0AP-$eIpunq(NE4(=?zqgkIw@cnnDBWuj8!#Q02EW!14ra zSD+xtJi!smypoW;8^7N6abqrq%D9nZRs-`E3#k^}Yf|CHuRHp388_ylaUb^vmvZyh z;;nxn%eX+*(Ja5#2@4|zo?_9B)Fb;DH|8dEANREnbf9e1R}YGOl>a)2Brmm;dQyEd z$%9PAy`a^(n!6^sv4?IYuXF^9YE@9HV`CNarC+>;%>y2U_!niN9p~!Jd=I|2Yj<%W?$U@)GwED_hNsUq1cSWzn?;Utunfc3FC|3?M4Or z2zs%P%urlLt+NUZq#@G7tgxbJb`GLr?y3Q#9t7gaI+I_y+!X0@I6Qw4ub1UezTtni z;+b=zH&p)=>U!y8YsKUfIxKAeB8#AWQQ!Lsw;KuVOWezAXNDxgWeW_|x+}L;jS0*; zlzwPxGZam2I6OT+cd66Y54UWF;+9RvOg#%B2%bZlR)H7tcGGa`um%{!n2CN%TV5BT z@Ko2uh3wEf23Q`OMx855IdxfI7bSmAk%K%K5PGsP8%h*)5DdQbv{g(Z7?{skxtGB{sl z{sku<jKI7#kbSFy}d0{i3c&g z{+!FtC&BvW#!qfTc%2BnNqksRPh{L!6z6W5wIfoX_$8p-9h3|RYWh4#wspfZPn}Tm zbb6(j->d^KX2;=;xG`^8%D<&-0I35c{~6MD?aJ>G`DPQRYN={p$-IBjI~i}eG-ci# z;`wD`%P7gyW~E;8HTPR74_%%KT)MG}bl}pBbB-zCF;&_AlU?@457*yz*@w^<|9k4q-=5d4i!oc=3`Oq% zG2R)?k08&%#?SKlA8>!T$^oy*trur`=A~i70rmUgaLiB~j;-Ct@Ka>mj_xuoRAr+ zP+Fgj`!k|F%*g^st##UkSwDr1%*7yP8qT8r6S1^a2+qb2dS?KH7#1D{&HPI*0GPMA4oy*7{nx< zEAPG@Rw*5qLzn%)3yP_rm;61K3zHTLrS`I39=U8|b}D~!r&d41ggkQSsdAA6v4I_m z2T=Kw4$F(;IXEFKH$X?pn`M~CAvP*{nIUPw*oW%?I*iRr? z+#J@SeAE<6P_2v3mo3v2x~xb)UVIeGL9E7?zblnQD!$4au0slc|KiYVKTkU}&q4aB zRYL9t=bV4NuYTTMD6RwC5}P9cdNbUIL6F<`K&@28oMrZ9x-k7PA!aBhghqjPF_+2R z5QxzONZPxvwnyhGZb+{FV0)ZZSq5zQcK!8weuJXUjJp3`ggS;2?g?ii%ndC8wOwzSN z^0*%&$YT@{MCM>r?-_w;o&H;LqHqcf}zbJ&K*SW-ss4$EY~= z*5~YV*2!T66oo5UYv|NlL7yXi?lzN_>_7h2h)!Xa zFCJE0{~E*)LrWg*f83z!;XFO`+XS_JRHgELD2wh1T~vuqvwh-}!_-d$p-6msBm;jU zT0V4);^A zl02AvC_;S^yI2OokNj{1M3W@CPVeDux!}M`S1t?XwuVks^n;}OLbwm8{#O8qOAf*$ zx_rPUwFN!_t|v%xDvekt@RyR9t!jTBjjm&#hYN7t2=s*yLbt=ADi^e?Qhh-yS`{;Q zSL$Logt`(@c5#8NO@=C6s|;Yt8f^ZF=pprPWW!f}oZc?HhiW4YAs(ib9`w{r(urEp&vl)--QL2-236s4;QKcAdLUc=c)>pmx@1G$cUg@AIQiu5v$xLde(noZh4sK zN)lfp zf3)-MhtY@)*@cX45({;xew}}?(a1SKP5em{% z%`IHXE%qO4@Ks4yI=zpcGAiJ-+hYJJF7W{p3DgE{0)j~3fLh#Z0TK?@jeguJMt~9O z_T2Y9&)a^ml|8BOlo1Gd2_P)<6aVVPm&%Oy5lk4yEcyq3ojsmCIiG)x4$o)Py~h`$ zi|NzR<4L-j#NzgaM?y^!ZWTEAbbA;*g)Gx1=MbF9GSj%PLP6#Csxl&MlPv85Tt~WA z&X-%ri>p5KMc!3%o4`fH;3jgIiheAVM!2(2#oHBRU&)IziXFf7#Z|b=F6WC&<#6Aa z9C0kFE^8CCF@{} zSZhH=H7H0%5>EaY-G<^WD)*l|Hs$5NWtg9k6FEf9evebmpq?Yp|~upfG%AxpoL<@{Y#fiU4Sh% zY*~b{pSnRP(%6vw62%J{gLL`f-Mi!WUk(q>k1u72mP`@hK}!CNb^rvbHN1XQjiIdc zY+IMEU4SHi4gKhn4w@*c8ogB<@&6>{OSw|X-_|mO4y@H&*LBL=1g+Nsr#y+ZV3%qQ z*vE8oaq!dU%dP1ysiNsbxk;4$s`5LRW#|RuQ1r5F8Kjfo^1uJ<|6GF0S=G*v+0Dw6 zkQd=fA!H09cY?JngZH02j?@p^t`~}orq9l$UMb~&C*NML|M&m7)a>LvCESiUUir$E zzK7-XmVWSX$#^=auOEu)MsF3D!{l87X?g;DU4S}Xw8t_O!!5(I>&kVKrQAyLleL<> z`}ytJ@t3m?r>~CR!wOV?lA)kPzaWwHaK4gxnjIFU7ljZ86GNtV5C;o2sNRR~|)%#~hnN(oqZ^9_%3+$p#C572A zNL++v!=g*ej(C3ynfQ6$#g+FskzQDNPpP#iy^=fyxmJOe*<*cVHd!vf5YWjghRxSyYQ*(51{ zjIk@HVwwFEH$w3QfA}cn)&tB<@$kb_9X#!1lkca75sK0GT0O;_w_7g?Wj_o)6oC&; z;=y83CgSYN_YZw;`k~yJ8Fv=zwzfiRIzT&{Gm1<{9}ea;=bN;6z;38`j8BeF4^G}N zZ*p*S^#1t#oK!K`25Uy;YPpGraIumtA0h8GrWdfNB-! zyC@9(u<1}_x?|;zO6U$mWSyX{U1D@OaaK4j=PRBj59~0G?hBKN5cCRuJcpldNPEWb zZy*fvUF^e7Tup?mPo6$|F8+8P`!XuRLF8UE6BM~krnS(uZOd%Ref^rF_u7j}VkWd% zF0b>A{KMsOi6?A}tE?YN8VQP#mS1IV%Q8im{$PM5EMkLAQ9Ln+v0<6txwA+RZl%-Sr!H@uPV&5VE$NU(u7ZEx~fi>IA2R1p;&a60pN;B z{#D10=`ulZB^H0O{`Y_V??g!iK1LNGcbQHuv%IhlQeo4(r~{@=jSor)<=gQcax+X( zTnL9|F{tdWT2E1=h9T3)JO!mX(>t|N9aR+7%QB$d!g1EP1UC~f^MkzVj^4D>yh?<2 zJ6~o!XhXiSmrCJyhhgK~uzJ|Ds=6LC*rCNZWt|{BnpuCi*ceUu57mgIXF|neRgSUC zIQrpSAW0WOftQJeavdZune`1O% z1|w5#g0+7sp5MX+2So9aA0|+NLtb$zlHt}1lS_3+iYX8uz5E$|;vf_bIzcGuZq7DN zwq=+AHJ!B>*o?7`6PMx$CB7=-tBARZiG#Ygkdrh=GckQ?BAxUs6xBg@dA$~cRP&MP zEpo_0Z^@@aPlcYUHcN(6N8f1#kex{dp{$?k^(%j=S?M|k3bKl)xP1HmQcqqD0m&{R zF2dKeRg@t5r$5E(D_P_Vw$5L@@Wx@fP!tJ=X8Sc4PLTy}6!w7;@KR4*qLdA-cjQ4! z4iX?OfvUn}ARb~1PdsW$avZ=9|H`9VSivLsC41wy&CWDM7R~wLBNQ+RR4QV{P2P}H z{V)@EC&F(*Vkzi*`L}Lv#c4nFcBYpnWPl!jHddp4itbENY=c~h(bNuQCvoVkA4LpT zX{W+PX)*yh2!TVQu1re~0^(J>?_;v+r_j$7#W84c>6zIE7EH)Vao150h=-{R@y?FX z?6Oihu=JvBX<v6t}>kSqy{}3_(2(ha-<72+*5Fh42^NFt@qyC**#Lin%W( zl9XD4OESqRDzM(6SxOp?9EVi$NQh^DPP{vw)BkV1cmYb#S0hEY50@w-j zbP^D=JiirBaD8DxgVG5XbLEI(A=eqqAhf8tl#dkvQ4#nK6Nko-MS&rUEazrJr1=v= ze;ov{o0_FOo2=`E>X;doPB_ z>-GVI({^=k?9HOybHhVVCK%nXDK}>Cf)WUFqVwJ5&=OV8odA-rz(h+E&0fvw2JaS1 zmNFa)7@Gr}fik9cJFrzCm6oo5>ynkUDcaUg)DWs%#_Mp**w0Y=MABJgkqJOQE*@;k zT@D-`k6n55uj^H&mdkdo_%&p9&GxmQwoS7$H3!>U=J548hD6(tU3Qnvc`ThgTzdAv zXFd0_q(Q}uNw=Pi0Tmxzhk1V8d+#A(1F*~P0`bRFkpZCGawtP6CM8;brwLU2lH`({ zy~Sc!z8!rbTuVu$*Ri^ovSyfHkZZ&ku0>;z2nw(u%g~~M!-vH9vBC`pbU;xHS_h*} z+mQ(DAcQT!aS+dM{XFTlN)Rm|Tx?yr7ejV88}GTe!TRACOi?6*FIl|Q$poZ(u(LK;R zPawN#m_SODrM_Hb(J5K2HBWK)?`^#vW(I@JG&Vc{2~SkU#XOUm*7}uXb1j*?CxJ3} zAN#4o_04+{fLLY+PKsQ!DyyG-6+}8eTaNWv65FgOLh0fuW%zS{fb@1W3j5q*knUgP zEcf%|M^P@sS^iTft?Nm$u1N(WuhP92hF;q1yvAmcl`w`w8K!G841b zT$Wk=xDvTm6_Ha(488b4|CP$w2$?}+mWZPRHP|BEL6pTRtYUvz{*$5_VU|WOy1pK% z->R_Jm@oO_0kkoHsBx<7${{Zm zWy)I_KkUt7Q2(FmpxTGh%F1DH7H8$iQ-3Gx<VuK z2EoMq=IlS2p}0B2p>ns2zJA+?8!*plo;A`zAe8HU2sTr>Cw{A^zv#_@W5JjPQ^Yc> zE%Ju*Y-0p}yc%BZFj$lue+Ut_*z*m+`U_(OnnDJ`83?8+t zbW~gJ;}6otsCub+&ddyWOYZ9j#mw^LtY{s8SKM3?P?+v_&t>|x~6QMRU|qt%NkSQsc8d$R%Y^E$J0$Qp2qxIrBEy5+^(AJRUFA& zT5?Gwca|;-9i8)e?hJX&+_;V>osN^0@tJn~HjwW_PQ`?4L>O33gFT4fs+`fmGhe1| zuNyPPuG_UT^X=+KyERDDf^FYv;+?S1wr;?I!wS(g*?fh%zG}_fzK++34wT!&#I2Ek zK2(G8cuW>U6v7H86vFW#706K1Vq`jJHj2%xu9rZ9a!;DH5JI*=thn@N#2i@0yz@d?j@cV2cGZd%ipFM7!ljj3*C#q z-JcPFE&a9f-*0zqL|{wTUFA@0ou|GF2OhN=EQ^6xSlC`}Q>Z>~Yd{=&d&hMnPVB>lB=A z^3#juU{f|@i;3!SHk!^F)e?hD6aaQ`(HnZCpfbI63i5X9oHx-fUFNobGl(_2<$h~4j2R@SAY`#Nyq0?Qdg~O>Y_%?yv*Wlx6g0Lkko&D}_QiL#DrPS{ zc2z9iM(aV@)_~~(Qy{p1?CEOXGX+BFt&`M6%<=d>%Rxcgy5&H*9}WFe@RQy;NzWuL zipeA2!E#VQwvXkYpe5a;MN%-`eDUqq!0eGntO3y%Z|J$#N4D7u@BA*=x=To2c!PLO z@9hpRYO@!`bpg*a1pcie6&dbj7B%V)}o*zzr z_3pe$!ueu7(JJ46o#=|7jcR z^rg(xx1G7BO%6J1qnP9s{&E$?DT7HGi}?=5;!xlC;m!Ds_%DyGBY`w3&quT8IR7{y zv5&D)OvZ=ONUpz)OKF_O2gUdFmBFNd&|O#d03_j93bYV^|BX4!W^yP#>@uTmQVm&$ z)p;o89?k*1A@{_dV%I7~1zj{z~?W-3@YjO8OohO-@P*&T3Y-T);#n0{`sT%;{0i-~Lf@mszEnPYcoCxX4 zv#rwvmuB04S{B9LFRI{`!)#+fg~?1$>=>qUpZ!r_%j>^Dy13L|O67hPh2n!M_xI9I zAhn&!dIvv<`QO%ltkNfozY$Xbi&o49U1SUxxl9EHV)TiMxhKoCBr5%7wzK#*(76*< z!rC!A33ZN4FX6jxn+}r@O-S~}6Lvy zae}FTzBT5e!-NfBgYW2M{Si;{6;m6&yx-|EA`w;XQJI>y7F&1Oz4-TCZb;zzWrEe8W@q z5xFbIQpO#+LWioYN^cbfl`v>E!+OkeyTFEjADpL9pz7miad+J$J1*1SD*LW&T&N1B zOn*%#>_C=(X18g&O7;6`S|P87{pm9{5LcDVmb;Uy7-B0*Jx>+ZfRYU=MtcQ+ z*?9F|%5BJ%4iZEj)N6n;Ty()vkXZ;0=p*}vmpJo7F_+!~V9CoaIl2faL@Y#jyN)Xf zd-HP4*?p=dN!SBV$Ltu&eT#_`H|YXuXk@>Hne%VL2y`{jm+5ljin8W%gVjLRA(DBM zUmsiuVPlo8cp!9zd(aJb1e}YD_m(YxxhK<$3q;TMfz)rHV4k0dn+QfF7Nb5>u~}}E z4qV6$3ScI~ZFDbsj(26viYq9sbIqZ?g_=i5)x1u2H=ZP7JBvX>DU;g#*k)O=pkCUZ z(tZ@JW>h%0Yane>RU9eB5jTe7H7a65j7b5F_nark; z-e0Sl71ma9<*e10x;w{u8V8>qmA8!064xpF5GL!@O6rR_gh3^gn{}LJSCmukWj^GL4x1uO=B<{(QKXRb)-hHMOs3eVWpp7 zaw@)sO4I)cgX~y}(6E1|h77QOZA@>^#LS|}OHF3kbDlPdkK`&f^^~OIiN72lLds~M z7}>4a)_#fR+DgCY@;~%GTh$@5HHyJ+qw!bnx3LUhjmPg|e(isw4+(?j#@>Zq!-KIZ zs5@3(s|M6EWIt}B%v&2p*>3BM!nQ+&w8=8SHvv;ZEdaxi)DQ0b#D^k(Uds%i=$+$? z4fYqawP6faRA0<`5H-&?YiDg-H}+PsDrWUrdhLtbfT<@bJ3T%>hxqFcXMZ|-`^(vv z!?&lW2WLmw3;olh58+o?dS#yRzwF!n8KnQ8O&x8kI5|(w{(SJ}uAPlb-3 zi+iGq_~m|kRom|e_UTi9_&=uqSJEK9d781RCPDmn$M4VIo_#qwIe+)&;IGF=UsPKA zd>9u+xqDUDeHBM{{z6sC(}fD1#^PqlFpfoy;rz>+lk*EPg13J@e*fo_<6nwFhzZY% zqbCgV#Ph`uPC{d~WQ5R1AKtw=IXt*H{_^_d_|4I|mX>^h;B3Bs8(*Iuoo2;ibKtfWS0wVkg(rM_Qu^HU2pOmo=SI`zNubE@liJ5 zcY3@7_04!ZE+!*?`(2G;(k?K?bO6RQp;2vhJPvqxlio5N9JJ@KzuVh=O|4?l628PU zLY3uEi=oGokM%X2-^3YiD29SuBBl06*Mse)9xuI>-V6KtX{2P{8PC|4kpA@vo5|4n92+;JUkixn?dS#{#3(eqe99O#w8m zq8Z|uu%Ol$RbqIV;7y@JU35#8eEj<#z+|B{h~MQ6x$u)!;5}rqCh*8;@WPqoL1R{v zC(hKko3^MCT&b%A^{~_GFWC`S@%NcV()IFkc0Z=&^HCMHv2AyE+udpJH`KG z8vF6m^8?4RQyfqBu}cY@#!hh{nZ~YD$~cam;s&yhUd!M#etLShy4iT;$La0Dd#Ifb zYv7_ow#(+p$waD|9lJmjpft_Lg?FR21|1L0J-jxP6snS(=j-k6$hAN6f&6$52&VEu0z%#KlZa%ph zAMh#suf5wBaQC=!Big&3pF@GNsUy#!9~YUE?-@x_5Lyldb844a#zayR$F8F2tApnm zM?j!^o>8u&is!k|;c_xa_HVmsNbJ5Rqvd72ZgmT)cEK!pRO!kRdaGDt0>2}-S{u+>odj{l%JQ*&EM6V#FyKq^d7mBJaW>m!Kf=S{sgqFc%(gX0IIpFDTeoWV zGwcko+1b60eW_2mOo}tWW}Qd(JUNX*{!pjj*t$pgv&iZJ+Eay4aLzv*9?H8TQ{~S1 zeWuO`J%%s#nQKfQ+Mz`X2~!bmX_3wdeKtRF0YKF zspjQfrfCYz(_ttW1f{o%g~Nt_*QGHq)$ENj2PPbf9o58UdShU8<$l5Jx))9685U)lQC2>pO(pn< zv4=uy4LHQi|84CB$w0ZbStPWXxDEoW-BZy=_N1>{edz)hzc~)wupOxIqjzu`uQ}bL z^}G{Qu{YlVTf@*QF$o2voq$ZQ(KWjj2OP3FgyPC;NH1XOn1U>SurGelJEJ5)p@-Jp zPIeKf<|Vy7uEn`<*&h^ZlEeP!fRSrxm0~I{y@BLfmHw?y@}RV2>N5`WNI{hBM8lOb z){wR#+qmI!v^QdT@dftT(|p@lyCB+NwArPI7<7nhf8nU4Y(!5C z+ax?XL z*YT8=9M7%dDwXAYYVeB^Bp^3VNiN?}oTXJ3O1k;Fc(Y0{mZryvmHq(#)G{6ffwP#D zy!CZrmSU427VbzrpU;1O`^%SuH*Ye|HeJ5%iWV6fr{t@DFDEyFJZ|GR(cBB55Bi`e zne4Zcs{HIFx3#HbY`s!4)o=Cs#!no&B$WWBCCIUM*H>F80hU$?TtKetKuf!HF4#s6xU_dqfv%eFi_$0KLKScjhwe&mjs`twD2`wcd8Q|; zZyU_W5mXm;z;HoT^4hgW=mOsyy_r|5ldT&(hxyx7sd#^ZG{15tAi}9p;t+f zdN<<>@5Vum?yj1VsdWl+*5z2Sc0j>KHe{z>{I!TlRr$J;Qc);VScE;pid8C#K3JD! z#o7Ty@vBB+Z`JBT2V~o&p(unUdrDnQ%fb7fKAawZpIw}nGh+$uh9@%SX0gjaF7f@W zHvY!`!t1UElBsoy?$|IRmZ0)9bsBcR&t?jmAvc0G$eb=61?tL1s8Te$#D)Sb77%-+ z1KYDaVg3R_7G)ewQ$V0eND5+Z3VHP)B~c02LfK*hDMl7~qGBOS77qsb%)ryhYQui* zf|8JbcSF!}IKE6AcYMwU%e4>=3T{M+pZa$&j+EcP5VGP63noVBLF((2Co6Bxcbuk} zgw7k1FDC3G#D0EuoHYt?Z}#03G(Ba_F{mb)sPMfpAFAn@_&*m!A{7`$V#e{&$wii- za4Uv$vtVCC1gBl_4l#Z^UgY57;`r?7;Oy{!cq5v#gg&=WIz~rzUU43>rOKV&9tHgKa8Oo$8pc9n&N-c00D)m073X_}dmcx>#3O!{2MJa&htKPwM?c%(AL*&xBUJJ#dM(BB#5Naczv5=iA%ckc#q zq+-Ukj#zsaz2Y3H5HSp(F&M$#6&3Az3^cY2>7pv;KmxWyjU!wtVeo^boS{#8RZpr|8!_(J(AYOD_hw;KkoYszlnDo|NZ2%C}r<`nJr2mV@(JN29s|Pze z<*%NL$^?xQ|34wwq07c`wE`&cw#TJs(aX4W?k>ycY8IeFzd2aAvz_AlQm?Roj4mR0 zZZhNc5F5$3rCes+^$B07edUK`36YBr3>+0KbEq+XBGpx)|Dh$DOEv$v^qWC>zIRK5 zago>+woA8~44Ny8UdsIHAW^SMsyVzF35w-;mx(^}nTH&Y@OPdcCWF#~xB#L#{JA|K zn%N#EGt4gA9I0MSm*sSYcREOanj@_{+c~bLRHZZ|JT;!)^0{%DURUT=Qmt2jbOvq4 z9**WBqzh!z*WVnR-PQV=gR~pp@FeP$!I-;SMp~BxXpa2u^kHfa^zLlpsd(sOfHOyI zV-0W%z0lxpuM*1Hy`SEyawc5d4nYEiVJo@v6%aT~I$8T1>aC0tooAn}e3elN&&gKAxCtymc}DuW`sYgQOtZuA!}_^0cyRCMbfGHulHPZ+ za=GZ9I-oI=Ec>TLwmdt3zJql1gvXhTS(sxcWd3i9ltr3)hithnc7fa!c;RK`h_tAX zLf$5(N-ys)lP=0^E@A*GJ zySs6wdsL;lRVsrTIa~nOF{goD2v_?6D!GBZTNmJS*|z=S8j19j4Z|hxfn5R@{neHL zVKc(O$q+at5vL4Wsv#kQyX5Nye4@CQQy!N711#w#h_m_?Y_e>4yiQZnTnRP*O-%e>oXDX4q zFv6O1y__yd=B8q2oeI0`f@X3 zb(L8=AuL>4fMl?Ocyt>$pu0@;LKe^=>HLr#iZ`3UhpLR?{RFmwZ;G>(QMe3((uJhM zZL^!o&xzJ$UaWlMtQ_n(dQD#!okN_>O4qZRUTWi6@+~go|pw zD5kJUb~<7rWp|{unq+i$0>PIexPse3!A{J9Nd}-(uwf{?R+EJ7ia1-?tq5|fgQ#t5 zg#c4i19cAIl1y>$2LUi#qdOko$39q2SU#%NI<2q3V;9%~!Z!roBIFiyTyKkz+swK( z2}!>Iwl=`zV^)6!*8G33;%jtzIyySSka11LSK8NiYNq6NR@jL+RjMuxij`{;fqp4q z0sH8vsG_q)&OLytDizgCDY{6Su4yE_T|Gy~Z;mgHYXF_+~P7<%oa6L-q$q!LZb~?}lce z?%!)2F^5}>D?{laj+AA2aGiH_fbPGc!d>uufsUqwQ4ED)kegZJ5HK2 z0yIj};7T%eL{ioc{w)XuOVanu-Dzs>m5 zq3zqh(6Qz8AW(Crf>y%kvELcK~~HngZ0YyW>8Z zOF~3KQgu8NVr6}I;kV7WI^YvWp&P3mL6{5G(j{RQRvpK6l$Mfz6$S&p# zb8Z2QY2YWlkibry=RQTyoIx#4)bg^WT3>br_azg*xWDBP+(;MH)l^XS$3XT!X&+4^ z7RB&WXt0G+>H-mx@$VAj^;6|GIcf?Nz+le`M0NRwOt-h9%Z_vS9RC04h02Eef z`LeC5HL4%7r~LTN3)Xz>C&$ZGDsF!E@Aanm{U-aiL(EufAg(gQ^-!xij05VLvlsM$ zy5@ug-J-5JpFoc`3v*@xtj(eg-Nht~yB6Ap^J0IJ#1UAl8y-P?G4<`Pl+rh~IR!z- zp`h-t=*)vLiQx`l7Bb9+Mc&DbV@@wX-Dwy;jHz>XJAlJhqhlLA$k+WPz7?C6lVdiQ z8AXjT3Fi)PWq!;CJEnmfW0IpCxWQM2Ad@R8xnM1vKIZ%ZJzVGJga93HM>_H~(Q=;F z({g{dX*f?Ec{res^~Ay1sIb|Jbu)c7n$AWuWNAr!^>lNin7XeWm6Du3AMHIg1>s_< zzt$0E)Woj5IN|a5F!0YG#7_AJ+?m%We}U)3`?~jm5^L|}wgtCSR!_Z<`D+G>I5-$; zdY!@J(}R;Y^!dZoqIDPQ?BLWsQBzqIdJlhDnX)sP-u?XctX?SNL}6-Ry9;%3@Dp7m zGpUClQ%e#X2=+qAwk;S2f9b=;VCxoDtsoNCpt%^ubTplAcS%5Ad~sBJcLb0{lJTr} zikWEB)R(?Z=r!ccgqz0hR_eBQ7#;!GaK&C>U&83NyTafVeE<}|X-8gECvIk-5L15u z#wde<%j=+1Vc?`$j0;^3{?*zK7Bw#^YvFb?+XW*BmcD5_J!TFJzUNkiP1qhY6U>|0 zEf}dV6iq-$_`mILJ1VK$QB7MjI|V-r$SSt>)6qvwU3bQ+nNUKWj{3T__Q`NY%}VdJ zm1^zJG-tS^&~xqGJHuqP``T)>_TGP;!EuSILTkN#%_NQ1Pi_ph)wrGQ4P*2!HY_pf zN{Mc9JYK6u)h-kU!)pAe_J%QPScR-xG63O;x^P!K8BMp}3}$*n>&<~dnUcc_PsW8{ zkQ!o-RU$Lbq3t-$Bn8?y8wsmh4ARnmr&37mBf+3k+0=|7jV}CT6?hL-)=GaJZB%X3 zz3qpenF7%uUQQI1UizewA*w%DPZYJ!AO;XOMeK|kYPA)anG_9TeUyyLl8s9K6u$ZF zBm)XP>tv8NDK%s8U6T|>^N5*6L6Jh55Y^U#@7$!o0B)@m+7v8*p}%*Nq&;c4B3H%w zD}SB+q)t2{ZG$pV7Y9GdABunfejbk-jxl{ji4Bk37zecy=BI1AGYJ%Y1U3Z&XMZsV#8Nto;2e;cCUnRMbtZbJT3#$lu z&)!~0nU71l)*o2wT(DrUuREt`cw0wBx8V zZ=EA723ljE>`nJ#ax`-d3<5XCUE8}Ls(^j4!@<2aHEu7;Gn!WA*y>9%hw)qb?4N^f zwPTuD0N5R8Z56A6!B;OlbE{}(hCt10?0YcF?b1?^(T+FP=37M-T3e-mJa~KLi`xaH zm>k;Y9n%xwqtc*cGm6HJn-j)~%PAKH6}CUzq%IW{QF1 z3AQ|g8xh|i7DXqlJ*wvBTj_hYR?P$hi_pssIO0l@sX-D7(k;7ZgW+QR$~_!%)9<+Ho#r#$Af~S`Sn?nN>DE za)7d1Ey(Pv>%zi+mb#FwuR({xJ%-o7cQ54YP~c~Cg}z52UlcRR?QLQyE7^WSU>^|8 z=5!UOv28uJlzX(>)7>(c)bvjQS+`^*HJwwe$E9;to1etq9g2*Ub!Fd%_Vzm)~N*-dDgbFtBRWWcIl`NZ>G>?E?Y!oHPaVw(uJ`T-d z0jv4mv{^c*D9%pl-qg`>sb+8v>Y&KpDFup3I^hOybRaKGhwiD7>hJ|5sllg5^3;5K zw9D#`Pfh24)DZPj=ccm&vKY^ZgJ@Jgkrb`i3UovJ6vYavKb7{jTRDKN&7ufCQiX7^ zwNKGRA2t+cF^YMWsbdL~8?$3?e#^or9C1h>se^1K4Mnk4V!jHzIfp-V5E`vn4cR=3 zh0v=gTmX)g<){QD(#`HuJaxyx?mk7cZmKcF1(j}p%bacpPP-5krfenSM}^wdzTax%DPl0U0zRBws%QUuCgvOQ>@oS7q@ro&Wp)}=%6;%l*E6@ z^XYEe2~+RJWfsi5mj;{ImKa+$z9OeUQ;}|yX$(byp`Tw8v!xUyycL-#)Gi16PCsmx zDVolI(sV0Yv+gEckne26QEJfq5HzA4F}_Q z$os7+t0|Ag0S_Krq#}{}YVJ9E50vL!-4-?8d1(YoQ}<}F?lLrEB>PIVTU7Nqh8wUx z%w}q?Pfq3KC7D}OcPuYLr=F=iyd?8W>Yn9)edyFPm4TNOE=Aq9z80N&Z&%qUDLKrv zFfH(tX3}Z=40gK{S&|5Wb?M>Ke+{1MhY)U5F&oh{M%{B8WINOF=WI z2OEh1BJPRzIw}fm?_lfowz-eurclvI4v!!bGsNj3gl2P;E{M$A;wJ~;!)q9%3PGxW zH6Pg}Xy>WZ2Bm5)w6PQ|BQb>1-MCVIMy?!;8qkW0mbK#@xOFErBG!db4_IM?})zK!3A}X|5vwn0GJXyhZ_T-v>6=zQe z`nsGwJRPC=>@_{*?d#aH@`55Hkei*6C;}U2FSA5!Sm<3&;0#3-*gAn;HB8&tMKB{# z3h1jhLq-2PH0z+XR8OH^yW$+?5$g^oaYhQcZ#ap~hAsPQ_N&j#S_H3e9HHERw&h@Q zsc|(khoBQ`m5VcVwGmG5?(v#`nZwC@Dtk3E2YpjkrFt~7B`MBE!4Gg*9CH{r)tq8F zDlN>evldb0E^E{e4x)p#;mgG{HbaGM=W8_thiOvvOQn%KUo4U#&@x2tdG#Z7Kh+E! z@~y@CF5a^lI!IheMfaY~NMYa`m@AzI7Qeca?m`X=mpGf2cs>L9k22eT5-QI^D4wpY zqGVNq4wRt#4XjM-+;tRIZas|c!piN-{ zKflfL1?gk{^z|PE&|htMh}{ zyC>peHfMS^vfJ!OuIep+{|@qP0ut;3xdyB3 zC0NWc>rGzks$NoZRX3<7;$EyMo1%nkTwcwg^ik?DCK-C zN=!NO02Q3q_+&9k>KYrNtTWrZ-$D6jSbe85iUzf(W-LaqZWv2bl~_|hM)0-th!bZcy!jg62Sf912>L zs7?GUSvAWXeitNvG&2GaNSLWsb-;(!u*yJ4QnYHu<$~}o2a$rl4$V_EUM&6HRR7N* zYPS^y-XH_Hjz%jQyh#A6ucmYkFjRO`m(&p5CU&W*k5;xxd$UwNxH~1@)H~H9Q$vg2 zqCUFq9v5OJg(Gk3ljizYwgWajf+M;Ku-6zVs^fNMvAoFghYRef* zUB!o5g;!hy2kBe@48AJ#`VCoi6suiW71rY*EfxDP(&}JayR<40!a-VUC=Ev1JSNyK zZ{{v`khmQU0waGB%4{D%?!=>e)y&ihWV)*+*;AQR$u74v`_VNvXW9j7zZ8mc?Vf4H z)tGg})v!W;e><**wWc?TtKpvVVn$+YbeQ&HM&o9%9#UV-NaT(3m(D-|7aL@psJ-B7 zx_1R(-Mzf3p#SJo@#mA37biTP94r<(`_()7gE9PpkoejU_{GBtB)wjTb7f;2 zft3|nh9f2+d9?p=BRm%|87pu8)w|&vwcw>hV&85u?hy*qj4oleG5i^#pzO_OaRKs#I^70H&D9+Q9^f10Iv z)q>5?$#fhy@&t{OfeNZ^?)|KZnQ!i#fO0jREBl*6_Y{S+ru#;Aw7GYRzG>)PypzWl z-i<@Yt(cqE7Xt?N>cXe34WsM|LncuYO0}=nDf8l+^-}ywRkE6ARjs5ct^ju(lt>o| z6%|ku`D<+$qjqVNrpipY`PO7&7RLl!4PE^t=i}+m>EM-G59@Q2O4vG=&y#>0ONSWI zVpr*s>#~t=X_or5m}I)7gi`R8;%wpeerDHD>`Rsy_UkgST4kZse%En!RUHMq{V*YG zxg+I?%xnFKCZNur{5}7+67uo|mo}7u9)FE_Y6!wN4VhwQJQU{tx+P%>N~y+Vm%01K1DUtVLM*T-^Kje|Hc#X-$Z<3P})f5<=UJV!+-MG zt^CiW71v;*b8&zD_8a@5B(5x52d`FOxbBSouzhSZJJwk_kfkR!X1zO>xZ-GXuS#`Bs<^cucLU- z8wiA0Hl!eX{XcmPT@hMVayHo=q z9CmH1OnuhraVV-)wE*cFr!Jcrd;8R?OvZ;ND#)4MYDb0^<80t#iMKN-hj1rn#bdPo zB`qtSFFvK}-E0umepe-Da(_FFG}zFECfHoG0Gki$n%pYZUh&qITAPKrajZdPqr7~^ zB{ID9Og4nd4}|t9|71KK=j+#)Uce+fg}|Xtv+_Rzzb)^1>;=K8m(FkXkJu=?FE->Z z)DHDQcnfBOcDdfrVY~E4RJ({>YpWOtL%2=QT>pOvwAvEy!`YwC-u`lyiAR^KtqM0COUzR-b~)~MO5gY%Qa zjR#v{ESH}FFn?Q#2lL?5qrtx`Q@fs@U&Qq2gh%4*{NHx6-{)~q>bK+J&ZkE;1{2%c z7hk*HG(`0_VuAXP9#f%ogLOxJWUy@~kO!&8jBV4)QIS#frN$cVoQ@6Js%F4R$b1;( z#|0TyW|agTx#TcPv?pN5{s2(0l%qV6gS=h`L3z-LjDN+T%YgPr3mLMsMKXv`P4ATl zs1=19k#l4@&;{=Q;o*DuNF)aUMaK&1%e4}_m$`>@2w%Qex{Ko@g$^mi)211=)c@6( zXTtcg{>&hkd@M$?thH-fCz28%B;&<&=URxQKDNr*Exm48C$UwfheZd$Rb5pKvCL7+ z0%(?2DSvKNwKerQDJc%w?#%YWO&qOPLdPiU77a>+SvX46Per&QdfOseq1LzvhKlYX zYaFByoXLcpMM6&!clLtc@gM^4_C7nj^}-u25nE_WEP!8u=M(|=ef~t!flSHrZg(3&=&eQDTpNJxMII=xslPaErwaH$kF9I zV-SkImnj?{InQN>QQK*DEb;-K*7F*PY%X^u-$xNKNdIym}dQuH2mmwlt(WtP4ji{8q+tdOE% zGRaDP*4 z4Y+^dR8V3=z1@_F4zqUoC}anE>qgu`5d-9EY=pW{*23V(e$g%;Wobn=a^h3-a1GfK!y6CE7=C(!KX(Tw|>RPGxww&!`m>MYO6qD`lee2UQ*%DYQnX| zcsf{QUs4n@x<&RS_9^JlblczzbAPKCo(_Zw$DqtN3DT z3EC#xG&bs#)$JgTy$4W<>4PAIJ{J8!RW`9l=)Dml9E;xE2IdsN?KCK-sO^jrMeoij zU>leBPlwnW(5AJS*wCnZz;=~MKp#%qIBn+$KD$J{fC(x`WFv3T)G+GlK7VBAX(XnN z34C9HD=)e(n1ZsvDEDKbMkWxB07X4>MX`aNXOajRQ+VvnZ`oJ=AY^)ASE9=#iRQis z(Gd53ddrq@AFYBy7EM`nkO&ug$P}GfM(KDug%!vLj;aKv59*kT-vo-z8!n`4$`8c` zRB>_ff=fTC5A*Cx`ej||W`C==$b4;o;t$%37W#i%^IaxX2IZp!dU`3_R>t*&iPp4G zw#X88Y<_B&fy+|1lR#>U>aXd8!DV_AI&=t|K+UF@>3sEtPNLT&7fJ10hlxe${Y|7% zlm3Ch&uR$jCMUG1n6#nOws~{Stzy-00ah$yx=L6Pi&l#yLzjuA27fqaaXu>*XQ>3- zl}1Wkl2V2;RH{&Jr}WAT-sTPIg11f2CDRbvCh9e}+C{{pwQ)kk<3WbnDzE^SUG}np z8w%1j2V9-s-zB(82fqZ&75zZt%e)WSiHgXBMHcIhc(DCv@R5rk=NoEU^D z%aE_u=|C^rN+Vzq!X>AuF_#>kfHZ#%2@_0Bx6e0YY88udF4q<%d^}H~0tha8(MS

O2q3Fvy&uLk%0j_I# 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%0AwklqQYb`xO(r+5pO_wPjD>+B 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 Y`5LdW*k*+IRnxqN<|)?3`ev~I4>LxcI{*Lx delta 634278 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

3+!;C)e3V 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ð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

XiL4o4hBLf7 ze)m$zt$JEshBKjF6oCOrIFCPvQ!idjaz*rVbuB(zs@gN23@o6NM^ShLc{f?MOkeKp ziJ8-3EM7GKnEtB5bBBvC+q+ESFKM{<=i|TZKKBp&r%#{K38Fl$1VK^iT}5BT@*^4A zk%fu(IZV=`wB-5mUw;^gM0sm@bcyiyDGw=GO>;7d6Xih7;>Nb`c+I#?Zy-N;9fh-L z{>{TA3?6!4qS=f=DMiH+l!_12)jagd=Ck%>PJ&e`ot~wmsPqC$^Gk(l z@l6J)loy>KweDkV5F&ZDBUrsky)>TJu8`Clgu`p^wa?}$1%FHhp^G^4zQoC|GIA)t z?5^U8AS_CAf4YGF%Yw7=n`@5CA1L-?>RsM42t`|`azf?oO=%pY59tTc-=|jV-( z`L)n<7V(!I?~9Oy=~V2%Ou(`{kvXfcqM1Y_w`qg%U0qv{DgT zXwO14)w6WDN`IDd8qRKo7)$EX)lx+n*5p}Im0pzG^Kr zJ_L#QQ@ry80%n0wF2vQ@x>qD|qo?_w4V`j053CyPax$N*uUxygs4#k;z?0AVCmQ!WrOxG}@$fL?7zlb0afQ9HwEOyk3G z<%~5{9KJxwPT&^^S-240{q~dd;g?~S1{W6R1f^nw!io6K?Di~)Ct;daDRV~kXqS$b z1|fg-_gVS!zGcN9#2(gv)+)Q-M@8(@Wda?OFTZNxN7bFGJy^`1K23TUDq0_;!@LEx zAI0oIkum{1D^Q{TjA5xE{POEug)_YhlGkE6;<24J{$1Id#*c1}k$lSplT6B|I8otQ zkli3evmFZI!y*4V_ZAR{1?*d6L6$pbr5}Imho!vpYlgn{Uu!pT`RPFFOfO%CU&F~N z3yaSU>wdAj?}ItA=xG1^jsil~!HcQDoTWhmbDCOAePkf#le@zHq#oHRdgp1Oa+6~ry!so0O!@KOcua#+9|-jQf~4;kCVdpkDFc^L$q(GId&!mZ z;fx1YMle(YLxK74mg1GEK)>qMh?9TZQxT>T_@hjowMb=_kDjGoFiXNNY5tZ(Qfh!Pq9w27S@M(O#Da;6Q8 zz60%kp;IKvugcu%jX6wH%Vtzs#2Pj_%I_K0M)iwS)~3z~CkEBWCr}u1OFw@;7GM~d zh)R2442uPYTxC;YWp;$^!>r+}J#10#FXY%qJT|Xg3i>Yy$JtaDOf`PrL{0Q@~kcACSf-u!z$rVkg{E9NkwtcMKm7xKXESy2n zVN@>CLY$O=@zL299h(Vq-BzuE-R9_A2-8KXFUg07kVoD)H~pqX=(B$^xT>hRe2enW zbJvE^uBV{{jU}9A62dxuNW*5K;Yv}+?+OF>ATKAT?E`A4Ip`v;Lq9sThE}cAq*piZ z7mF-6TLzpx6uT@#$h~Gg$Q`d4Eosom%Ck7IJ+VOn&_ke@w#!p>{w7l45_ohG$f& zAPp+|q0%z@R5vUs*4N8zDfI>B)|A|o)19af(Lf62E!D4z0g1y-su9~{bb#j=p|UO* z!*U{Tn_HGYfjHYWqUAl*wkw~NzFi|)3IlVytU?d;!?I$@OhzOubknu0n@u29?51;c;6Z%G(AAAxbFql(rete<}` zhf(=z`W93IbT&3Y*^#KS9#z?YS6NZOK2_rC5DXRDzxO!`zwCht1gg^e19!cubnMOx z>HmkAtW0<>8tgsrhx_7U4HsfAaod)ke*Exy_xYy>|B>ey()X!XtR@LsvGRIfo9i&1 zhgotvJXwE;!q`SYHl=tDafEg|^@FRy$&CeE$ zfuA@IGuG%!mHX^P(-N*HL87EkAbFbI3gt*pkd}Ynlp5jgME3T5;9Y%v3I3M27#8ba zkX2h=?(G$96fdsguY3Np@<(4@ebxW8ywmplPY<~4CMptT%i{bXdXhE6n``k#Dk(gC z^Vh>)&iV9^U|uRVIYpBuf^z3)7@=|sS{Uxt_;UX4bo}AubSzlo&1E^)X?C+#3#3-C zOu~Pw+NTHm^5Z@3Ldd48d>MPrI7xov04YK3O`sD0`$91Z-!(Dke`65eyWfn_a2Gg}3$e5S@eq7I-t72Xj zFH25H{v}nG$`3B%EQ{yWPiEoOhUrf%TZL70cgX^?uyV;{ zJw0XhB%&g@rv(CWuS6ODof(>wv`n>~sIOm-rcUoae=fP~Y7N@Exp54TP-wQ>8 za`v=T(&skHC!9aeK1)kUt?AV07b<_wT>0DV#V~Fc2giy15ZSKuvMvit=^f9-_q`%W zuMhFHxPt)k4JEm3@hyLwy%_fM#7cb0cTh3s&-^*z9R4m_#$NeqN;)wOeEtTCr}Arg*zV{&~19X z#5(_B)YBT(1j~OGyMQxWAmf^Qv0CUTu&Q678x(J!Q}3|*WQG8B5$%0fV00k`4LeKi zV9M_c`sI3upCNk%`%1(c07+;5&aR|J(6K`~SDI^cynm0-&Ki|91z^<$wRr z+k51FO!MxGmD6Yo5nN0;$TfQ>%eY$PkU1BtxY z$A+9=>YBT7k_fi?< z7?O=PemfCubP{u4vW>P?H-!7kO_Uki)LWXUYohHlCc=OQL$K|OhC&xE=D-(%eG>+M z;)dni>R7WuL$D7<9Kl9gW=(?qMj6%_QjNB`x{+$Mxz$#xQASg`RHICu^ieTqeOPcm zoUt@jvT9I(HBY7~ia;M=4O=3ux8JInm3~wV0t~a@a#t3RU~E3x4kx#x@PY|7N&Uw- zdnj8RgZaHE|EMNV8|JIOA->4)j9laJIX5%9dr=>vNYOxQh)6dZQwly- z7Db5M`Tqaa*E-iuNs0Ngk_>deqKafhDvD7a1)q5qP@RnE z(1_|}L?0DrhtNTz$99sSyB9UA6Qg~ObpqATs5grny6ur0iyOKRlALZGdiv6ng%ZUH zkm0zDNh!*RjhPSC5{Z7iP@RzIqY^cbmwAK4X{m7}@fY=+c&U_*Y5DDcmwElskfSxC zn-{@Xb$&nu75N8@{lg#*WB)LCLLU`_8^d%ti!x;_dMSP~`b~T%n0b|tcc;+-qgoPyDpvIZ*Z%#x$5Z(qgDwo{bQK{5N&!0P&kBr+L70lrbaqw)rXU$f z@_kBzX|zhap%|Ku1SPe9mj-7x(z~Xo&>K`kB074ZS`m>)MKu)~s;Yz?7D(LzL^l>{ z?8#cork{CqJD|EPoiP#3x@sqH&z0)f&P71={n5*tc5U`yozSSbu&S~OCgV0lH`yViNwB<$Cb=4a9V|VTrvu$s$Bo0tM>W}DM1-J!y6iB9Mfq0Nf>vtJ z;pfoQflMdXKDuv?#`kbAIS3D~=m_Man(5F_zYllQu|57i+!3d9TjHtd9iyMkP9OO0 ziT~v3ljodWvC{$c<60>J+F?-6_P+ImM zb7t(v-sq#kD;dM0AfTDZ%aJ`)z+{K)u|y7?qums_1Cz*qX`u(5QteFSP{EfBkwZmU zGKMA978+K{;xqbr`ShZokg;-q{eScZSw6jlXIlj_UxbFaNfkHgjk$bUaZUR8v_hK0 zX6b5<$k3{2y0|X&q>u|TH~rU-4IpNims~WNh-QYVNhOXM5(|fRI+R!v;tbn$cUdya z!WhOitEYf}T-%qT;u+>8SNC-$s&J5}Ls5m}J>7{aDx`CmX2ImwE+3(|>%}xaFb6vR zs!vCnj|%l9o}wep4Nhs8pFMz%_Yv~Xfje00brP9hIFT%oe@ zG(?3pV!YV(+a;@fRKO-Ag6vlYpW?NGN@op#;_=>X+z>MHf+sw6ys@SH!f%55O{ye3uXl!f#sU1`-$=P zQNfu#jA2nx-jzFo?^r;^VfF_IsDMp(q1HYrJaZkWVX^_}?>|x$rYzgN&b2+*=S}D! zyb>JOKE4th78hW-mX~y=1|@&`xG+qOT=J2a6r1S)3Q>WXoT@_opam+ja(JCYQ*I3o z9~EWUJ3yeKGI0RGrC{3tfr{AVh+&G~IvQsv}hNCSxyb zyHV+eMOh=|9x!c@BV-?_e!UkXROBXSTYB+cj8I{hn{DAA4^j=wszL5CtLPlMD^fp| z6wzIh9DxBTYSXUx?Wm`S%~3xQng;O!{@#>$e z(EB+Gqa>iuiHpyCMC=;_=Ozj#*x!jO=7&FOEp%H67Ll9FYobYGb>0yr06^=P-*V!H##B zM8RywOM^wan+jc3p9N(o@XYm!vdXlNP-QuxIIrn*`5$LS+qCoiza9C1{tipdQRO`u zS23!lCu3NY`67P@)0a2#XP#PQTcqXI;ijK&zPPaL;;**&Ou~vpK@WY=V2He3ZlDr&xQ$Eq!4O-_=h?d4;Iy zz7*lRGFzE5A*pYOy~5Q~Smvmou*?xIEVCkdFN=Sg=Z}U(_YV0X%S+BJo9Q%echpnB z=BS^5%@HnOvwOcD@uM3^0i9LEc+Nr$QsibnU2e6AvS1cXI5U#MH>}WtR8`XfI-z1W z87=Bi!JCX>QC5j`lEkvvlrfY_mtJ;&3c+-kXsn^au3C^MXOIqj1KlU4KA|=`W{voK@$3JeyKgNRK#TfpwDaW5M>3Dt)~Y`sb#r%~ z%XC0$@NQj7>3|d}YF|p}z%oKqKdygOgs6U43<`ZGSdxW_g1Q~=yJeW9@#0OCW>WQ; ztv~r|c)1L&IsN1gkP)K!E`?WD;Us(MMT>=)_a>OeUk2B~Dovwcv6JUK$x?tjMd0;5 z#~6i*9%Woxs3=jxu>J_tR#8Es-{lptj?02r-7Zb7*r02Bc3xgPB~b5xpE7?=AT8pQ zlo_I*(@x9Lk87pn=!Yd04gN0uRX}3eRh@X$E&*{siVeNF4wf&yXQtDt6MqVPd{)yK zt;L#YEGu^E$L$9c;AqdTUGDN)>NlGd@k#Nt>DEUo7;XrHc{VxlpFP#_GmHvtmYoc?oOA*u5O zV8_C{VLqnk)@n}M#wLDO!v=6xTeod-S^d2n=1BZj5?!vcC|;ZfOF3#~4KJnlU{~qy z-y|)|AiEJGrO9M(9z=^h@eqqw$s|noWIyb^ALRj+@9Co;nGUbM&S!!Wad<*$S{A=| zwOUN%M8Qmd$n-RnWQxV54_^LveVO2P-mY$B2xA7_)9>ufOd?6%1 z6)*K@!DkY9eevmfJ&V6cOB9zJ@LuDS^J5ZCZO8$yJw7=4)Dm%eF%*dMSY)QHL|2n{?|SKS^1+c zufFPke_GyKd;X^f+!d2BTq*|ns!L9La{0p>p`v^#X*_)M*TY}V`4o}B+$+9vswPdW z0kXV%?bCyO`SBiiIV9+> zFJ;dePf37ZCqhD)7tEsTg^a!_nQ}CK`(gZl{^HH}^@p61KdFqG4JV(7k4r%v=Ic0F zOvCkQ+UE-?>AGkONbzjp&Q7`^yvA2fL9TFlS-dQ{A-R=Q87M!vjI%7BS3i;E_0}wY zVj-1qNE@Dqdv;8OBi!)QE8I_Iw*E$2m+UZ$DVJE%#RTto9xYS5lor8UUP#hxP=54( z>C^wYijp)FAFFheBSGl;vZ}Ylw%L2~wbR&p$$jqJtP5r{cd7W+Sy?sr*f555^At?^ z*@7wLE25aQ#8>XTjAsC8^G&vc$~1xylFdN*;9VOHcA?eYt*wA$HN~0;;B^`wOMVxJjmK$afuaz0Dy1#EkV6p?eH`7C}9IL#-+}H zVJtlP%Cd>VsMA0`DP$4Y-z7fjb3A(qJ!JvIa1mz1kMG~0mNIe(M>KnB9*Qz*2U=mk z$N-1u^3U$MeSdeP^2bEl)2QR)wgvqvA1Bs6|N}XI>_*`|{o`7nw<^ zJC}dwOMptMy6z;W$Ws{csb`#TA<(j9-OXypJ?~ z5s4Xp6+b8+BPoR%u#_cnH})KChkd>YaDSk4UaS5Vt_)*=X){})N7tY9^ZY~bG5>b_ z^Z0!yMhk8{1#_XW@m@`T8ol`IA^tMd+4B$Qi)A}e^0?9)z_vgi~|F~^nqhUP3DX!u(I=teDSdBsk+Akt> z8gxyXExAR(>0-vU;4uvccAao^CkUP9Y;l5W`JD7aL_R*~TB{JX0oEWu_b=)O5(NrfNTNP+ z1|{fTNL(<1c}7ZXZ%@Cuf(h1%v1REu`>}u3aiP}GJ0ZHDkRMq z!z@fQB?55 z3=2|*1t~*G%21JFtS0qjchr6nTZI?u2F1uz5sD&zPj58w;^cbxkJTa)EL<(4EKG*M zG8!JHsjMa~*BGe3j{ms|W~qLaFEnU_5jz$^uceoPP7mg_#iHj!vSN^9TlfnU0*qm* zSR=eRd7_MKc?`V;t*WK#)`GbLm#fQ}*rBD31 ztAb5`pW|riO_ERy{B9Ax3es?@cs6**;h3#e9Uhfph}qloCO6^aS1*(h6=k>HN_r!` z>_(t=Fb};;u|zrv6thefB4tl!#n0hY63o8mY^P#!54NMZn)>0$s2}sft z2PE0LCE-yiMiIIF@j~`K@Z{>ecoFW(9iMuC>RuKPVehvviL0N{38EOUYnHuMP4Zwz6Bh31_>77(qmPQ!!g%vrfGtealP2Y?UlhFB30q zG68UaRtM`hFZ%(+`C%anAmI_oC8~f~N%Q7pvK<#d8()OP`v9h!q2%k?WF97MFX0KvD#h;IbI^DpXB= zWNuv>26+sJW1<`}{K;_tio`Rq@t{I{N zoJ_{%(e9|7RD%vYGHZs~;jvH5s%DtQ=UF12x2K`_#i>z4)XqzJMds>X1S^5n$BfaI z57R*bt9;d7_;o2RWATWq(W0#K^5t?AEM&4sFncR*Zo!=Iy-yGR^;^x%QTmI;_tdHy z4`B5x-%KrHb<07u^Z*}Y<)U_f3W~}-Hom{KWZ2usv_oUS4sm!*&fE=Xz03<=KY4=n z-Ol3cXtMW4{&^ZKg6lB31Fx+j!q_G11yoktwhjz9=qz5Dq7e0*_w_+fl;d~$yF=J1#CvH0%s_-~AVTZ_y@6s;fM z{^jkvzrGc;o}M1QJ=W8ustf=bpP0L;o30{rDjgn`eJIoHV;0SZH_j{e@&F@mzWc%96K>&m=z z?E&RNH%xsh|Ll5y#{hdl(ff4M7OywPD++|c4kZPk;(ZuQ-z{dh@_iaiGRzLN^%9g{ z+(5)fA(UrHcx6!5)QkE6c=&OYHGqUX8D%c!8*bDzhP#jAastUovpA83-u|4%i^`^) z=N~gD0^yW$K&uq3k138Gphy(TY2Hc4T4K8B&|Y^a54(|nj$-Q0BdnzWgieaAtREN~ zk$ts_WZnovPOM_5wRRZ{NY(<5n?@~jV{|bo)90?N&51Y%Sy;Z_iqL?~)5bggczXKF z#mT#i@!yWdXCF@9y)CV=i||YJCkLM%Ojq;yt@zAa->#n?7+eRsw+Y&{k0k!^7$zQk zO0Aa>sPB4zQ}u1j6`_i`kWUY~(8>>mvQO6a(PdQ%`IT?OO`Y7=vGE-0XSE6e*K!LT zI$21S(oQ^eH&&&lsT+?mCMalzxZ)>oIZ&6|PPsV4Wv06b&`}L~N3nKjtC%UBHjWNM=#2jbFL!iUKrR0FYdBeD;YGCg z9L%E9eEB*~#9RC#Q!bpkjjAhD7_8HR4i%^bVALrp#YkXVG`YH&$6x*#ewhTO@ChxS z=&|e#7Su`G@ieYhhJpr{8lgrm!9&}|w8Nu+I*Vz43ONJeDjZ0eo|Fb(`A@NL<0Ofb zLa3X@V4hfW;ynxT7T_0VVN1I6kG=0+7$jSZ&TwfDRCHd8A2s?mB94fBU}$Wp+8_wA z2P6npAcQ`uvn*)P{eiC90f~JTn=aCoG9?J{&gI_Q7$}U-6woz~Ebvj2^V!A?R7!b& z#WOT4pz`9c@80V}Q}leIq*m7i{k-5yg}j{_VWq&Ie>^%8f8EI+<6V#r(TGJzI;20d zEw})Wihf`lWm_As!+BblvR!D4d2Go^ycT8-s_P!(&*=HlrP>rkvsDrb?P*QH>m;6+ zFO9Z2bEh~Z!z-n54amm5=hRBg@~f(Uh7Vt#ycu7-J3GG^zkmPk{l)8d?**ps0H#+N zzFGvA4UAFQT3W5+MfF2lMKx+ex18it>xt&%Q-cTLaB6c9^aRqYMo{QmUh{9I54o{1{i_GhBMH|%q(H>`G4XKz>mzwIaT3#!SndN#ynypCpnS(t>= zqgwIPi@7A=R{b?UA0HR#YAIcM;q=`yOak>hKphsH3j4w$+fk7;Fw&G~9_)C6wlb3^ zk15eEdhl?Vg!A}wIN0YHQD0zHP@~!cZ?bKf9e7l7V{$WW=Z`FaG34r&8W~+%BAtsT zL^ZiXxqJCsFPI{l&|1jdkM$aVg?0`QJ#}-?hbQ$7MG7m}^pjl6xFN0Y!-@Fb?Di~) z<%6k;G8c>ROZ5u9C~^zmu4Xd?hCoZ zFk^gjNnx(|fne!K{L(P{5FgHOOSuz&Wr`iE)^8rUmYQYk@bnj!l(A}m!q*Ohn7P+; zKrSQ9IR_+|q>m5hn)GlE;M5W9IWWtZyK?}iqI5}JE@SW&QYw@O?w z42yj$?>%}%c5?doro@lD+%*%Xs)SnMuJPpm#7|yD$y|OTFy_0%DP;JXi;uirZxL@o z>{2gC!rWHAC@NK7cD1>G)02U=BuX+Q53a&+dKpZ9_2#)%!Hd$oM3XEm_OBmgD)Blq zy)Zm{vnCT?e6b`m5}zhA;4zO-o38^EWXxEUZYtsh`3{O-Xi+bJ(*f;h&+;Shhcpbm z?;u0fAh$m4ct`mwru?TO@*#sNw2S%C9{q%&>pYfGeCiSb-5+azU;A>kaf37}AQW=8 z!(aoo1yLUMSQC-8|kwfl1SKt4jd$ z@zo;X>vpGp*Lp#J^H?c3SJ$DunAOk7UoYgpa!*a-BoTW&WUK)Xms3&?^z5Ei^a1JZ~&uJ ze0-rwEI2f8VYl!AuL9qWc$@HmZ#8U&2hEz%5kOiUuMdEK&=51ewE%=~{ELGK`K@r9$^*Xt?^e+PkGu@!0o4oGj1Kj6H?U#TxpML! zVmHNr)6`RLz~FLLH0@fS#?6b2&L&i?%<2n~j#~P;IY~Ld3ssw-mpce#vA|7w#^B+O z`oVQFPx(QA#W~t(hHMvM@ZoG7J_NTnw`C7#ywe$vIX87W!BQQ*U7=3>u#Ui3Gx|NS zo#Kmjme#)CIGbqDbP}h{zPr9O{yt&sUxuZoIO>6YmC~xdMgKjjK8txpuI8%#oXzv_de0{YH zO~|nH7&t>gM^%w!DIPiMFU2cKpKiaV`D3$s0i(nyDv61)cbp8%y*=+_p<26Cqb0pB zk>HAepvvp8JadJiMEO0XMAtUd`*IU5gfjSlS!^mftlNjPn;e%KF;)L41%eY~@00VL zet7p;sQ=MauLx`R8qQZjls~D3ZUvvi>hm8c_*Z4)PJU=)v0KF>28Srw?bWYB+^V9+ z00?x>RBLL_P|Z$19aZh6=h672G^lT!McAZq8iu7f>z$Op(UU@H1X6x6>fY$D5Y8Qc z0_Qs2Wd$4`&X4M^1kReFKRT#|pzuRIsJ}O6wE_bN>sFFQyitHGOu_+s37?x6f zvs|lCq&_6kwOCkb5UX9T;-Mf0oXTfFZVr%IuTZdp>9jPE((h9^aSCYQu#s1#Z3ok4 z>6%S-@LJUa)d$E^ZG!5J94g(AP%7BxzeY3J-*k8>zhkJGXpjI(J%FkM2$Q4qmbo)NbK|-CV&heV^6^ ztE{xYw}H14v8wAlKlHBpVyznhbcKijh2`xnr0qfJ4YEibfS{vfT=_G|{YWXvZA)a~ zCZZEbN+`6Z){rhVo<;(4=yxHgPdILGbRA~vPc0e?*oHiRf=9u+fegNF&a>9!giZ#;XFfIPQporTW$V9X{-IqtyNf|(+Rn}a+S%E?3+9A=8}QWDO$+8O`)$CP zgm=|L0hM`3XE_G2x}&q1&8)mfxql#9q$)VN+6$B{ z-J2WT>|0lV{57Bup=|D*LC(OyC?&7jokFW)c1A4&v-hItk#qA-Hb<{q~iJ&T*qv*w?NJ#D)&je{% zb5IREu`Sgq3hPR#biX8=z=k((6(w77wk-==7AmDqjlLP2y8QPvkebvL3S(GnY%OQg z?5n&&o5rbK4MuvZc1G)qxwYUT5>6Y_s9!g^!c6t6Vr_4g@@+)wWyz|0U!Jz1ruH3uJ-x^##JHys8s@I7A1tg|Tkg$5K^ACH3~ z{VAZRR5|jfs1!K_u_m`m)z9MB{Vb1_b4BWf72nE%wQJ>ne*06NfKEZn-314w`%_dS zd1YyOcPV2r(_s?+a}_1w+jt=hR+{<`$xhioGd(g5uu1t)9bnZCx|&bWmAim+jkqA_ zwIIjfPtwstX$(!G=Yvq#=;TluMjIV2IX%N_(n<$4BcSs47TiFG;#wLrN$o= z2g)8IAl_!KtJOl;r-$N|K2t!*+d%tHb|IrRqG`YGVm5FD#=cdovQOMNyA zCpogdyA){lS!N}6ia%I>9p%jcT|iQ`kQ7YfBpm*KxQfohOh)b*4u$T_qdXNL4UJ%c zO*zP6^F7BsUISq&@;wjwU>H3q z2?(8kL{xBA(epOWUdJm8+UgDX)@bW8Bmq^~kpB9`JbyKg^KNfBJf*Ft86MSH_fU9v zs-drH>J{Hfvt%{N;^aaa&03aTX*D>DRRo5ewHH-dux{=vN+m!f0G(JGmQ-Z|?5d3b zJXz7T3XNtpc&B=KbD~`zJn@3vA4E^W#;kpRIFUOTPG8+BW$QxVQQ=~{TFpoeJoOf4 zj-OglbDpg(a{`5GzBvj)s=~spAb+Ce!8QFF$AL|D-rSL+9aUzKE^r**O1*6Lr1r1M z@(mu`b#ayTK65x?>&1pS;-F88!BJe}7OjZ3R)c~)DJTb7NwKmS4TDs<>NNg#xlO}= z4Y;K0$Z__~No!_s^H44t`l!xYGsDAEA@mO1$8a&g`-hTn{l5-6H|G_|vFt!H28kTV zU0;12H{)NU?8a%R5UM&MUF7+pLWQ2H$>gK2kAt05&wWjG-iR1*3vza-KR87d9i)%y zu+u%z2oYW0uLh&}J=hTk{2cU2T0*0LIHHqIK$MaA()cv^^x#nb{HF&NAPHCY!&7`2 zUlQnj6<^v>ODUF8hjPU#GoCB%ca{Byq>NIws!o+)h?yqAUk*j~xhl}8lsYSWdwE6C zSj9uE5wB<>r=lY11W;LKP3Bk4i~&FBvWF_f?pGx?wcF z=%4YN9mUIA$7c;+^p7I~l3qf*dLh=CaQDon)3UUs_#MBz#X+R&+>mn>Bg zJvx^AEC%-iXmGtfJ%gob(-l|gP-f(6m(^8A2dd;9eN;|yyP5=VYzs7oYgGqQg?KiDgF_Pc|gU- znH?c8K@?PKR9^+EL8-^E3c?Q-@j?diDP{bjDggDbEEYeS|B|W&rHEGF`u6DogLXQs zHR@aMR3F9V_IC9X1Zjb**^v&Ic4({A6z!;3i0a4(2VdIwvTu*PLvI>?UInU$j>?=% zrHM&ZjlBsz%U9}5*0;`!C(CmuF*y>GT^rNCVX|BlL)H#Xt%aPsvo{8|Xuh0*JU#l=FCgADjY4N zvd6N$#^BR~4>wU-mf%Z&Z{pQV;BB1A!r}taX5n;bs^qL^8wIb7<+3Jff_1f}VM!S(OW|&%43*VjBW3;Mt)ePIxsWmo0D~l| zS$KveRrepeP{|AyQiV!uU<~V8`_iz7m4r}8)ny#d!eHUu1ZgifBb;AwucQl=T7Xfy zbmLnpUAkengjsM#0O4kwhO@95m|c~wEJy@~@g(d1;}$vy)Sro4{lxqGmj})UIufgh zF1*S6_^C#$Y2F37RPDW)ms8FLCVyNPhQJ#dK~gBd*5~mxkVrB2YmcvCe4B#BhG97s zi&@7Pj)(6)zUN`q_t}Mm;yX!WOvHq+q9yos^E5Fi*cwcc0^luR3Jz<>!PMH{)`F=V zz?vVkz>5?ie>dPoilJwK7aR$%*(1jATLUpT%pIeHEN8(aOzW664YFXwm$e;EY|5^8$5+sP<64+S6@!}o}aU^8|LR4l_n6c7&7pSfbwZ6Agxxu19l z73GA(^etr#n#Ua;g2QukGrp{8nvdgTt>SBSB5or%0RMi9TOZH{&41$%+MwaL3vDAf zexCqsx%0IuZdjKqM9uF9-r%Tz_wq(+8O<1e%kTzA_T%I&7cZ&V<>DrDZoP&0V_j(z zE=kOhL^!!Gtp(dJs%F7s8!j!Z{EQ z#|J^Nt1doP@B!F|vl6-{ECj#eMiGE(Xl0CmUWhgj&M=MSdzNsBRuB=pXzh}4Xd+VQ z1jhIv680&9Ab*Y_C9r&gn`DofWdx84CqiHZQdVG$!&HizfQoCz)Fk!KLcZW^2`7cl zN2t68#<1A8DW|&Ih~7y+mU%mEly_5+bkQR90xuN;FssU9N5mXR6gn%5QQU1rZXBSg z@>cJY;DuksuS}~|;22LqRx5#$zAJG}&pZ$i7@ZGMsecU}FG-*oDxArHZC%mmP2nuX zas+2JAbL2|`?U`$WN?~aaspFwl^{wheRaxmo>l^Y%5vz$V*NRU(;Y~7sVt(+VJU_( zq{RuGhuX%kaVO_?4a@( z7{m5iNq=?(XC6>>jbQdAxD}d)>ffiLTr0SD8Oo~0f$S>A&^u7&_}O{~oUcIFJG2cC zooFC%wnE3D%{33z0nXsGY4&}q)xWO)ZvGpbRxcy#lK-0Bqh!is>rept5uD&~Kdu!x z8DiVl3ad##4ui$5_;_+tAt3PO%jT`aBH2k!mtJU4JpmZQQrw~z z&O12O;qFV4jo_CM(*`C7h?VV7!OOgtJ<|pqe;h{cQ4(FQq(9&^Sjtf=uA7%K3UagQ zsvB#?!1_|gVD1(bEjIB+FQ59~B;_)hU(A~(lRW_@+1@{b&%s_AhSSxaz?39R)4f@I z9ZmL%-o)vi0G!iMF16^%A$z+F<*$hq$@%~vZkKW;a2jM#HsBNVZ~@e?5-F^lhA}o~QJ+Q$j>p~-#NQcd)!#iRTc zD#HvS@!@q6sKh4;qNz8KA0J_x8aK6kowMI@WOQh4oO}4V&rToB-i*Vk7v$r?3e9{l5 z4z>DesQIT=)3*3dnkB1A7AF_7S@W5!)fEb?OE2<-P-$R3ixvE>l?qlNe;PPtp+iEd z59R?xO5R6y#}gzK4VmeLar0D5@onOi>UzE7b@aa0(?d;0rB}d#QxKfVJr!`7a!-c9 zirj}^!^tWO`<8hQDmKMQx}WMF)Ehh3We>1D?0E2FpCOxYF2X%H#BlBc@(?!}JS?Q6 zt9`wm8Y(2yk1(9<;OYp&f0+%=k1(91Ks>_NMa6=Xh13IzBiwukvyLyEm+*T&zMKL9 zwd335Yy0TxPZOYSvJMv&_Zf$ag4=ZO0u@AghYQYn;2f^}WaXQh_HxqT#ECmQX)P-* zLrmd(4Yy~FPLz$Vt3B9r?oo!*L!2IEQqv0h=-W|s$sH#MM_B>#e?_udh<_&YU^ctu zo#6Yd>W&z)$?A!*aXRORVz{m&S9e)*4hx(^f+DEuq#t0eYW9hSQ%tOglzV@yN~H0( zpR*Dwe$%mu)RBWeIu%@b*hKEAfx@N|mmKOCtd1P_S(|4y_;9Ap^C5zIQ_v3UWxoZ>n}!o-dtq|G>~2EjfPq=@XXAgaf*E7A z;LYHQsMmrdS5a}UXyOIxfpTX$kCdLT zCbEi$s|dM1C^Zxu8LOh7u7c(?SqK&jNN?gVhqG$PY!|ISy93^hL#DHmz$xDO)9@>U zt-O0^>+!~Lz@8?M+i@fzlluPNX z27(UWbFqzZ;GTggZFS3=ZvI;L9K(83hV*ZvKxW}OcqJ_EF1=oE{a zYQrJUvU+n9!ts0thMi}LtQHu4U4|2J9tz7!$)~0ob~-*kKm2igasKh>Nc@$t^4_#y ze>h6du<|0itX#NJgK-qlXP~D1Y8Dz=-!wJVsUO`5juSKxU1Q!b4J${a0q#33yyeh` zg?mSFfrgbs&a6QLY<6-rVW)YxcItfF@v>yaVFw)h*GY7zUu#g3ZNFo1G@yn=Mrc}Z zI10zrIaT)IxH^Ke?@YgkWAF@u1p4htf3eXxqBzpio2m;(+2It&s)G2svIXe3fuj&Q z#ATvhA)5WLe~G{$a(3D`{7}%boX$!(<_^QkeiU3dN^iRguI|9@&{sn-kuu@_+IaTxRRS$;?Vc&B-94@oX)WdP6s{Myf^gXz6w+pd?f6H#) za}6D?(tWQqbhs+FGYuUs%I!oTK!i0^^u=iDZMQSIEH`YHpGUJGsf3gv^mKq0P9^Sk zEMO@;5~!r_dGP5$@aaJ}PyqySigNd$!8BLWrMUnr;kIenn)U+FOzDz99v!Y0-oX*G z7L$K>cqKD9vq2fewNYkHPEXz(f4;Bkpeh|{$9v4+4yg(`eRNJeafg}?KoO_i{PwjS zfN%dLX7ih%b2nXluI-s$W`=%=~gEk7}(?{pP@b)!5fN)O7 z8ltwR>ijSQ`S+{G28 zP->eN*IU};$=iIdtJ>u8$@$rv!(Yb77s}?zVi3<$=oaLmv^a`=g#M2A(Rp`_p|=3; z=xjDLxXbsZOKe9cv6X@)e+lpw@{bB`6tCb{@g+j@gsAv;0%&w5Tc4&0u_4x|++(gA zI@zs1RF-di7FX^m6r(fkm{5$)pkoY8fnrWNfsf8_Q#_w?J3zF+Fk$rI&p43jg_^SR3bU&t#PJ%0_yj*2oD$9~J37O>fe-lLqgA5WHGZGnm zbk3W_-HXm@qdlx%JG*+}ytliLfAP^dZ@BlKyWDGZ23$$l-kujOQn5p6-oUy^qBzHC zCN23>|`$5&kYtYvSmdQCf*@XJk%%u4Tu96pgbW$B-Xlk_ZHeRrd zWl&Y;^6QSmPJDF6e;#9Ks?K{aU)lKVz3r-Y=)^y!YS&+KpHIr}W8U=W96||P z3H_n0`IvWRPL;=oL4~Dl07z07>dNx=7-{?%INB#FP&UQBe<)`1S9#M3CjXrC*sbt$ z!1LwQC8r8G7mWLTgY$YPe>fKKgW3{6#*%TpO&{v#ABx|>spPK?8Izwt4T z@4ZE_`RIhW3g4yn(qj0PESJfcpNhtn;+#5`a~sn5=&U)$&{Uuld=`UWg^Bps%Wjvz z&BJ9m&*W-mf4Pi9nT5f+sPjYK2K1+YlC#xn8<1Q39Blw8D~+%L_E#l3p^bJ`wrxJJ zqR5gNbgCRG9a;`aBDnc6`?^ll8gts?l6 zNb!G9T0~MZCbn7g+#j__1(DfylRzMaH;GZ4+kdgU|9E%wtTio&o3?9lRCCvAlPJB8 z9F%?b+gyOdS2gDjnEKRM@>$D#II5L6ZCANxfBozj1hXpjte+Z#bM#R`U}|0l)tacy zD@gxL(NEe7#K5tmjZr%vcKYF|nX^z_lxkI6Ir#V@KmZ27fuO*G<<}{q>Z@J})N=&{ zA|nmBY)S(y&jlf%c7Z`8`luk_T!xD@UikZ?7bXR~k>S=h`L4q>svkFNg|sr>lr5}F ze`ELCN(dY)3T&2E>(y&^y`U2u)amRT~zKA*9z14IElmj?` z6txH(JZyC_oD^4}z{`ftX7YA7Re+peke7^haG2=t67Aq%QYUB!2Y6aPWHA_uAQowm z5a3tYSNS&I&2hZa8}xu{r^x^EK1^4$f9xI`DxQmzwY&eqt)W6UDBV!urWvSw9fKzX zbG!D?2vkcC=2^g^=WPJDKuEvL<`Kbg;jl5OmK-aChE6as?}#3ZGnN+^ycU#MqW++5 zVwK@VtDO~l*O(Pm?eJK|ofe_1pAQ37<>g=FUm2ZP{Hs=TrSgrzrw3O8urCF8o3dW@ z1b>Pem^P2OB)} zY_$rf)Kfu6IRl6Hhfl6p9PUMxf^7vD4u6->_aT<%i~L$~#c&E_b&E8B+v{a8FBaJB zVEy32YGtj>kmy)yX<%p-2~~4v^cRIMQ}RiJ$e+uxtzB92!AJQ z@*YL%d*vq3DWPj-V?fItN&=3Q6zp_uLgi;U8`6ss2WMkCQ!zF_&fh4yg15HN5%;R9 zcvx;$FDM9SQaVsUTx=6vE#z*KPBF3DGB~-?cFW+rN=p^R!FIu!mc4IRRdKQ0E-Zf2 zRTwxY6DtWXcK1iSql5OSSfn+pFjv~)u`tQY64B2~vEucq$Y=?qfTkvOp+=B4aUoA9 zsNaiS=>mGPDR^3beP8FPs^nWEryz1?eIZox9_qgurRT+u=rc03#KXy+U5@|FDkOyx z{|wZP#g~%f1}1;O8f8t91l8C9U&RhQ9oa<-tV8baXRJUTUjanb*~fwa!7Kl3Vg-19 zaC)c!wCT%0z)CVannmZgi!As$JbOQWee$=9@#*2o8+wulJyw81lq|YRrwMb{^JzN! z>D^lfQJf44I&mu9*->f*fn)0wom|vQF~3RTFJ0#jfO3CSJOdeCC|MK|jfeSyk|ek_ zW{c=2BqUC3CS=a#AQl-Im4bjZfsj{=#JfqHghQ38I#fB<#t3(R_W+Wrp?8pE09W0@sw8{+;f-fZ2}wXaKb`D_Z;RB^Kk zJE{N#V_j~9m@YRK@X+rWGa>B+QmOKN3^Qaj7A zcqKb|ZNMs4d&&({F*+)bOa5tHgJ3X(Qcw#;dJV>rq>JBSknRZI^P|wgcJ)Io;@7GO zgL+D>E*$lG&YP&`@!rubkstF8-m4#KQNLDd=+vWYfa9sx^WH=~i}$25;|A*UyIFrx zUsG#p)T8m&6i@*MK@?m^_c6c=2aOZ#1r_A#{eM;mX3-dG9C&U3UDSZ3xt=NjQ50$I- zZBZ`gED3}8<*dW#q@mF&&|Nz!cvTP|%DFu`FKnW-EqkQ`LVqs9fjzy^h)@^+8hd&4 zkP5j&t44GKYS-7N`zA=G-ks37sprn1))ufUj-8TV(ASgGd^~<*#ar7)43mFaD-PRK zxzLUZ7nui8x>&x^ivh@=#@@DY%5gOKwM}o`ml?^}^68 zFMaZi+t2xK5 z^D@fdpKmfnW^olI^P+8h-go^n&#KZVJ!*+V=TtrNb`@25#$`Aago%NEttWzg^X5S| zxe*H}$SyN`8b5`kT9=Oa0$nPgq`Dv{m}IM9reaaGq~_l>1(N%_qc$gBptGMCaaJ#Q zVL&RQ5iB0tXm-0(6bFB<@Mouynh5Tswl%$;O_U-7^6Ru+wYVcG6P}k+7$r+?%}=`L zkVg7~QaC_<)ft@Bl0GM8PrMuv29=#L=fc6Or&J7(UtoG(ed`N?8Hvg-C<(G!Y6>aE zF-Ci^D5o9Cba@XO=!(zl1r}KmT6w&B#D2M!KVlL%^_)tuS(&O zNuaBlP)Op;yAqGCp-c>&7-~IhDfRa$#aWEkx@LS=#iXIJd&wa5_pwN3QX2GSR?&E+ zf`^5s5QU3L=zU3or3@g>;_`z2&U673z~2D-;?sxpThQM}gW#iFfyshj#T^`oD@*w{ znwPPlHMkDH>0^JM^&CWFp5a2)kB-GKmp5`F7r$T*{Sx-~Noh45*YS>b8OO6QSTvH( zySp<$l!2JoMHxa>(N|Mwva?nhwV6rJD3tG`at!NtT|+q5LQxY3&AnXLmFUWXkFK^% zFC^ll5)~Q4f?#YC8v`mEb`nHoqjV~Gt~}T(uaP92h#w!E-JT_}+-13urI>y5qJ{cV zl?dfUsTWQoS$;#l+1HoJ>INHs>$x^o3>lnmy0yrQt^96_Uo3!v6CrUOJW36=K}XTI zL)IoSEDq7d1R|G=^c^iZ!AVG`6ku;Y;&N>%lb7?^>-5rcnFrNhQ1AN|GmewzM~kQgNqVMYAk_OhT!it>Hv| z$5YR&aF*9bs(dqAfHtQjoCo4ttHtCdSX_rwdLA~u#x%pucdH#9WLrhF@cI6y7{c8 zZErepRrXz#3ybZVbop>HXb0_bx*S*<6|yz}^tw3j&9$scbmYIE|5kHVrNwc*t?}ei+cvPoQLy6%{TqWDiH5HftLA|vUv;Y z&h;>je#5*5A?huyFPgGRaJp!x2C+Usm9tdbwcSh*-!m|i#T*V?R|E6^`|n=5oJE-o z!rS=qO1dS5c~#Wm)oP{+qz=`O4`f=wr%&nkredxJvgsBa@s%@pr2tUF`bOSJ` z=F#zv(aGKR%iCJ@iWzn8;ENoy3ruH+oZ zI?$Ew+R}hgE0Haz$>U*F38-BeXUr{^orHo))ziLGt;}83>`njg8mp|TXX|VE5hx%J z4&E%9!CA$tkK-_X8-M4fC;HmKE6F8!#@gCivcMY%MV5m?$ofP&*Hno^A{#+eZgZ(o zuRq1sqJ`2$dLmUF`E+=GczX6`eDUM^cOTC#d`9^D7RggdUJM$+>&7{a|M_wJ{+C0U zseV5Gz#$WkoN-R)$G7&BQlOqe>E`ID4|oR$4!&`98^AF*W`7ni`rYg2r{Fz(bPjAA zu5wn5a6NS#_zv3@mu-ZL1Iqvjr^ZU*`sq2atDF8bSO`^&Q92opgrQR*I}?eg))hzN zqhKa|bPCRO+kt=yC>T|(oE(V{uaiK9mq-vzy@C8F5o(6~NZEO$nYq2OlKAY;Kx`GF-D zDL6}i*HR!<^5O?mgF^i@6fCXSOqH=zd?(G4)g+6Pi+{yxHaiQFU>*v*OD|NIU;0*l z7%K=|D;B1HhI%qdh+KDh<}o7>DP`QqCQO7*7zuwHU&^-GLaKper4Uf@Cr2#dhz|or zUFJMs3JNaMN2fwAQ}W3mSdsi9il}d?=ip*npu9=@qpEeiErG!Me#e6!)Eo(=0OvLj zGaLniJb%n>Ca+`7xJMZd^l*BV;b;t3M;Q*vaDJ5Gs0rdxzLq<8vXJUPagLi$V%8ak zLnD6oXBZBhz@1?kgOoopZ-P|OTqo9NofRsaw?IV~RcZq$T*bBnQ05(Bt9pW{&`U=Y zI8wtEqQDUv&JhI;oZukJ+c+ygC0Q-fw{bELW`DC=7L>qI6u)~Yfx|XXC%5XG8&re6 z^+yMIwsH;<9K+%EAWTja z+kwN35KK< zl3o|aD8sgaNc!0+S~DvENk6r9`}mxMO_tVBmxRKQM@s$=mbmi9WVExVB=F$Kk$)*N zuEJ8R2m$h)7cj3veXtqVQypGh;doKU5l#mL1z!Ps*}-9t{)zo zk`39%KL@jDs&vDTi>peRmW#Bg-G6DSWA$9tL*8$z!*G-ar=Y@zIG1`_VFk^D%D%_~ zxz>mLs-0VJTKiY4=f*maOOtV{S(>{L5nEx0qe8msIlwj4O7_%PGdvxipCA4xJD9#1 ze;8M}aB=?e=tz9GYh&BD3LI@>%?pluvI>6nVz^p}T%U^m5fY9`={NzkReuc26R?)) z_HpMN&0e4z4h_MTOKlWEt{wcHvM4~S?pUKXb(X9+MVsO15ggs!6>1CG8T$rMYMnZ+ z-8?v)#8xE8g+4Ie@AgZNTz><)-P33u&4Q#_l7drqf?k6|d;#S!3b~Oeq)G{WdJuei zz^Q^jF4y7w9&WCIvj`59noTdt{JX;|87h@c}0Oi!Q(wXeqZ_oBbr;P&0te=;i6I> zw(<-*6zd4RvtXs7I$3HN+(>(?&pK2oLu`j_+D(n^guP`TlMh4=NBAJ@R%64q%yt4^ zaHnfq@IrT_=4ouGuGBiP+URSqUAd3oe%1(cQ@ezEAt*Yp3H?$=wZo?GmxJ{NFEGXx zQjl#r^;BT25Oe{u@O#~*zYgxDeINaG_+HwaUf2D!i$b-~=Ic-RUfNwIuh*C2^#&z> zE1GgP$%|4i&7#>%HhZ{~AE#b?43cQYzG`kOPT}@MeY{rt#L-BJ{%Qdy{T-Kscow&{N3}ye}TX5%> zc`7aF@#R0n!(m+xBMGxrvPjhffh5l?BEamWYy4A#%lAM#JbX-gZ>xG|et&j)-nws|QLg;8@h)Br5yzKYW8@rL?puS|UovvN$Er1`X#?xiQtjDN%0w znN}K@%H*YL1Jf6I(^3H{l|qt_t?Eer(ZaNQ@IP9Z{?Wqpj~1q_aJns$cTZcGx@oxC zYdwBW&rzohH}73L(JeNA+~gp0$ggYHOGnbVRl`k3Ek~>2g?HC=)S}@gsq-j(bPCP^ z<*r=xVWd{G|6TN9Bsbsdxep_!%bxtY+dhmGkfx7Ljb=95ZS~WTtFPTjA4YOJ)XLku z*Vb+1mZnYdZ6g)CZ5z3rDZORIAH7Gn)Pa$Mh;30S?9{sMFo5iT0nZaor$tW3sI9b3 z<>ZKzUu|YucUmMDzhpE`?X{f~xtl5T$hv6fRPD5A-4u=0O!WSoP*%&)Ui&CgL3u-v zt{a=-yw2H;45`4(XpP#dUP&%1$vd#*_M?bKhAz9Ka`ef2bb9~onvNRIs-uQ(_pJq~ zyOwKD_N`oHr>e_;VZn8w(h4cLbC20lk@0WiFEcea0rF2yPY>T7U%YWoS%a9<~(E=(-|JG&8$58J;Q;u znUb~0KipCG$Q=b-Ja^}YvhE+_${FRle+)vxynaL#C#|M>v>on+mFm@*qdV9dCUIyxqx5+*A9uQ(s))o~wSHRxlWh9D@Pb(?th^QEy;C_Mh>< zU}rmCGXi0%N+}noEPP_PgQ)(0K_Y{9wg_*;u~7}jMt``O8o77{DDIz$tUEB&I3+8 zwXM+k@vS{aDHp<>Wv2BSV8wAumxTKUFn_JPTzWEO{yGWd`SB!(rrtnB(F=7*e)J{E zZoKR!%+sbGdeRvofv5Oc@mTEHH}t41)dD<(zG;iHILcqr*JW|z0P1pcbCVFMmc!pg z5+c`Y-&YbM$2?gYzwaywk>p6~-_yf1SyOF?cawzp@0r!4^W8{Z7KO$C@YdWcU!=DcwMP#}q zGmqJ~Are%)+!6^jUv?Fg*?%LY>{2jrSY{uTcJ_gG6{)G|c4M&s*_h~XR*lo{qSbHH z%DZvMbZ&?|%)5-aDoR2mbqhi6aFnPeor-6IMomvyR~1a0QrT_}?JDflg{lQdlj<4Z zG>{m3WjG2CHEe5bKjjgYYS1K3!eONPHZl(@93zUQqh7|1F*{a4$A4E;s=ivPA03D3 zB#D+;%!%ctf-exqYXwzsd?}3pi-2x8!jv{WGngBWJ!MSI59Fq*;Esd1LHO%XQUDSv zm9@%1>A!@xU*cpc2%Cyap}V|RTPuMBMrpjM5yr3d1xJChN#T`2gM&rcL^vsd21k}+ zXqmzF!fJ&eZJy;8RSa z#q}(gvX6_hF|!JON{hlqtbj%=fR!Gd4U$(15`BoJ6{QrCd4FdgU-7+x=8Y@A_g`TW z=Pl&j)y!}rCTQ4fF{`*?Dm=^G!_|Y;`sqQF!_F$*<2E={rm@Ng1+mRV43lskf6iqy z9W+g?4~Lg>Ih-<|aGa=d^Veqa*QG#^QU^YT=kr!{Uo9#d7UNUBpo^C{h@!`p){st0_VKXhCqisDbDj^McDyWEaX13Uu6EMh>9rb^ zWZQ2V9I>h)kr5l%8=k^3qE2;pIO>z2yE{|Y;V4dnAc0=FQfzd0CqsI$Na`r;llnk8 zS-h@n0s5ihD0&oeqxAbEf}=+59syl1mO9Jntc0UVF|6$CH3A2X_N-x(^00~q-f;Fgh_f2UG*)wOyO^JYSZSCBw!F`yS&&qM$Pl_a zKnsYj23kt}y&nBnN>8P&LLgfz(EabvL4fTbsDDqLrn#gpT?SYZCEnq#^cjF`5PLhw zHftV@;^oa=ndc{`CvOhlS5-%qinHTAX3+lvM0gGT^wB{a?%<9?)dZl368n31>IpzN z2iVEuTOBYY%E!Tgmy*S~YE+B)!5$X-mR@zp}shCEiqperLp^b85&`0OM|DC92 z0DtWqoF}Shs?-yMG%A*NsbxSo|9-D{>+e$(U!FfOQYW;@!xx#Bxir0 zYRtIzPHumnY5>0zFSoyM<5`4MAT zhrf)EFO;Q}#Uq}#(d`8TWzA9SDfCCbk50>D4BdaAosUj-L*Fd&P3rPuLFc%Yf~9(C zF61BWE}D6>M~)a-KlLS^(SgO7dkW6z)PFoC zIHObU7(-LQnUi+lqf_D3jy>{JRB?&B-b}jgzubtwdn#+ui&AeU8z(1Tb`vZ-sVsZ( zRs9#}{!kyCFIP}`xyrm$mUL4z8N(@Z zcOO#YqtoMX&rf&B+UR7tlCZr!FMnL5VuwOCg_bp>RRIR%D=DwRa79XAE z#~7Nb3*XmgI6mWVyP6(4S&*se^_LCklhOg17e6{%uXXXO0%p9+oRr8Xzkl*xNC2{> znfNnErhQomN%??Hw4x=#v`chx#2uX}$QYVxi4Y1!Dy<s{48*zrs-#)z7;IC@(d43 zv21|Kuz)&{%Pf5Yodn1jnt!TLmxnaI{6{F%csGX>otKB_e&b^v-+K#`^U=w86~0TA zrp53pS%Z@?KNXxS6+d+>=XO!@(HVP;p{Z~w_$&s$3KQ|Mm)$Obi-^l|o@Lg|av3}` z3xjnP=7+ou=uasnC&|?|Ah!rQ+5l2A9AN{T+?ME6I@)d7HVwh5BY#V5&`ElXp&9tN z5u1wl%9ZT&fR_v^YyuEmq#=2_D#lC!qM$S5v5ijLV+>7E7@3c4QnFn2v7N<5c@A%Ck~so)EGQmao+u`9p6_dY%Nm*QDY=BEeZqx=ZTZ)x~g{w#w~ zZuZ^xn!_Wh{PyVqXJdKlaNY=EP;T!Ia7u!=#)9;rG!qLV+@VOY|Dlso0w!( z4mqDd>afh_BGPo6Eh6A`C=) z$ArCl_liy!i2v>g%e|JW5fzI(@D^}Q-q}y@-ZJTfJvrxl1+ zN}l5Ox~)Kza;oibq2mffD(2Fn>$l)d10y4&(~4B79`BBxwdcj$8}!vsa6Yu^u#(d- zYGWWAF^!=C+g;^A-XDHji-)72DXk+KP*!=m6@M?G0)O3I1rTI7N}Ar`!V03`Kx$2k zP6u69d_Y(!+B-1ysj*yT~!*EUcF;dyQ^>nvaPJZA;yM& z;`gGR3ZOB-5y&+502__5{&sr0^}}O~xlJc`nMxMSX0M}gHcii$;Y3YH@1){C7eXOa z<~C)V@^0)pyVxvg07Buo;0{7D%DW~NyyFfSw13JVS}cuI7O1i`wF!U+z49ZBNEoXO za5&u9_LRbL!aC!i#$n#5I9C;sG9_qyd{W~Evg$2xGr{4<)_kCXx%@hHR$2}~WjK*W=djO7qMze|6D6h_24ljDr-dnBmNZROM;mLe)(toyMIqB|X_QQ#jINk1vUnWj>@17^KzG#V# zH7$#JL^+9PuKw?b07(fXZ;(|5Kz4THYq!UdZLkOwZWOBOu382Bd$J7C%SbHz>dQxM zCL|LDtoh0&DV*&2{_@bertC?=Y22KJ!x|K5O>yG)X0BTR5nZoZICtDtMR9)jeSf}c z;Z$$ud4T7_U0$_tF7{V&)xx>i4p*)E@#*D4g_E|Ol?dYfeZNrQJns8MP+tiQhHigznVq!DTUH0iIYHwnqDbK0eWtoZC z9HMS0gc|_ug6F68AHZSU5yg4qiGOhTE{z)8qQrF`aBGsgG-_~blCQw1!L3Q07YIW5 zeK#0zQz5Df-z&Q@M~kV<<(lr=?($GEwO>%v<4 ziO`Slz`cUuOh_Ec)mK=n!O}V;R5pXPYp~s2Dt1~~T8P|nk^rB!Uz1w# z6wZDST(>kGxz7fvrM-yrOklR(U7Dnph9X~qO={^^^0g#2SX!aDtJqg*R9hOJ+&`<@ z(#FJ#S#4=3;;s^23~M{R67$vWrjf6u$HyIZ^0jmY*^Eu&-nG}#dE{Q%GEi)Z0e_F$ z_F6if5W%2hSc!%0&jf)Yxqn*A8!Q)w|Wzow;`2-Ex;-^{0aSFION+Eo!_cbQ3T6QIyt8V#rZ$d?r~mjei#(lSQ<=if55BNu%_#{s-3EcZY;*5PlS0+$^K)I-X9O!niqzNHoAg zgq|9M@I}MY0f(3m=;cP`&qXRC2X4wmDk2GXU-tZ!L>Dmtm7{f*<*SvceX?wcneXXr zIhjtCbM-=foO#$ql8~U$2)Q9+!%tbv?1)e!AI?4RxI4p9@cA(<*zJLHR= zgZ->M^g@z2-{oW$Pix54Xd-@hkf6`G(V=pVd)^k0HY%AN;~A?$8Kwq6UvAX7e! z+}gVVt$*QFBAq}2$IHIGcJC;i-{Mxc)+!6s6+#U&MEpWi&C9kTzpKJl`85Al%(6da zmsrtqWv|b^Nad-Vk%ld3={OFjx5FstP+51v2^^LR&*olCFaDY2R=20UNOddFX1wvS zXs$8$&v~v%ZTXD3R#r%Bk}p;BPQkM|m}|5NwSP^swva?~>!Dme8kSmPsGQq;;LBu@ ze;h4u=ipqCPBYa2q)xNS`=2I?Y*j$;L)oMUY4@>5BEi8)FC2BgCS87y@114#BXbmYEcCb-Bn6^uj5%dQ!SRX`%|TS zeR%M1{U*g>_k11^s zrOudv`t$rvE+^CEeSQhaM^>ZmjMA~TZ1QQz9{lzHG~Ann>6youuMY10s-U!-p(}jzBsAp@Gd8)VT8u2M^@fRoBaK; z1TeE6+;d=5PT18w3<(6_gfcp&dhLN1OsxkB4H%UZUv-H(g4-QAr@P^0Z_X+$+6V;j zkiY^)WulvpSR;^v?`p!6`@LvpgP33B`b({uwHzM8spThu;Hh0lSp+j2#E!y$WsoQ{ zteIq<=GU=!kv;vYC>y(feOn&Q>?0SKAo7?pygDEP(2Q}RBZ1zorct7}xLlE|;*#qO zwG?-*dO3R1TwIZ;uVP|DDFu3B=|?Ho6ltD{Urq6lmI6inng8@$#gSVp2}FKT2!UTgUa~tXp0LKZCq)5WvPIn zgG4`ZX&`SoD&*omo>NqC;U8b-9xY3xdmxdHON>}Tf`v`Sp3Dnno{KXn*foyKFMA?| z61I?WkS-3?{?-@yG9N_SWpa^SxP9Fs7seKpSz8ElnIXX6-ds&)@nW)nj9r8-&V49! zaYzxR1~FfkOvP@Y%aaF4ElR(^m5E5%ot7*dAT}i>$1b5eLC}V>xbhG)bLRW*%o#&f zRVIp&NK+=xJbflilzB6mjg64!{mqT}0XpiP3A

yUdM&K=3U$hMyZFP6TN2sg3;Y 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

=+;eR&JT`(Azq>Z#oFv4D%xMScOCPcd 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 tgH-0 z>UZ|rSZ+(kthqtKF1rSNYUFb>Pn%Fn;!*`*I~~2ofbJABvqAulT{m#V~P z7nNF{4xR!g(sL0ikw$mZY~orNF{|h7b!)bUfua9x=*aWZ?>jTV^C$aBnOGq(38BFf ziGo9ix27XSRaKW9w}dhcrUA$zUTzy*MuInuu%JBLnU^e!CruS@D}6nJWsM;-l$s+e zW-2?gq)qZ*E#Y6e4L#uH@L&^%oo2fs)UMH<_ow9$QL;bR&8o1O_gKQB2T^9)S(GRo z4Ox;CMD1A0!5{i9I&+sp65_$57zICW&WajDZ>)5xUeUt9$Hngd~gj#MN0JZ(8g#V53E2J z{(G>qA$9Rohu0y<2nko0;@4+yG1fN~Fot#XD|04OQgQ=8EESxD#Q_sNR^+KNhmnHNB#zW08QC$w6W6Ur z3PNH?y{+5{vbjGv$^ZInwWHT<+Y_#!^XvJB#C#E@7;pNmnwf*JGXHT087q$(jVpJ`p1?Z73#&J!y*LvFLEVp!+ZYeM&zy?f1x_LjS{$8uJ5ZZYj&$-K^HKTEiVqANLV7M>YD+3G2n10=-J@7 zJVy!rOG4n%x-6+bF&xs+eNFS_ad$VH0)Ufn^pK+Yx?=DnKTk_zL~y_1HMsX3p^b53$&QH@joL)8@w8!$er{`hH!ygazf-aS zXVw%8DKoT+;AY(ymA{7ItL{K7k5kR;GM$&WNRd%Xm+1M)YUw!Y%}P&UQNN1@mtA_e zS&XCucqSP>*lD!+-Xhrrsr$1SkhmV5I=);ViB9NC@rtlr6Q}SL2&-mIrgCno!OQOG zzBHs7M9z^*_4bny-GN>@5*3cI)dtogp5;vQv|n1V0A{?g9wpk}oS_uUMJVrWyG)@v z$XVe}0E`9I${%SfBZ8zehd-o^4Szhh4e2~ zoLpT|HKZJlU}|8O5+AJv9sou7g*YLUVU)BHw|Zfq)@!WNcIhveu=Sue46=YTnGlWq z&5%m#HU(Zz5qb<<9#(EyyL5qW!pHVtYtBoLDN0KVY){J5w@?dK_knJUm-A?}R5Uok%-}(sh{3C*zJYclN=In~1rzCbg&#bV?;dIEpEf z6jxXE+pl=inShlU*f+`G(4f@wsV4qtE6B<_PMSu zC3hbuc7}Z3P_^mEN*?vi#{2F#903YZg^K&L##17e9`GG1)EN(*3=8A82WPQuQE(L= zxZ7y?fpmBX-V~TGxes zfKem);d>tY-wu$IWA$E~Q;RO^d|Rf0Q+oPuou6Y*H8q<7PSDl2cU9hA{m;0Z9vM3Z zN%4qhw{^}PkpL~j2D6E<^-E4Mx}Aig8<3Ze7U-MV<1GZUi-A{RNf$y)+&Af(7NO+% z$r54B!9n5N&Oo-~HJ81{Z&t#BfciNJVIdqzkLiJZLt47K-mayQeeVLBOze7W6hK3cOCUJz4cv2Q;daHlI9%C zL%3p+##e`=85}y0A0-o;4s`O;$OxmAWzx^JjVo&BI&o_H^OpK=(7)*KL#G{=|c6Ms#8L z*Y5zD#CzdagFvrlUHz-a>38#&B#@lbm#ec4(zVBxstItVTq6aO*`WUY|6a;7(1LY zy{^={dSzKg8a|AJG$KDUYkh9?;vcwM#JYNPetTu@<<$71En`G{n#!u}y5ko%&}GHa z;ry#D;!$IL3i1`AIX54HrnjYqrXw?bKqx16bAeq1{Yd`25eX5R#r`13Tz z70(TG2k=b7^bF*~4c!l){im~JrAe7~ygGYBg=9jrrED1hs< z9t50^unlx01I;)dw5uj8*8_3jpz^2fWZRXNChw{Gl27i+_YOa7=_w6xH<&t!u z^{XDj5Y{2>2iwP^^?*sRP`MGnwG}KiE0~Qcq^re5R$x>DOw(l02u@$gbNywe;{Ova0FpsKfBZ=qNNa z@f7P>y6ERY*@6h`^)Gd5N!dmzu(QU}P8D=3!h_4fbUaQbNZK-Yxrzb25O~^y@z8kI zyoW<3E6^EBJLQC^SHO2Y~ROn0sxlbJc7-wvzP^UoeDK-w?@ zOC?_7;DxH(^ME)n?uCU+p?$x@6!X3+Y$&Iix6=J(pU*o89E+SKU$;v5x zRMG=ECc{*Exa7W8oSbbrOY7v0L}ri-`U=0~>NZX=oyazLBBf9AqgnVKP< zyr-?@olzG8S3#@2eH@;(!cUNF4?#egm6gz<8`kJe3Ca=-=YTLT{s|lT?l=E>Z=JdE za0;gYmGvh>5CJeUoV((@&xaG+j<0Bw2od70hbOC7`6Z5hjyA5qscf+0I4F_saVG&S zkxqnjq{QC0tV%z6mD-p@9hf5g?P7#CYvy5O$51gVkq!+i@^(_FE0W_mkd76#)2A%n z{1$h`4B?gNX_y_YqqeJ7?&w+>wM6K z3sopKBRBxVS4q3mo1DVXShHuBz!?S!!2%JD$Q^~AU#d3e#ir}#Z7FNhyU+pmx%bc6 zesZE^*U+uOX3wALc%?0jIsLo@(ioo<+=UqOw4Rgvmn)V|=%BOXq%l_Ys}as;4Y&5` zpdD8yx788yfJF)r_&r<}b!G4>j56H78YqrqPyO}Q4IUincwLqO_HiHNW8++L{XNKD-QRrfGFn6_qlxD+Kon9ld5IF44j zcd8U!&Ne=9vVN(So8|s6cG|pkp&ebUmVJeQ%T%&zI1o#aR;GLD@vn=~Agk{C0^s2G$d9V!tuCvG79brd4yuXt$`i#1?$PH}cC8iYL zwDB(ouxD0JwxK80Vw%~_5#g!Y-B}UOlW*F3j%vZHtK!G82nZVk;Sa80S>7}VO%Z<) zdZzJ~7n}rAK~um<9#=^nAl4ysV*#gpe$bY~(}uE8+14Q@I&N|f!nu=xOMaBaV6JO5b<@g;I3|eki$^Zx(B~?gi+ihwkwbuu)E17bYkL@<<(Px73!70f$lz9x)G!;E!rYC5Hg{;k3)~@?&XAOd`uz2at zI>}1(Qn-Y}52u@Z)`|1Qow%d$zg6Q13eICMq`q)tT`X1vF`UG{di;?pOnd2G;2PO1 zfQK~w8ZUO?*ckW5YQbMEcn|m~m|jJ2LU^AAn3kTA{hATynHPWWnM9rPjQ^C290}XN zV&YDE`TOS}RWEr*gOXfClO~d<|9e{uVcQ-X8u+)XIGULQ94N;9im*wq_TM0=uc18e zhV|o?)7efOF2YsDEtv$cot3u>i3f#6xFx7R$14_N`z0BaGQCMAL*@ZQL`Pe|u%niD z+IuJe+Q4$9;0@17$&#*s;=J!lF>xNxtW$SR9%7YWp8o3C@51vQl*NJRFoBlh--TrR zg|==Ydc`=l+)0pOP&cmZu&E#jA7ReL@3-98__p_$EQB`FQSW3kQ`Y25UTZ}=moUSVK~nn2)^>H_ zJ=9)tn85Mwf$tqyYHH{BmZkS&^AqNqL+P-`)kd0X1?Djgr$84_Av}a`7;QByC?W5C zTEhUi4+js`hY5``Vd^Wzf5a?QDSrVQ18wglBQmGDkQ^WpAEm_gu@FGSRHoE|cZ^Tb z!}vz@&MxEK+4>d*Oqa(H@O|JCghv2bi{}CB)FtY zx*$1TgnfAQ_u_wZf|&NC4W$2Y2dBq)9$SJjwM z|CUL{vxC?fmD${>$uk!IGmIa%@WHVKgGKeD6z(y>??wV1)*c?3?V%2Jj{0eqb6Kl3 z0e3Rk^{QWV-B2LUa$mkmGaV8R3CAlhGc@CMP{s%V&|}<}cX6X_!FZvDdt{V9Pcld{ zt_yBx*M=_ZLRtt;Krys5RQ!w2Hfz105kmT7K}*%H9F(Y&;pUx~5zUb^7%eJVHk)^n z#qoE)DIp7PoNIXQ+t^~!27yr4nD=3S;4hZi?6(7&VL77%{AY9Xo?)uDp>!MG92%6+ zy0AfjF?WYz;vbqx5-)G8Oj+KX18~UvLD#FAJ8Tr2Oxv2!U|h552i<5tCImBR;+(53|mWse_!#qzYKJJI$4ZE_+#5OAngY}u`&T?ZI-9OR!ltk~BK z{mYzlkk6e0>bm84>I49281W=m!9msGlaIV0l%A&2M16?G?NFCoqv{ifpwBxaj(v}ng>zTFhw#o zgG=WYXpZg8xyJ8Csyl`CdHbB6dDhVaGU4@eq!WK9i@eCB(q~xbK;BbfA_z}%yhaO> zbH(ZKyX%_a`_?gKM1TG%fV^+^{>=Iv^>4l*xn+DVsH-mG9{n$}@N9j;ocwCUW2nH3 z0B8-tj4G}7g!7)b>2gc1IsOX zq`ygCtUB;yb4^5)S411jG=1JOIDOxDBX17h)%KLJ3GF{2n9ZBQl)-js;u4((fSJ9| z?9aZx$C)>-Bm{W5vTy@0wKmPMI&l=c?!-vC6E)b6frhX2F=|te-h6}&p=3euihXC* z6wueBAWFnnrPbg-x{Y`*=!Yagi+q0qfT6E^eT>724wHMohREZ$xXd4Hx?{Dk%lY;-LvtY?fO^+XhrxN3Q;F9_ae)aQbsMaHQjNHAGT?zOnMDWa7&y z{g7o&+-EF3^)q@5Ys~g_@V6eF>1ghc8Z+CYFRp!AXvKVV{7uY6-A%xgJN$iLgAIrK zgI`UBhK`E|EeDzGo%Am{+4z#lO_AMHQg3xtlWwW~@)2e(1yRB1R@9vDgv@5ejYnEb zyeYJk4ou{$kbqK=!`~W!$s4Z=u~F)eAyMP84nA`u9-|OZ_J~6~o9>yKm?qv89JL7n z8SflRLh5~R5mzj&cQMZVZ3ch!%9CzDpqHZXn=C9r>^zLl}zNBuz_i zxC0qmllzoissnr?HT9hFL|8nV4$|e}Z!Lb~5Nqrobfov@7QVs*bPd*Vrwr=BZ{5RX zx+avSQHfjg9=6@R6GZ1o`!mK<=JfJzpT!LMr#)-(9ZFezuc+I*jqOG;MH0qu5lSucjA@ z8vDn|QWqg%{fduOrwvqCd`17@5?->FV&&j$h#ft7tL4t7s4VXrD`5}eENqN9&*O3@c0u^Qig1Qc?7u0-#mr90! zA%B8716HZl+vZ%Hx#&SA6B9b;;4fS33IbMEQh)M9qYJ;V$G#1`FnxdeT0fJr4nZP6 zl+HX~J)>n8;t%u=Z8>X3h6_Flb4M(!Gm)krUdt{9Vl%Jux+ei1!w#`7lif~s9DB1E z;G2xuPq#cQ91w{FU7`1{mY`S{%CwiM(?=?_D-qB8BvEbv@ST-%O=bI5>$J+I0{6fw z4t3%w&=;2SW9l&?tpYW-@&GJF+vYQ&!tA6~LI?xC3;22Y&*>M%WEX?!6PGcEfD}5$ zeC8)Scz|e=>{sG^LClo+4>)R))m8RrFb!7>R8L=$EkvHPtKwg3cp})xi-GpZxDsgu z&qert6_$Ap{>)DwwziknhkzmpOP;IQ ztuNYX%$EU(fEIterTCOI5y+{^cDyp(*3UW|4>;|xS)pi_w7Y7EaoMPy%sbX*QG85z z<4D6~De|*;O?pavg`#n0+Ca9BEjoaGo^es3@~(fbUC`?4t8O42>|nT*)xOMc zVX=k(^7H?!DVziN*`*>#ECX-GZ>7z>hz-k9s%Bsz<74#wCHk!2)e04IA42sMY5bM= zTDi!}<52epH0g8X!Iv6 z`p`BMKiPj;_j6rl4Hp3+CHwC~X8lcdHc)Z3`GFS)4?5~^870bvCB)el&kI!p_d&U1 zdH;W}Lgng{c}_0hT#4)A4!(!kQKwT$rB0U)?9lgyk~@-rlaE3@_A1`Rt7sMKfI%UQ z6s_il6!REC7Q~sXLbuXI(&S?@Cza^8mi%+&-E>(rT#hNdXs~0%;NHgkI@dI+AsGtL0>o}8c_ec)Tw|ZmU1JjzDcqr1{LR*n^?HJ0dpk6X za(n0Y>w^%?DLf8k#(1$q;+vI#4lsAA0MIvY-fl6MAB%t>e`^QKQ(@GVzmh;F4wd-y zUspZ^-i2KEq)#!VrCQ0$0BWOyAxEfM-aL<0&HD?5x}_sI^lmM;lVD9)_Brq5pR(`K z4LGP?@>HzuH_^dR#C3=KPIy047k>nbqwXMmKY7c+pht!abZ`d)6h)d2i72kKd^u%o;w~|X6C`^X zROH0F10@+~J!|hA?dXb2s%5SY|MC3I8B_Vg6`?tXD@^7~kVY+83BAhpYE>?+=5iFf zd6?OtbWu7vsPfgEPpxE*W=e1N)9kiia4$?Uhf2vnej{c!Epxt|RQQq(xdtZP$kX;_F-Rw0 zT$=C)VMw#szXB%?U|uMmh4)dM-aZt}zfdM0nDH2_a9I|7eGsyV;0?hV_M$HRK$V%R z+*pYVfa@5_n4@z1PYwDGipuOT7J5~&?_n_2e;w*DoPI#a%yMlU&V`YmEF;}Y3#N4r zZASoIOWwE2#K`U-3&u*QGd_nDH(-N>XjGkHOxl-cxt=0G-DSdznAA8jeT%$5eQk-% zZ7I@c6r&&aoS9_XIJ%Z+2%I+19QE6y?VVvCuo3YZC6lHv88!n!J$GtPU3szM-0Z*i zf2Cd64WE<-y)(Kj?&FM1HR-lg?L=qIDK6?MjKgpMIXKD3;=Icma8F)69w*LB@gM z&>o~|?XDmG;RHoM9BOwdSTaG`T1bUb2Cd(O5R3^rWhk4JIUUuz#BM{gmaIkb42Rkp z4JLpuX|#mYu!&5gorMoPEL{wEe<(VlvYA5<>{>MM&HMjob6ljajG>3rT;Na#8=`n$q*BvXi3JW{pU6pf7=1rbf}->dhky2h6)Wt8~J z0=A!R=4{i-WzCY7d2;?|UZ7@w=ZE(vY#ysj^~x=9Uc>E2t{u0b^psE{9C~zsqfQ%IE%S!3LqP z(nOR$Ab$Nix@Ut`82De{%~|=qy&Sk*@_s6(pg4KIGCd^^>{oUGp#RT*{O^DMeYuPqbJ4huyT+xg|605?e`FaKs5+YE*E(Tg z#K2Q5x{-QhKjX&Sgzn?M_JIzRjr!_Ak&p6U2a)8ZmQqiuPbPVgskj%kI(HN0NmCX3 zJ%vy~8H(sIZWNtRjr&r`N*ebqgbXiZX)Dg%4%sk&WeY#_7yjS4bX&|MzZjfy5dXk~ zM0zH46ypLW&6~|ce|zGd=)T@4<{^yxG8>8 z>z!{1p)>p9{-=JqjJp^6%M`_C9RB?j;%k-BT}&9C|7JHT*hkQdePoK_GHRVwXdo?- z9%h9VMYD4d9dlO=AoU;+Pga@y%H^g=m&4)tgLu6xhVl)!e-_W26TPAOr%=~RA6qFV zpU`1p`xjXR<%{~>Pq^JkXkX%9UOQ7H5iVO`sMcM%tr|>V)}i!6Q=6h_YQy2_`MFD- zzJ9o6QxvysGG^*o2tn{1(zFV^khhzLQ-?LcAjVYmTiWuv2!*G*E-qw;-Z8+kXBu^` zEalW?eO;6|e?<=RU_j_`Z8nrB>c}f096Ii&{3D7R1-E5(t|4JiLnx`eqkfDfD7w#Z zc>Gm-o51_WcS-S6^Zp9Pr&EjaO zdwLBNpGiDN_*Yed@6HQ+hgi00KZO&gC{_v_XBd*We=H1`E%fO)7TV4Ns@F9|q*|e> z9}deD#bHsZeZJX%M!SIE!&IgCnK~?0KYW%cj?c0YrN19~$rME|0j2*e3P-Q;q2JZ-& z_yqn!e`a-Y*^(Iam=?mq=Ft&bkkK=DgJyE`Zu5Y+T}kZkLQXP!Et#CGyQCPSrxyzLI&Pf44H;a%sxE8N~C;#uibMr_D;e6l-DdAYU;OW>H+ys5v@XVMaZ?n%1H^c1G(Uno2eqH&^*`Wn zf0YAXlUpy&^2|%ah6C#N!{L~sI2@aDAW^;?hSHDO2SpL7MLwOB{Y`+$0u)!`n$RJf zE>Ez2xF1tgow{-bc}3?c4G#!-Vpz(Iy-~Ox|bGxC=m|@;vIVHM=3&) z8^jalB=n(Z0}JF>9Qx@;GeR*B;B_yCa3tnEh!pXi{UWq|2=G)HBctVmBEf?t159PQ ze1DXKK>fTlQLKY}oGbAN8O;KJ_N6-3V+|4e@W#_6MIla3R|-wIe5WL`f)1!s52T=Y3}TYbm3LnctCWt*q04^Y1;td*Oa6|_ zg-MHrQhQl1k6gAfJC(UptDj*)9y#<>xqrxk*uW0O1E~B-hvh}_92}a(z*RmeBZXGE zo^|ygZpPwpWH0UPd|-1l*`>pPoQ@?e>cZU*a6K5B|3sMba2%a&;hT~?$Y zFFuOpAXek^-<3)t6<_5I*CBl?T5HAMG-gj;=GaE zCO?!ZwWO_6E>L0Vk60Q%#|vwSO(>2U{Ii zd=JGNSzGaQmH%Dl;g9(pB{~e5Qkk&}^CKB-^ z3sf-j`e0$4+j;P3ZqvKs5Pyyy#ZFtZm-p!&DvrJLIs24#au@+c;Y!vTI`x*&=SZKs zdeV~pXTO28OE0|@t<9rZvICKRKdk&YA1~&jQ<&w8hb7m)1~J6Yl1KX=YIHrEr-y!< zptg^yRK5>o(LJGyD$!}SPn>d?`e`5(iI0zDK%|_fk96BQP7hp)D}VpYyW3}b4-F4z{KLsnvgUN>?)EBXfWgz^>4@W>WNuulY z9^RI74y<(LvQTbo=u|~NNUAS{`+(|y1%SBVAWWjm2h^!8@Ck4|L6TEx#5#e$l*DXR z^JsJ(`#hY3^G2XAe18zS9S&8wply}v3tG{tn7O-B7sDacm58#73v6vNROwn}083V2 z^G`$%sdpnAzVhSrcJ4h?8)*sgFs1aMr*0x|BQsm4u@4CS0BZj>EV$&}4~Kp@R|NoJ z{C7TARj|BN{K;HK1l{^TMwW?Kkx^T!+(P;2@pft+PtVBY>&La zG$f>wG-08KgZb0XYN!DXOj8L~{zVCV7`h%_PNrk73K*&n~VVR%! z7cah4X1otz!Z2phKlpjNH+_6Q9UY!eC%bzWql?Lt(SP1fy4;Dy?F)~Dh9ul7aPZ0c zFnS7ErcKTvIFn_jabJak%I{TWMA#--+6B0dbgi7vw~!ZCede>gtK>F;i-^HZmM4|)~hvSgn6B)pJ$y3MYF zNGMBCH8I=xiqEDdOuxzZV5mnWX6#;U z@dfGqhCtih|;}sqs+Ggc1~&2itAqqiAsC@t{a8H05B{_Wf2cb^Xr&W|r;h?Yzd;Xz9NjCKG7sujF`RE?pm z^lVp`w48t>f0}-DNe4|7RgK;%j`)9)@`YTf7ruIoBwZi3Ehfm5EuTChvC z2JAz+b8+y)r^~hJE~%pFj&hSI`&H$4F3Zph$f4+E*)m8c!R0^y@xL#@<*aIF$n0k2 zNyv+Er4TX(kvqXkmcjcQk0bTNuIq&&qv^AAsaHz*f63R^>;M1%E;T!OR|&Tzj#s{N zrSD-my@ek-WI zna7?2e*+CDA}Lhzh9m&RX9t;MRGCt?^%H+PdnCw$kLvxirA#WY@;6}=^Er0WCz8T! z7$h#jvSrbwWkVgioJcRMyr)!Lw8!2a zy<&G_-SVPX5ag-rjcmiXXX4Y>t3c(51tyjJe><>_d0FkN^2SJ(;w(9ZPN3env$=h z2!ow@i75UcJ?;csMDx!+zlX_{yLn&lS9*87sKh9?;JMBhr{jp346_U6kTkhTfNYW! zf5zCQQ?bl`iW{MLg5Q0Ra_a%+rg-?_sSciYvdQ;T!wALbd!?RY&fBdQg|Z(8ABw;S zC-GoDFB5V0<@<*|H~moV%#1sWbz57ZH65Uv%^5|eqYnpjn)6LsJYZ`o9^*U5rw1pm znYVLrboB1{{G3&FcDi7_yjW2@IkP=Te_YVr%|R$a9lceQHZ#2NmypBZAlr}dijYAX z@Q4UyTT-R*ZiH4^y!m$RfNB-!n2A3u5eO#JaI_GMIrgUG#TGA1Z; zn@nq=YulFDl>7QMNAI;4mBdVFvs_;1wfw{7afv5vhpVg~N*aohmS1IV%Q8Wi1fYN= zEMbF9P&_e*v0<$-)WUee3vUtpSo&I6PHz>fGGl) z`szUD^X3Z!zAF0Mh7W_kWGP^AMx=avUiG_cx|NO`QN|Z$4V^k4xm+8)BmKWAR zDr|Zeb-=W#@j(fpd^^5FZiWep3*pc#29@1a>j{d~Fk~8;C!kbkdZ$*Zql%(>Sq8LQ zIL;cE;AR45evnt)(VKRXSBcPW=gX`IZOAwFQYjqoFl?L~Ru6kxRo7z%JG2<5tP`Y1 zGYx;|wb7LSP>o1>CR99DRArAaX(y)35tyI z$_F1qo|^g=Qdq%gk}Qx~`3}`etDO8__`^L!RXD6&KSYcPst!!9aLF2He>(p8r#J78 z*oV_M?~Xs~f1Q7FSiOGu6BAT17@2AltWAIM>=rIKAc~LtFo6mj@`_WD47XmGT&g=# zOo905<&W?a2cdA#2|`JCbGC7^EyDz;>8!=TW{h>5xD-by@l_dLM$A=A9MrvmoTNFL ziRn`l>7-|&s1CZz>y;R!nvYCxkwX@GOFkWXD)dx!Su&hD`c@-=>`W>MW&KpIUrB$> zN>?#ZkX1az<(qexdh!|wNOlo%5x%Caq6E=D{UKgm$s%8{b$<538;9vaQ6wCi?blp5 zK^C}C*at?yOFeaoQZ}^Skq0d~NPx5istS{Vc!=CYLUwfF6G?R-=B3 z?o3c@gItNx)DC4QapPGXXgWfkUEAnU)*`#H)7S#$?q`p`QtgW6UR0S*<5cJ+uw^wdq zP)|{J`pl$TJsfMZD53*gN{4@7Fv$F5T-Vv&&q5p>I_?MX%-jac7CbB&LG*|^Uq=1Z z&Y7S%3;AW_yeR$P4vKIf-DF?2jrmsE*l%KQAw6YZojheIZh=Fy7zimCf_fYdM;=8G zpf`&O;V-;lZgbyH$o&Krb6-j%DYXQbWReq9V7)`Llr$VU4yojk5YK;{cy~Of|KED? z9F(9hOf(rmCaxLO-_b4vuoLF#Bp_yab}OFX`oe++r4ugZ$`Qjtt}~cHXi9m&druc^T&q%HW0vWYL@bBvaWw^xgp%+kLPdBRIZWB4}Uy(r@qZ{ z?tj{W26l>6BSKNRgc5(KcaXhIrX|tkckX#GgY*lK*+sezS7&4Ju|#y7goXsQBnA%=7Esdk+a4fL(SQh(Df+ z3;^YpLm5IbDbar_O`zhJB$wpuEf&M_ZRrc)T1q0lj@8AKHN*UZTqDMCEgFMFP=Ezl zh87JRJ|xDE6>d171BzPEIT&@)jYMDvA#4ebgLro9=Si~zed!}UTM55>i^kJY_2LFE%i6bVcVnPnhViaIV9dYpA z4vqH{=!aq-42S;>HC%s;?t$KU0@+Q&1X7|b^yMOpPRVMmd5Xi|clCOh84Nbl*zf=( zJW&}J^Gs@5>sOM^v}E$01j^uj?57IX>-Qu8vCIyf6uD+qRzLYFh;)9o9P6_rwpmex z(#2EC@aKO3>D_1)_PNC%-G9hg?&rymqFjix{HIV_*OO$`kP1d#rMu4!y>!=kjm;t} zVGM^dPEj#_b82oPwmuJKCT6XC33AQBBzoVdhvt)E0wbmGK0n}5l07VutmCq zD2r8C#{Q!GCq*^FER9}teLYgYRbj6&U-0<@Xk&j+<5by`rH!~$zfV2U)G<|uH&205 z7F(;XLi-J~H*fjZ-iA0 zff;|wsu~efkIsz$CIc3Kj6|bT@%31IL8vbL^fsz-$|T+GFpxzOeD-d>4FtHyPoF+v zrSvbeC_3^JxH-e2a<_}Veyzm~nCCRl8tEVq%Jn`3 zo2lFrzc$lf^ya{^U`&H4Vwu$zdChsYF#>;H4X<_>EXs{Pgb3Sgu#KUo=G9OUTT=Qz zdS9G2B<__0#KcTaH`?12MJpN(f8@b3>j|0A;8WJ{VYF7zsCd=LdIck``LESCdc0QO zXzqL9D@%4@LqheK@p82Y9(AmA)L8E057Ne{dTDshObvKT?&~|n&W6%~4`P=uU3z~t z9_YqilP`WK6Bn_AIF9aLiC>&U|4f$iA`4(VWF4xu7`mWjA{NR-6st-@ULqYC?EN|9 z6@2sh%{y|>#`DrRxVK{W2*H++4*%n${rCRIM^X@plc$!Z%>DsN;SE(2r5WdNj5A0sMD@AlkYYQ zP-dc?1)(G+jXo5p^hqle0wbVWoo2ON?Fa>aS7nTDC|hS0iH^&%#uRvJx`2O`nY_2* z>82P@V}7ktsFiVUTTS*dj$|$^xg?T1OP7U?&iOoV40+AmxD8J_9VaW}Gwt|wAm4|a ziV4?IirJTzD%3FZp;+B&90T1Z`VB9wLzK|Z2e9X?}UA}b^{I^R*0_2 z<}0-6tJciz+wdCEfpUGAxHW&$hiWh$j~&*9t^@bCE_AS^_d&-}^17^@8poxfL$YaU z+%J1G8E>=eVP@uG*Q2@;qlP0=){f~y(gAnQO>05#nGT!uKIm}RawPg&2s)~o7ea|c z@1KsA^gie)h+GbnKGtnH=wQ0p<)9-Z-2mpGS~e?N*>Y6$=Z-63CKM!MS7J?IdjH?x z8Ez&Pc6*|f?~?tjf}Y!TZKf4|!|U2iBi!(p;HrQae{9Y)WhNhPcs=L{SRG*7y$!%r zSq{2+pAMiUXqt8F`y0H*%^bvT8f?X;-+2M(xVa(i)l6gD@buGB4`VaTs8q4zoYQf# zH0Ncx=v{wv4xD|69CxsYo9UC-8DIHy=ixVa9h-TT z%^q$Zf6h^!W~5L5vB8!9DMTc~&#PYj>s2^Y zxi&|$XwGR4{#ro8(wlvON*c1`vF`Z4Y~!E2kko_qV7xA2_0~o)@i_is8O14sNg9ha z2*%>{-}vFp__g>ikF6tt$gpRl=`)`Q7yXb z${v8YqD2(Ke`5}_nH+MUM$u=qOZ235SR2<4cX7V&n%p~f)}U2%R3cfXQm8B>zfB;_ z16xKukjL<~j_d-UiugJV43)|i2IeQKDCB(Wbi6GhN;|Ve-zmA>Msxh z4`Q(w z^u2Hsd&^sYCeA@LUjDAMjl@(~@Nxoug!nZR0{EWo7znXNMigjMnTnO_$03&W`wl+tn3l<2yi*`(^%R=a=iRJ6Az;CEkq! zTjQO1G#g1S{7%dv?JXaLP!)YNc{*O$%}!Q%QHWN^t6_iglnumHB?*9Af4PbwwxZPY zRIU)nLZL#)mq0Moe<`;iS2{=#d60qvGK6+H$FL5Nam8fA|x+$hd;@xyV_~ zZaszc{yL@Mu(pcJ(5=4I-8t6NIQaOeyk&%zxJudkFj*~^QeVs=43fLttm2GlEVfI1 zGCn?XxM@*obu-b+PZy=x4)p6r-Spe)Vx*gpQ2BO2g5T&(V=x=hY?C>5q(-o2hn--} zu+pKhqs#9m{|bZbe^`ppvVSH9Qd<|(+fy;Kqv?8@87H&sIZxZfU+)QXE3Nee1tPu0 z_z+mIz<07+v#tFS&9#+&&*gvUeRfK%WNQ?I-$vuF+;3wU85@t^#{Am!{f z)7j_4H>aluXGhr!{o|we;TM@rW|k4q?A!e*WHgvg9Br#OIZw|1eDM0@D3kN^t2ggX zg^r(#d!q6Zf97s}m9FqR_VHu*KPLZA(jvZjnz5=TLHxJJ@6O+xeLgxlfBX92=i{T# zim9Iuu$3GQ=5EDMn zOJD)@ozK5>5*n)|BZNMB|MvCC;lai6=T|4kuaC~Pf3)Na1ZVTDeSLg%n&mUn^&pG7 z4C_uN@OT7#BtJPL3f5?8SxYaNdR9^Rz4OvexHI_&T6c3)GgShR#M@r+QJM$}^H zvE*ZYrAp7b!VSexkV~Z0{^)wJzSQG|x72%Ke?N_s%v^Xf3B~Y%gC|7Xtf{Mo9>d+O{-{zcqS~U zwMLZ~UM6@`=uqboQ&}wk{s%BwXbs{wc|+<_L0PN`JTh9ma3*=snAPTqGd1p}EouZ; z>gqr}EcM7+{Y54zD9BY-lwPiU$O_7?^nbN77xMe+2L^4%I+IWo5Yqxcv>6ZQ1O4I_ ze>dEjx8MSf$i0&cmf2UX$>`6wIpkT?}1H;52rM|H(A=V<@-mIChHT z$v$=|fz#M24kXjqbv7Hv(No+&_R(t@oW@U&SZ|t*mwuey&b^1m>97VaIuLl;CnpoB zVRq~SQGn7k9~a(@+8T5`MAZVz`YeVEe?1Pi#^S0t_GY&O4V3%)N+<_8P{qSCIkZNV z!E>fMy4(k-+F{UViz##vkRNsH(FdmPfRYMDa|FM?O(}`Kn~6F`PX@e z#+fv2wnJogzHjIz(&|~^OL=qki+C6%V;zBd7KLZ4Ag~YY8Khb?WKkzLkhBa9e{PV& zz(0Qw`{e8R?YrYwCx7{@b9vfdE;c-*ldjx_e0lQj;>V+dpFbao7a3ht3VnbsoXm?# z7mDK6q6-CSTVU8swLALt^XJZQ}aefNc%`>c`XB5~&;s=UAG zw=K$(*5Gl?++TE8Kg!kC&~tWse~kH8sC4ARoaj64IQvN>08hozxcTH7e88vhzxHmQ z!`T7BG$eN4~z%3wft`DkRx&>QjJ@==NzhCz0y2r0_@y>Bd zRESl1F34YJKl#)ko>ki;fBBJ&0tqEk{t${KKyHJNq01~$O|x=Sr~(Uc7{$NWu*2n` zkoW=SGy2EqHe^Q;cj}&Mr8S(>7tfzPee!s3>amV-OarrYd$co;l!5~`cow&4ip>4BS8&3=ZR0X93ksx(dFe>5r10Go9l-Sgx$ z3i(5mf@A9*<>T`KT|JZoiry*~F8=W5j>oY-wM+%i%V6P1T0v`pLke`VtOoH*@pxH;QFW=4KJA z5v$G3cQU3~Tcx}S)e?$ZsIr7@p4Rmp`IPbi)KLJX)zdj$bvUJtW2gZH@^Y4hM`qr5(-E=;e|6EU9($p zz#*GMD6YJg^a7@iDaZo*;yb-FN)i-$Xw&Uv7lCSCf709ITAT}){XwxNIqZ)OFmes8 zQcUHgH;`Pb(!cdd9+Z|$ea2xPDTtDtXt+|w8q#XAjax29yC7J2vEMc})O_B_j$^wX zpJSgr?YE7!3!)81n_Y^CL5H~Z=Z;EBEqY=guNivpZlT0;h!mAO57;GY3)1^`3MB3l zp7|WBf3VQQGoNFirh6deb5oAvJ=Z|W6g=;69rYAXIr9?Fiv!QEPD7`-N@Y2p82q9H z3CN8b52>Z`4aHenWicLElq?OwSehOuR{A~sQ_FY|1kPd_Pq%}ZrPw5hg*#Hu=kp)m z{Pg+Y_3MnYO_$Gz1)JJ0Ml@(1yxb^|$8G#Nf0}s#^g$n#QM*9&EBC;UUUJ)*I>y$k zQI){<3f1K4U78~sv3)v?(j4}SU zrMFH&&ZZnI)($Ax$cF6Hi@y{xsVZN$_;(J6rmzTmh83$+6n(HM%ZjxFisDy|#I8RA z@d4R(X($R|$)3^_({k|chxez)XBX$?9?V!myWxq9xtVV>kV||&ZH&LMzwjsuCB1cu z?$|PyJ-mP+f94Q-qyyWtJYoJELKbBlOqNk|G})`h%!kdml`YoTm0ffOV2JW;Wb zC5s1xd}iS3WQ}3Jc0ozVTNAV#jxQ6(9iOwoVkLxwf*Vodr~Vy`Bjqs|0`40O4v7etDXN>~f^}gGJf2Jp_JqFbz6BWK|^P!raivM## zBy$vKH_SLbI=RR)6t2Z^R%-estr47d!8eHU>+vE77Z=B8M+awz$F*qA68hXi=@=c= zdBu6i7DBtxnfRPX)$0Xejuvg2vr2qto}o;t0y;sNuhasEp;GUIsxZ0PPTm3z-BXaB z-g>Y0e@=7UX~WdH==SC?(k5K02Dz?jx=pdJu!g@iT;<~8(Vx`&&F=KJj)#o14le_9 zh-y13t9B3rc7IbugH=*0ekzY>%~3JPC6aPD_$_(`JafEj%OJtGJJ#dM(BB#5 z%(1Z;38ZqXyLW>)bI@!<-}FOe4t?F&@=E7v-W3(?dJHtS3+bXN=0F0r!%`i0 zK8GJ98-ok03fPQIoZTW z7XK%YqnDm|R}Z#y%3nPfl?fUr{@);%alU{Ye|Td%#r36LVHsUS@Z4m^?IAXjaZ9<( zy6Y3ZQ2WXc%Mv0N9~d|)Smsb;{6wm&LjOZcHj`@pap^aM@_cWX2IC^JD{Pl;H5oKl z7QK}D)j^_Ol~i+hGZGZb^DYy8<}(jD9^vmiKTHOt1#tmHbNF+2Ks2*GOlFvERv)Qe ze@&O=bcJ_1NSY(9H@0(JO{q$0NO)>Iz2$S`GQF1i>@U+O{*4|6U=9-B zu)*&+*=|s+YpoS4gGOagWVg)BA3p;?;w|p?x_PBe>2Il ze_CYAv*SBRM^AX1$(V&XWtYwkO@S9)R*p!E3Mu4mVyg7=4m0VZ z%;q8%z*v>E^d4%nbT&SvTn6N#2d|4QpR%1E)GsJl@4yXk&(l}ZMfI&$0^aQk-fdS< zX1jK>x9Oq6yY!$~R{N?Q-0kx5R@gQyrNhCU?DnrKPj-7%mM6PZ1b27iOm?YCbEi}W z4RW{uu47IEyAZDS0aS7Wd$%sY=dx}4#WfP?DI11M-UGV?F8Zr20YW{(z{wCeArYqx zTdF0O-@t$u1hr*t%a{7VfEs_P`d=9}QAp(IKbe>*PMf`e&AcT`ABgswcQ{zGB*`F+o-UMO;F7@Qi6!w1-&Gm z3lSSz9%!>;+YqDEkspn%^g|bjM3P2V_i>eD15{~~j2k6-o+1d-CLw?NAb57*1iM4* z=E<*S^>VWZ*sNnV_R;R1GSokEs0%tQXk1sBwG+a^r3FX^D~Lz8fdjhDL@#6k9g@xu z*`au|34Ex^DBe$C8~Ca?TN#DRAShi(I^4FqsSMrFLA1hKt?71D*6L>H@!x{?UNQ;c z*`V1zX=VIuh7P|WntOkjd1&JaXDs2O+AoSJY?7Uhm`K?jsjVg%-JL-2r3kLzc2KYr zb6}DI=oD-i3a`~9VYedA7IrIw-0C1|*IFUK)YL$o1Gpqp-1|WQ4A-hmJ^nb zYPm|AEAZF_c7X7jz-xruf{yF05pvsEwI4>B2Ja6OM_zNnna*q3Ru8CIx4E@tdVmMpsGqmHB*W%lBR1KNpDxr z(edl!i{pmDyyFXT(o4g+j-y5Q0eu4v-kgP?ebOof*%Ft=VU%w7MOA`4pyA5-@#auC zir$ACez(4vOkICDqVSOY0a7q5^zB>I4AlL5ts`d3cQBk_h^8y46?CJYBTVNqmtRpO zv4vCiD3Ie@@k>pzyQ3~0Ys|?7HoR-xtqr|1 zO-{tF#jP7eY#XDa9%`_E@lzHz5Y8D zHSI8h?oofNo#LKNB7Fm}H>W8;4SRFkN0VIc*xnoa(In=#h>>ttj;$2M8y<4VM0mcM ziQSp#`>sOtcG|JuN_#eEHQ4aHy8*I`Im4V=0Am{XK`$h*6KAIS~{ZHCQ(}+be{8WFM7s0AX7s$<^AOtcIHCwomrv4rA z)4_IP&K-a@C2Fg$<>VW5Fc+2FoDl$pRa(Amt7?tvyX+}HzVm_=AN$GiVwsAYpZ&hs z6u;kQ-*$)@>kPzIX1E?|RflmvU32z=9#GeukYKZ@YtARoqs_vcSpaLZ=t6ff3FEGX zcHw`#m?Uuo*6M~w5MNAvyDO#iO>Is=u;EZpcUW}h!I;Ew2QUj6re=|MGUJ%j3s83& zh7V)v+}#e~u+`|;Mi26Je~GWfrsd?A`ZA-aF(%>M;jPS%sj*{PxG^Ra}i6ajO)Ulp8IJF9!ome-Mr=!Vq zG)0z{#8*!@H;SqIx}j2%lV_vdC#E1=O!e0$!i<{Or57hW9v=q&`GeRgUx7RG>f|r* zoOsvtK2T!qzF4>5Zj{y2EM)$gfg%nLhMHby@c8uLi46pME@WF541>S);bO3LjjC1< z2^-K{jAAmHOxC+3ATPc+s=Ye`$Rf#j);q;av}x;0-zM}L@@B$KYj;a^+dB-80BpEo zudpv+bn9JV@QOYF3gC1jFRBwaHBf(uDF9=X!NBEp(5WzR(k{k@E(iZ|B z0#$|9di|P78l9iq7;I~BJKGz^=v{1BV$_uq-Qsw>R*$M(C=7-*_)qN(W7Mz;S+`^W z!V`7ju6R6}tiKt|^oY)z1A{UphZUZT3&9`_#2%|eW}ZXWahgdAv~ji)R@WG$rTtE& zklIIrL8r2*8ABSK`^hr!9;$z=l_uJ#+NQhf4?i;nqD8!%C@Q`5Nh?ECf3BG*YM((2 zAl60P7&X*tD>5@FTEzMw8J8s+mHa7u^T|mD6nZwvAZ=1=#^Ad)DU9Y3GmC;Eg)||m ztp(q?Nr3^}Mk%x@SpGtP?3K1k?md3;^qEutbPQfQH@`%;;XLAh;A(>4-Q9GXTSdWO zEg8Yh^ar=w9A725m8@)+7YnNhdC%TlNSTjIy4FF;0xl$CkdR)86wGtRXac4E@wZebSTK~ujI?FdgVtg7n4Wt((+RVK$O%ItFZZ&9{DHE-I9vf46UU) zys^z(1v}1^Uf5MOH+q{lM4Z`|hN7OegjYrkod?$U+)~cCcU=ez;0gkwm zWMYtnf^>_`v%;-0hh}<#ReR`OMmE1y^oOelreOrO@FIUR2Vo-$tC@AsRbe&r3^rtC zFcqRDY75kP5|EVF+*<7^GrrKHS$J)f!$#!gV z>t8zwPSJl!?FD9Sg6m{JHo^6;odl;i%9|_D+Jw)u2ie5WKj1U~cOvc1PKR=}zy_8^ z;4Ib0JOVOslrk>}gu)8HtEB7xJ=qs*sdc!KLcF%cDn@8qt>P0-r9UZpHm+E&Z73@J zlx-O5w@y3GrOdcXQC|RaK#afZfhs4n%Em_yPYnSE`4y0EaNE@bCx(4laT;WhBh z3;8+}_^GeZwyTjr96{wW~qmaL?q zbBgu2bj}*{li0gMk&&{l?Ay@Z{su^kre-PXxkKWShMp-pwk6j{$yeNH1hfl54I4$J z7HQ~@qUO4P>=F#BI5bN!mX<^0<%*SmkfjePuUuQ|5G!dDMdqokTqRpbUA(sBA$Ccq zU;|$j1GiDhvWZFa2-w9&QGy(|B8ud0{$qPmNTEFCa+`K0cDC=HsJn)_i<_8ak(jsFyl7oduA^ct#vVqxy-Y zXvJ2b8`>u*R#5Y)w71>K0c33!Meva-goCYpf+qT~p*V|C%&SZtOPJi49ecA|7DnNS zLjp-1WGiVXimej!W#G*?{Go%;Xw7QKW>GAJUPj>@aHK3pB`A?@cAwy>I}UdD37U0N zjUg_7sB~-QbUSd`g`gl;<^hn_<*<=QYc;%(2sK%U$}qfaX0O`2q@YmNr84RAW~#Ei zONw%pb(xuBy*9eIy<2x)OeVwzYGX}E{FgkR?z){Y^=@2d!OVMUv5BpTv1a2datgE+ z={A|hP!t&Y`6V%1Nm@3;K4;I5~;7@p0oErdEPZ` zQRAJLMzAzZj|S^5Lo-IQuSB~=Ri9(H0h_~YCg%F&R9;?^xixji@*;HVnaaaUGQXsM z?pfZ4PCZi@cuC<>)P3t~(W&=tm5q{;!%Pd)As^`k&loBCm!2-&H=O>~Suh+#GnoY8 zD@v-ap=>?yZU@taNFt3mTumr~h(og!G;?~ekq98-o_MFDqQLeJwq9?Y`zUS-6`kbp z2qG~FlA22$i$P zEAg$4Hc=E&q05@}qod%-3bwOOD?I~|x$DWlJ6d{4!?36?i zsGYsc5>d0zyPUu&iYl;n0=;UOwzG?1N}?3dS8s}n{BL2Id=LcMmyIm{#09Zuqu z6ms8k659=1_SNiHpP6;`U~;K(H8qEz6Ka)%cumdWYDXUUF8rhN*XQSW;xGau244i6CF&&i-X4h$lC~}uI>IVnW!P@ZU;u)KwLbmg@ z8iK<#srseTNS-ei$q;B6qW7%&5xSphiVpeKVto_u*%TcluB4)S&!(g>@EYbyr-8+< z?xeer!@?!brX`-wK>nkD%(jHevk;1>E2}73m7oJ9=za?;(>iw>3M;oB#%^Kd_GU?8 z(_G%4JC2(Az%>P&Vm%Vei1M5{IVLG0ZVaWR`SJsa6=_B~gB^_G7F`RafK``kq| z8a6th5GjV;sAH_dP@!!o8ecOY8S4W~NkQx--NFn*C5>ZHsx37x?|Cr}1xtWS`5)*- zb-^eKq&i>}DoVX2lH5=p#vGvD;!AG8DtieQbIf|1*Se~glw8#<>Ph*NE!FFd!Wx0K zUDyU~r6M~)X=xCD(g>ujLRw*?p(jc?ABz%GjyymG=e0grjFP&>MkwpdI`4N-{ux%^ zsf?mU?P(Z`5v*Ir(pDwb)Q=H-E&Vt&??Tabf*5lEe*3AlsYS&yZdyBP7=sHSyJ|@d zVmP8TL0hT=Vx!X3AgLQvJD{LB&>x3_7A2~Ve&H;uBZ|ag7 zqT9wUHTBWSHfe8`$_IC+#G87jdSn`C@oUsax837H%%pJSO?^^5#4g*XQ)I2ZS*mf- z$Op*j-nQI-sVh4%4(I7DL7op7d0pw0Rx>wCioj|6$ zYLh*cNtNt!OS2zcV{@imp!Q3lC^znzPF#)YhPWDkR_O1>)v(s|CUG^~Q(jC-jExPZ zy_nLt8LWrY7gG{>qx_{aP{73o87CSqxQ6asL0ES$uPW%j`Oaz(fU5M?1dz9nOu5l` z4K)bhl6#~ifWA&ZgtnWdK?wH*o(7S!3j$>7a9NP)9W^lk??Hq{+;5l@ig~nYfeP%F zi&TPtaypWe%7Rpc>5`RYN@9-CGqX(5d=Li@8j9zEX!ldr%%S+J*uPqVN$b>GLaW8D z*atuJNSnXw2WWrt{5Ozq>7}=#^(3C{2-FC7e(~r8*_2F%OvXz(@s4xM(&WMiE*jB=js55vaLdFhjJaf3T-2#g)NK?uD& zdFGu?#!`#Oz13}#Z6ZKBTp<<77P9M%fjHOrj)|YG1BW=EXOwh4_`KWHrmGT1it}0q!~|kuDM{Dxe|q*V-^f?b0Sq zm6@{s)?{K9#{^srUHv5Iob!|*g2OO)qosJgBa0bSLu@LvXQT8min}q zWV)n;Qt*}HY~lKTX4g>cOO_b+n=-LlWuer5*Ku}L9RFJvPL%tdFf61pdy-JKZ%9U(6hp(z#Cl{<@pvZqJo|Xr+9^8JrbQO$JNju-Q{F~9b|@hoe)e?GgF|CzMn8ccL9?yp~e zW#5&=m1XPT)d~#Pt+AgRt02ebpd*Vs^!y%KW!@?fSjwfEO`F>#sL8FM@8N%2igOtO z1)UhX*`ROTZC$lZbF1ziu<};8A#=HGT~V5LHuJDz#0MzzSyF1*Y5-wQMamp|d<7O=9b9-9d2oFIn& z9*^_&YfUd;lAS`}(5G4XAA#SN_dNE3;M7ZJxB5qHl-(CKxeK*JeGuM)*`QsnH+0x8 z{SnnIV%OR#2Eq{Vg$%XYlaW?{*=vDT&T&@of5Vqi^yS|^(CX=E_r+*BUAOpmSy<8N z^U?J2x|QqyhCr(|@!p^P>FmuJeScl5OqM`6X?(-mwkZ_U8-4fu6>~cF|ARvmj~x3hqVV=VJw%Q0We#Ne+Tp6 zxb^W-gTci1_Qlt(Hw{s}jaZ=mqsLSz z-C*5O9~rFM3FJX)Fk{>Fa#Um#eW|fVJEvoVwyGI$5;7k~`Efypm02Z0M=m*x672~X zvOfS6EaWIpo zABp4upy*g3eYsX*_cHg84&lr9%I4zuNTEXt@w91%E%bji=9w^ltUoizB_E5CEE?_F z)`_G92+4Rc-MJPbX^yS3c1y2YwvpJX(!*i{!Bv~87-E^Djs?&xty0{oe`;&$b5c?q zvfY{Og_}59ErpIz)-76;2D5OKsGo{(MfA2sv_h?M5eyaGL)JJ*Avilb>?{&`lDM8u(*A-e#{( zAm|PL_nlOin=_uO4ctI1Ga|cl=xU1CQvDomS$RCy-IQ#75 zBlf$>(fpnG(SPN>>_mSe-~JAYai{PXd#e=mOzwSgoY|l>P?u|`e_N!AwN(nF&V(XZ z4)M)ysGr`vJK85d%E^iTjDa%h;WXG%MyCN{uk;k&Vw+)7?maofC7UjKiXjYqeTvDM z^h#4)lEQ6{C#EzisL&SrI4OuE=eT0O@3@iCu`PyKuE?>;dBz|VeJ@iuK60MR4x_Hq z>{#RjrnxLeQ|2OTf8QO8QJSZdlrTxa2zN zI>*$caHTmeN#U|#QR(35lS$Eg)Lr(KewSJLb}V`;@3KOQmdP}C-PI{!Zk3|{$jK~Q z04S5We%45d*lLqmlEP&&Q90V0_xr@qs!PEMrO(#GK5$cOe+{^Q?o?2srry?NqQk6R zJ_^}^-ntQYP{aVa8nsXt%32s4+0VP>qb#jRO)l5A?s7`Z!?X7~;0aU0D zx{_@m9(;UsaqCxnJTp()F}#}DR9giK(>L8J@PZ0|Ruirz#?!$f`+}m7(JitsuunmU zrn?4bm|Mjte@_TuNkQNM7;8b`PuzmQ>rwsxzA@mcuHy5xCFq)L)7Yp}R=0yV_8veb zrVoM;`dIV_RoTQIq4!3Ja4dRr8<6cBV zo2}v^fAh8di9cvBTIm0E#kZMI8I+F_=;@_wTN&3ACR)=%**r_wQUBC71DB<2CxO%y z)nC&GgUj?Lbm$N^ftpP*)A{NPokXumE|S{04ik&g``bvPCjA40pVbi5Iw!QPn6#nO zu6c9Ktzy-00ah$yx=L6Pi`IxFLzjuA1~_JMe?ChUXQ>3-mPSfll2V2;RH{&}r}WAT z-sTPIg12qYCDRbPCh9e}x`~KKYvY87$Ab*DRbT-uyX>Wg8w%1j2V9-s-z2z72fqZ& zCH+9-%e)WSiHgXBMHcCQHkacrpTr_%SQ#i>aDkLl(t->109K#1~bZXP7;QW_BzB_#qf1U`Ix^g?`%)D&e6mTYZqlVui%2fAPSQ?_?-cIZR`bbs7C0G19iWLv++K-hM>1Vd1tuecZ{RLDM5irZWxj5T9Y3%s{KwGl(W-eAi zd@#8KbfF85SBrpG^8Y*F0x6tapPBr*Dr1}EgbUS5C{$bHC_WAnuKwi^Gtj*hueIqe zu4Jo&8XYL!^un?>PJgIebD@abUZx0DJ@3E4wE{<>o|slSR{gN5Kk?)@XY{MQnYW0vrqb^6w)cwHoOR!%@SGpc4;XQoJx=n zp9*jEJa;MTSDq<9?Ob|VX6c}XL2DAvrJnfs+7D758`9x6X@5*|1kmP{IxOPGfgK4q^ScTt6RT_KqSfF)i8iS^Y+qfy9cBGJMQ+brl zG>A<{(ptC=9e*Nft@H>AONHDxg?Lg;V_b^bl!f||am@d^@?(A$g=ee49>Zysg+em< z1{t5N)iE|IW_t~LOm%o{A^S~j8;2sya=$sP@A-|2jT_|8*Ft3k(`% zDMde@1OdPClo=5b1Z|bg1r`lJQzOTleZB;DRrXj zi_V(MMcXB$U|*|e)uirFfUX+IYgYZNRix`5Z!0Ek7r9rUG=~8_U8EDmaY-Cv0DpO)8CF1q^_I2%+DN$`7($6ZtQ*Rk|QE7^C;C( zeXU3ZwTYK!6~QGrL>fOhYQh~YtwVoBFnsRnq&ZNVdx`1&@ zmtEw5B7eAs-WC5ZeFvJOmytVg&8#DUMpp$8@;r#I(dp@E4vBgl_Mka{d1K4xg1b$* ze+C+mx8>5hjF*a|^z&v8R^Hf@QqT+`e3J*GloI6eGbgWwF;&o}eHM)op`AS!rkX(g z$ECU#PuqwW!xS0bQKJ5Q8K$t_9)z`dG%7XY>3^cqsSV^V=#+*{+NDi7xHc9r5zjOpkym%VV<%-$9ZhiwC3m>qT`9gq>7 zG+BPvg4Xw5IN5&-W7)rT#^sYkdT{dED1RGwl#Q6ouR*qhqoa31eKShuIZB64w%RJ)#la6o z$x=tjsIF?n{N+&u<|#~@Mcqu4I#pDuBO2wMJ4)-8yQ^L1idJis_zEF0+ER-poT_=) zLmFi%ltZ;|kq-N*tlq!K#Yro8xFQ5&U+uJKI|qafh3#^4Bhk51K>iXQDD_VzBFN-&|S z6`A{Us>9So;+?2e3(q#Iq<`55K*6tW!BOfipRV8Ks1hQWaHEpO=AbHdtk-0cLVo{N zM)e%=WET6&G;-16{#6B?CboKoBr0P=#FLlDJD1qZ4pb|ON@@@z^=`%&-VOawb}mF> zUT+MFwHQs!4I_&-p~I+3d%Y!u$}SVGGE<|e&)hHu+A8MJwHKc)M1QLE!M5-y5bv4E z-iIn5LVufKt%xq$hftJb6MKjE#S#cd-^TXjl zqDy<|Ls?#k?om+oF;nW=lj5GN)(cc2kgQ8Yq*L>l(Vko+L8~pSs_Y@zuJ|OjD_(%@ zn%&)j>DVoBr~GBI27hdqOz+$4mSYD?E2@wQ-55s635^NOva0H+vLtl*DLDZfL%i%= zP%`(yS3f~rR_`CGj7T2hlZA2Buy5H|g6g@nRT}mr1^?s$`Tn|@gG znVJ5mB^ADL{mjKdI**@%h>)zcDH;xT!PeMM#0E*kUk)1U4%kovT{k5AGA+P3;pv&T z;Db7#${)6m0h0VSWs|T=Pl8u^^AreeTP}G{yRR1o44c;L?QImUFPQo%Vi@jAMoD_@ zuw)e6ZCf%4rhlE6j8tEwX~~Wko*%3&nffVW7|u&Zs!c*)GE&u%wk6AMyv~b8&1Y>} zv;$?4TwAv6=cvKBFWp8mTics=5C3jk$Xcv7ZaM89a<|}}w#6+fz|~ea|3zttbfMj& z$ID-BQ`@$=?DDx2dg!s^==v-0CD-7>y8)#cG{X8$D}Pmw$}Is~Vv}8Go6NM}`}<ynC1;Y98~K@X;6%COf+ux5^S$yAhYHN*^-2ILTh*Qrj7Roh3`iOG=b zJ0l|a$wBz=%ICox)``!XuO6!~RF&NNa5p{0&)!^oK0Z3RI6i7C0Aval-;BO(9XUqd zrngE_nSV>Po6_uMlpE8kJJ^ZQg#ow>6!kb$8NzT{b-&RR$)5I4=>ZYAPjQ-({w=wrE}RRQ3|P z^qgWLfXi5Jvb?6S%a!|_TIxz)6ZLxM^eKEnF%HnLgBO&id)tN;TR$_k$|*0`kj?6Bvwc6{gMt+UK@leQvNtnBXJmdmmKZ;Wf@)8 z*R3cs=Ubo%X-QJ(hEh(W@_tRigKeADGC|0Avd*-MsOgtx@V}jOVc4!HUZTd1duT` zJtf>|?;WD%96EQVd{#P_5nv9zJAacs@l-vtve7m4-rOn%`dspxnHiQ13C;jQ{q%t? zxcH-a0#qSM1CmArFsdl~PfoVF^I|_*C2XjvZju7Wo1HKM=$@}jiZWw5wUH$G!e6Dv{p>li8-D~6w!yxC zY-0@F%=+yZJhQXwKAb`-pr$32rmAF{ncLs}$(MSs$gGIS6z;wEGQD0~KxSlSWMsVl zqO@*5KPoCZbTwG0Jd(-MB!XjrHRk;RJ;fBA7Ag{Jj#U8BnB_Mtz@+d zUCSxfAsA)3jONzc3r|7_s@rQ5vvo96lNPlzu@p65!bLm}Mv^m)eEHZ+wMn@mly}nQ z4!T^keP#7EY}5x8x3|Sq{zAFk&@H&+yjk1SB5y2zVjw&TvwsmK;YTG#)!P0z z&V;4?UxGD06`XOd8DrF>cPL&9${A8^r~EReNP#k#k!VXQ{Y0Rnp$a?gAx?erH)*nb zU+}`HIDoR+E$^HJgFmn`nZ9J_no4+7YP^FJ>!kNd?7mnxJqi!^e6%zyl~Xyk+}NlhC2j~mztxz!Tb8kZ^d(O*20)D^Opcdg?6k|;(~ zO-=x%Q0a{=r5h0|`Ti6RP5s0A=QzPUxW06VRADxj>Wfz9Ue-rQKP2W2vC=?f9E7#0e998Nv7Dkb^^wF_O^zx@k|FIM*bPeAOxspfJ5oN2;_pZc6`+A) zFDnaGPAzQHzkf*fQpeFCX~-IVwtIlBg5+4EinP)sJ$e7`;_~D1`MXOCfP-X*7rWEG zi40dfatu;<&CH^j-i9+y+)MQgJhW>p7aSEX{^PuVz(K(EdZhPnEki!t2T;XRl<`K{Y?_A%v))B47MTOU zEDgnCo?c5siP+$CshBEgz}_`k(BDI8DC5Gtl$sX0WHOX*p&m-TFU2#d2w*>whWaeq zE2(BL-$;EfO}bd`Bd&xC^+0O!{5+2nbjwuU8!|z+J?%V@z_v5a9^KZIv$CxilM_Y( z!hgVHX=y6PL=iMTon_bd-s@RbK$ss;3zbaRK#$L}vmt zN4q3y=-sxE2Fh177VDo%ipqz)I@1otEPwpf30#GN#xgZN?iJOf_uWD#A1IcNX*z+c zFpx}Lz5T|M;;f%1pE+x%i)Z>IzWQdtx(B0iR#yYa!`p7;^-_GqFjOh6u^zx~CN#%l z489$^Ss#Xr)r_x~;8@M*vWNCtEf}goCmhv$=h0p!RX=o|V@V0aR3TMFwBKI2AAdED z9p6$$7e7>QteClcUd3OVxiI3NJUbaxCV_fNC2^jtWK!oUhAoNeR|UM3@&YtAoN?yp zo>rVyZO1}J_n_hwWlr#IrnZ6JOUIU-;M++tY78f+Zc=>_-CtUbC;N~xu{VjS~-2|>Yu+!+-vk8#}*Bw~NVoX9VbfV?iG|vp{&jjhDSHLphT7TjC19b6Y z&4yh>)=`g#JwmR+6$`W)#|B{x%qX~EVSs{8YEHd(JvdIB4-+JegB+?eb?Vv6WS#00 zIq|4RHxI@Yu6sb#Jeu=&YRVZtOpr!S87l*26RwuPl|!nep8CF3IEEUU06HzkMv%KM zF*bqJFNrZcRgkiteYi~G`+tJ7GhQ9IBE$Eq16NnjOYXZX?!kh84?J+Vx`X>Taf}1N`J7&y?TH58rqL% zplic+!+_Vz4kj!8(6`#afP*>f2!d@!9@*wX|4?Aqz7|D!&p7HE>E(G6e2mt*N2h8c z(|C5oN9lcuBU;>y;5tcuW3+3bk@WK>OhfVSD0>+Q#eb8B*9#69GU;vM=zb(g(}XZ> z*vpLPe7oII+`K3tqD4{Zi2gT zHD5%TY7v;x3E+qz6&flys6mNi5C~4g#Iw>z`pbHaHTh=P^`4tU_jXh#fn>!({Yo`tg&ntAFXEQRr0qpw2L(1k2HU6LbY$=Q;{g(&4`qW{9X6AsBYsw48@f9wAj z{MfxC4Z40Te)d=W{}_Rl?Wf?7aw6%YQ)CZ7o~+(yP76Q_xGfy@pl+is%*GZHg>SSdZ6h)qj&o=uNZVj?>%CQVc++kY2@2o`PP0 z&B5|u6kfL@r@;rs*;+1URsB9Addn$^lG6gpLDK2wNm2UEh6CMxZ#Ep~-sa8b$wgKu z6q=r?26o;9d>j;_fhSGr3$7e%XpMt@<-A1@X|VV8*ppz8N$bcbC7P^~aXL(K}d&e}3M zx)BD5tv6#){%png6W0b=)HXC*5h$~+Z2}z;234&$8w(@KwTTNzKB}2Pc>~O>e_2=( zuQu^wZb@;RypYws(*tCvW1x@}kS-0Zmt%*TSyZzF3mFo<^D?|;0D)m75`S6Dp*kGc zKo*SyqhQOx_#`PFX(j*#^4JbR&Z9hx7lM*B3JS6m{MIVTmBPIfh`ASYt&iv*Q(h=R z%zUQ~VA>EKCsTYZqDQP5+|jrT7%9|>N)~5e#bKO)IE+qW$oROU(XjV|^SStEoZstH zGFnG+1y3Q72geB@Aj~xWB7cn;9aU3!iLxQM?NY<%4#xuqXDk}i%0C%%V$l)XbLxIQ zs!Ml+fD%L zr$3oYkA3lo>gRJ*y$L%_VZGCoqB~syvD3e+I}hdlZ+{tX?hfvzJb28YV@;3rz85=Q z>~*!r)z%hEA|QXELk=#8t9{r8JP*2&g&Ny_W5aSt%&nYSyUN;g3Emsa1fk z-Ub`+GG^vSAQTH*`Hzj{&Q< z)+p;yeFo^G5__Jg$Kp21RdbC2$aTrCNC*EwZwZ#{LH7z^oW)k`M>J4>`F<-=DGo#Z zg>@Pv?ET_2m_iv1wNF0|6o@{3RP0?YjzjB9;y84(P}Xr!+JBZ8$H9E9;5srt$AP)x z^iheeKT3^N97x&ToOL9$jvcxvlKYUu;)Ilz$<(3P;(>%P_I{9z!x^W~m0Ag}N_8rp&12Iv?n}2hWVQXYAdL;K8w? zrc8kAo4(?Ds-8vzk`A06hI6+|x<*8Gyjkgumh2!%<7)FT;yd+Wda*n0H<5wS-U$yA zJnBP$ZZNRdAMBo*iKatw@b0Ub0(!MPy-uBssNTK5J%10C)L9xp^_&8B7GOH!R=e59 zWZ-l<(~%I+>7#G88XiVACqD6}5Df~_ydyfwqK4}vzYBEIQx@EXUm_Lt&Pva*`C{%% zO?PtCCx*~s_EP4;&Z8Td$rXgb*C_lgN~KF)%7^4e=kdx|>UETVjiObMe@#katxaa( zZSv7$)_*uS(cMxPQe22_E*$nn*jweT>c88bdm||nM@)qjSj zJR8N3GwT+n;a@lf$c&>h{4>pS`cvt>-z*mN$*Ii|>Fa3&QH5m^Z2g9$1p6#ugodp zIZ!?;AR~4kEt&!&o@}Ax@c4tG^WE>WiL0yvF*FP(q*is#} zV-dt!=wRqO$^dCX!WIgL{QNPOR{ww^e=2j$0iud;amaE{DQXc}mFxplRuB^8_`rnR zFvLipN}m9TQ_fd<#Q>>;i2ZmQsTI%>yEQRH<%-)ytWlrYPICAJogMC=3gWZEY4wtp z87b0IXcn6+(zVUYNc_@Vp^(ltS)MEl<3iD+fHQ;w5QTH8@W;#bB9bsJ^7H#-f0G8u z*A;_SenoNd)RahslE#Nj-J772(wY2@N=;`Bi`D#G_#La=(IF!&lTuW?MnC3GdD%$W zJoFkfIDvfNM2bW?y;VuE>;OcJIZ3DPp@MAI8DQQe|vG;1j_JW zfej3o$4~l~gatB?XjW10J-usq(c z7WYmxkox6502}~D>{!Uq5ti~;7~4Tl{T!y|6+0Ug*(Pmpr9mvjMv6@T48M(`2732q;hLTX_`cgh0!7Rjir_UvTJwX;sv zn?BCVm(2%?K zprorTRQdeq)#A6{U_badx?hCi@(4>Yit=FkVkh`v|M~9I{c0&yHO6N_-~PU|7x$;O zH4xF3k!H0{JeLWgpC8?%v42ofGDTu5lU08E@epO`cD`f=c@?FrcoqeJ+w?f(#f$0T z^zhkHk3+8Y@7!99gh1G5t z;+2^+TEg3ncEfCecgSu-n0HR@#KICmP4IpZe~IEW>GRORbh1A^I)CW#(5(DjXC7k0 zP1|{BG6{}lSCu6Ak2onM&EZqQJ(G!`V;kJVDcFX%XBEY_ch|`#^~o?)$0p1$ufs3# zJa`lL*<`YRFqs}rdu$@Xxy0|dGl_c)yw4<051#i0O!X{1m&_ubrGsrSi%YD$^(=+U zcyaHMQK+d!Fr%EOH-F(OIKNKAyLj2>mg&ME$4IlwPG~sJ*29N-t z!HIcIh43>10?0>6CmW2%<8tK#7y-|A4*=$2INtL$p^5r^AGfPE>kp>rw zRnbtNja{^vkr-S&xGWK8CWV5jU=?-dDKMfAp-W+N&kj}YnbgsHsb`1S%(F~vYj_*& z{aNV4$A9xs0-)5V?mPR;u-kAJT0t58q$vhC-5>WyN=5UvD9RgBENYf4$2Ve zHe9IXR?tfHbyFUY2S_dRl<78BytR3)mWoWjf%1Qd@RHe1kHA2@t z)wiAZ(!sfAzSamQoOw1J;e0W>;V5)HVQp+?s_#>g#s;!YkNZkXx_~G`xGcFFC zjDP0Yl!VjIER+1yP$cNHQ7!nwa0NGh1Tr|sK!tPBXjt-cmI~9~@yfx8WnOI~Qr?%R z+%4a?nru(2TP@x-b*EdGwRxT6Ri5Z_W&K#lI7;z4%1UPXMW*LXF)lKk^2EJbjaM;C zHtCFYt>DC^folcdC{0A?x?zgx%*0UzAAkLh!AV8lEMKb7`l+(G=yNe0j)jD7xfSJX zEO1je^#-g>I#l`W@r&lNM-(6gOJU)MSdBJI+ z#EH+)Wh|Vrf_p+#`cADORleh~3V#Rn&WXMUa4w72HwMmU@#eOs2uuX=$hgb1sY7t3 zK&JX0W&J||6`37y1Oc8oMet375(;BGwe@e}%--uBoR3w@U-UJl&&Dd|=Pis?&CgmC zp{A9K8vxGhRMKi1lu*0xCDvsm1ci!8q2xoFtc8Yau2wgbf)OtCQ8DskJAaWaGfj** z?lwbPehT%6P!o#z`g@dV&Fibu?mc_|@$K8JkuNH4r}NBvt? z^p}_5r*W2vasKrA5#vH^Mdw1JN`ir9dxKu1oq=v#0L?kjhSoSK8X^~(bfDR)aZ+qK z2OPE^LR>OV%L9!BiQu>0L>E-I=anXx&P{H}lDe=#Vn?>hsY?4(|9_7DDO)t?KqlPp z_gi+5gDD8Id)d_uyh*1;(4sWXjsdLbzZbX~$NO!jGFT!A{Wqp#uE(aZ7fatB{S58Gj_ZWBb6|#S=D_lXJzVQq*7&_*;RCs zFH^d>>KGi=LCFF|M|rVJLij2fshC*?CzZC1 zT-ludSnAH))JHRMXqm&%o>8UDa%`hsTcTqOr8t^Npa_}flU*b<*8Nd$gb1($`xD1Y>L{KZ<3WhQ|F=Gl7BYZ5ec5uXH#2Gx1oYa&XlB0d?QY(hQv-Iu8^gi6AFP20;Kk(+!5Lzlk{L~*$y=Ln1?ne69ct_#(Qh1AaFFmCPuSC-Iv?HSbvCztV zWbB%0qL`&!Cx7j`())es7?vvRB%`?b;|&2K$O2NhV6btMa8YRLv`Ge z@&DE-a<+h?TGD?-@X=OcCP$o%>n@k|e2jW`kGC8}I^v{acX_Xoc;Bepco*> z^tMj%XCqq-$);v#1`e_g-SzQes|nmMC_+*CvKkgG&XZ+M|D<-i9;!_!kgEh^F2j6e z%iY*faJysW@sKL@h3Y)3&2o;!dO?wzbcywXA`n%LiCTYNQC*^zr8zQI7OSWoyk{mDpWS`ov z!RPH)zAt~*f3i=JqI5=_>{CRg5&(LIg#^&9KHZR)cUV-daOki!d48n8WPiK*;$)v9 z0<|1a>(hUN;6u~>S|hpZ)8MSusfVL^Sck6 zR@{jbRP{%b#oEyoS8;$U|Jar|I4&!n{0Rh#Xyt#fBt?4a67*t?W&L>(0xR3rvknc{ zN0M-8C6S&41FnN4{}fQACT+n`tWb-F<92|u*+!*27tX4kx&WAm1*IS=<|!Gl6ZfQ~ z#DEQl-8x};lpYM)-8)LkuQFat7F!m|_;Kw4FBdo)zeAP2Oyv&f+w`gvS#Nb1D%p>< zEA)T%j`T^;6*Kknfu0a*Bf5c#qMp9xGOm6291%l?Ap?l+Ili?>g#F&;B^*2DvP~S? zF7`U)jw&zEPQwn|X{doaExEtb=G&e6^mcli!QorDM#xJ{dxEO`VGN5=ZV}}ES`KrP zSi#(%D=>FuVE546CuqcxO}zI@v{?T&Ud?}#uiph_WE0!^hV8%Dolbk3?F2CLTreyDAF@Ckla~mSV3w2!mMH0b9dh@;suOmyMzG+%QxqWNec(vZ-XjSUe2w#0wCt#VOIJL^-o9DLKZ0F=C}i$I+?a z^)nVk-=y-91)t&%VOnTjiVF*M&DMWmOcwq3`(2@YJoH6^!bCj!vp5dJu&?b{ivK@d zoPPZI)A{Sut4|-_)YblXdA`nG?(K#5(}U^LY`Qzkrjz}Hd^evw+dUYIIqx>t<2c#N z*L$C`DE)a8&!h2OzFb&P01BNHSP;5i-@K4tPTzbe4b^%bAEO(=u0`hEMi74*+)7Gc zif;u!wiizqZ764u?G-)*fg-3i{jJ^53PrHc|F77GT9`?jS^vnWp}(n{V6lo!f)4Es z0!b|nPO1;}fitJJy#WS zgCsGIiuG&TH_A9X*3VpSlu`xQ)LZpdmu?V&9e>HAP+KgGle3VF7<06lfA{a;Y z0ljmmE(aEJ8|L4OJ6U@nUjb#yejQ|9!<76I8FA`)9fc#$jPDcwME$9a+RZ{+wDjo+ zvZ4IaQ!Zlelz71qG{01_kwmA9#P2Gcx_?9s`Na-W?UA$8)zDGkz_}qD-=qu)9KT3F<2&?L77@TN? zeM#cEIxef`Xj1G+U=P~IH@*?SKl=RWLbFKiln=sdDK%9UZT+B)KR>cM`V7H3iiLI? z2hN;4f7i&p3JUANO zRbTh(Bw0j4dyKQ<{#mcRaaKxgN0Ee6vwdT3>s5oN#!4J(3JN^5YYhiHDt}fs*g0Mr zrobg7C@R0i^N3(Onx^!GP+%CGh)|$juRF1@0X8hdzQ>LnPA>RyGQb`VP3qILl?(z&He!Y-pJLlNRAKd z!ZL|xcWn_r(XGU+ zehG^|2qX}1MSsGzXdE!b4^=%S&?l3SQ1C9vqnE)+l;%R|4StL6zb2_*_iQt}lUbLa zA1x9cf%^O?2!B_SD})eLaL<|iB#i>`?3uYv2=y^w=zsaNOH%b?a-5>BU<;JlNiH>;p( zRUCYc7Yj*<$}3t0*Y{-_OOZ;EZdOWJrW1wt?9s<2B!4RWB%a+ONE`-tX>?QIDO5!& zMKy|eV1%8u+c31QljOJEMf4?FJl%`4Y!hXB2M5nTKhl@@@-7P0r_v8v6ezzEzY(b4 z2%Z*k>2NqK4KLA0gEiCOsN8Y-sKjtV0RyICjn_;K2$eH#ucDdsO$27QNUNXCsByq) z;ON$rx_?3;jh12h+t9lLOzy{rXf)8NK18Yh3;CGNhpZ37e16JDjKlNFN9>)*jFVwS z0BSK;&Q^TWmr&qNQ=Q zyarf1qZgcObt%Y~=+teC88_YE-G8<_J?sxou!ZW1o|YTtMEteag1FPXL|S$6Y94)) z_E6#8F?(-}#NtgMquOj994lQ~9Xq7cV${-dcVs)4a*fgaT&{W`;Q-Wq@%h?8v(k={ z!GDQQ!4Ar%sCvO=SJVOR-lT`aY1kH@jr@w|RcT*)kAoirVZB*0Sj~|S3NWJ7_9_Yr z2XDWl-B6_#)UJ$@A*Hk%fQ(j8I}Q;P@YvGX-6x~dQjS9irA|)i695^l_Iey5_^^tl z9sp3)?QF*YGb81K*E1vA*%@PNq*U+nYk!<2X&%i-bwpHpW5i!&j)Lsfvs-&tWe;3+ zeHgS+flpdA-X!U1IJ;}nGt{aD5G0@=MbaR@v<|sYe>S|#>f=#!e;C15j<9WhDXLVm zO@6S*vVbI5VB}hkg68Jp$8PsNPl{M z=S;|H2iOq6o?0Yw8a|^gexpNDdEXkHiR!;f8qLzcOgOhmbW0ilMAG{=!CCZ3Qsh?= zHoGY@Sk#nNi+0nVm0-QS{FiZZ^FjS(HTwK$KHq)&cK2R<3B`%iCz8|itNGRJ^Vz?x zwd`vxo<%9A!x#Pn0~7iv7lMsxxPL6bAdJY82d)dSh`PN!73d0s*(S@ArRu-8h%*)X zx=9wovJNu&Jm|PLogS*_Eh4(~=Nm2>7!dM0CM?q~NBcX%0ule7u&fZct^hy#q?mom zo1Kz$2FyM!Wlu0NRDq;(Y!2&_+am*YbK8@z65ziy<(x^q|sXDd93m(;Y(E@ zh1s1XFEp39n~5SzHH+iWIDZLMc$H4)V%d=SRD7$npcs!CTx~JrTwCR8zf1MXk)>T1gwlgg@!N0}O6Y+9TPhF!A8vambAP%C2=QSN=F;?{ zLv6c4xF0W~)Pg8(L{jiEt^QMTJ)HnHmitno=bSHDxaN#91Sc4ELis`ag1;4#=Xh-{ z712`y*=PS#klU>!C@G;|_D}h60tB!N?0N(to8p;VemrAL>sp7v$9ZRA)}w+WPn0&i z)UREsYc@*}%t^7veSdN-E}((B+lmXScRWx{uvE6P_;3)o0VtSsDkKok(o+cK5no7P zMs+`abNcb}>h<~YoA*CoeK>x1T682ke_dA>gi?~fR>)a0y~9>nU?kP4Ox`%E6FfQ| z$-P$S*g)=7yVF+taengt-PQ4j4{y#-jxW#OzpGDbPrZQI-hZ{Q)n#t>l?3x!L|0;s z$#}iG<@63f)hLi}BN>ieiQQnq6Tay5|8h3@#uiO0mepVBk31^FpFXMwgdSrC4y#nTaZVD?3Kg5;ZHoTIHz0lpH)CJeqq@9|ORIFaeaTkOG)c7IsQtLP>^d zHFG{555W&QB<<7Bjgk_#w|5csz!ZacW^tps!?zbAzdAYj=AX+#wK^$7S(BsglWRi} zH&W%K0~tpp$&mD(0h)Y2v{{SGX0AUpZXpGLutVxiyjYyCR#7VJnyvU( z#@U@f=AA1E)LSApHlN)Eqf1#usR})Z(U|p&p||3gMnlJ!)_{5gg6c6S%rIqZeF*bA4j<#8>bR|gT>MdD z7X*2nFY15YMd3V3WlD1OQ8ADFY*_yT>QhLC3h)9NZ-&fbZ@jUi$2-Mxigh#>(4?Hf zE89bKMj_18NA-c|>;n#7_eKdpYS zk&o~4tL#Y5xDlW1X7N9xmw&-zvL4DR zg_^T4*ilV-6E5S${YwdRnkMtjEDtWiRTjLB=J969$!MV#m`h4>VF>KXNX*ONdLej~ zJ}aE?IWTRq4rg&L7C&K3h!HV#Hb+}8c81&bMwc=?neujdW-d@bcH#O!#PTWXAVatLDD$@mHtQ{ z6{9AM^YD6iEg=Kx=Z{Wflqazc=ks`V`!d*9|6^P~RB9t*^S5F(pnuXC>&;hx(@)KA zm_{MzG$>Df=QQ>ir$M>=%XlSLCw0b`thun>P&HTh&1EiB<|3WTJft2%qhhc4BHER1 z69!wssfUA3j4Wb1F5slXff?l|X|mXjWtv{YiNdFXV>@_r-k=eQl?tWKcNQ&#VV0y) zgcOtKsd(qsp{$^0Tz>?LJkcZ+0?a276e&{)HFH6~c_NI6VR)q66KJ4OQLf9zwI7SK z*eqAo0l7FeQ5k{e3*p2LsJubODY+L-K%-(53-c-M1g-B$6NzPqqS1!sc@-uo;{u@* z02Nzk3Gp?a=XY8MnQ-1}bjsc~SdpTWv?LuX)KC95q~9R#AzZ*@Ko$v{3RNd zdc{s~wEu5rU{&Lklt8ExXP{H)8k`ZYvMA5wRhTgE0xGwTE*en@Z}d@d&Iyxf4A}7& zbb4CHWij37xGcy(xM1SR$(XSdRIgCCkQ44u_lgu_U+*^E>CSR3l@lq)u^YYs-vuF{`@`$5B zq7ui<&$hlKf(rcsMSdH2Y}44u7QFxb|LwN5zPi2Dc36p9521 zGpQQql!o(olMTyYXgZP%X_*_G*{CRley_lGVyiHms;j($VN`pu)i}$CJd&oH2Vx3~GYrfNbFvJ~!+)Yo1M?C6Q1(G)9TqFd+A{KfIC^n1 zdHtGmP+Kt}%xiV?I+(|GayyuZMfn|S^@{D1oxs_c+fR)}C1`T8v$vC;4QE$&4@92D z)pdM(#Xk;C`o)%#rqLLc-3-I$>u(Ij6wbta08ZSFLvn&j&}0mY5)FzIvt=m$Wb-1N zZ-4o)IiC|WIAxa!4{S_m6ufZS=JuHomCeauLJx?P;IOE;MwW}s7;+4a_EkUMw+XLHgSgKGxD zd7p#xw-jgg+~`D##+-Swu5{-CsrU?pZ+}N2OAz%n_9#0+!_PM|r zn%^VsWCAB_Vn{*MeOjjF*f1V+C{)TP<3>1RHX4RSrD1h$1jf)eOh*ZAbWbDrlYj0A z6Aq;08K&M&diTTwKq5FSD#5$)eDJ+5a4P0^5f*TY=JszbDPgmUe?7J7F($z52^s=X z&6P$sRV~xOK5s&d=-_a^JK_vDEJj8&I3KCWo9E-CX!=v+;k-DeV5*&9sA_131Su>xb`;pwt-naJ=m1M~|p6$p6RGy^jkt)UJGFojo z;(^qK-oJQ2}MIDB1IU(Q-36b7Q*6DTC#Z&&a)hzkI#^#F6|4xf_!akNakoy5!Ob`meAsKm=Xb2AF_z$hi* zN$@tx(ZSp)>F(yR$7M}#i>StaCAELRK`1R%=n|~SgI;;m=FbgKSfTwhjFrWXh0l$46u zc2Kfb%7nTqlkOPBaeq@d4fCN)=qa47>5_4~6Z{e_zC?LE3wMI!G!7R#K_)Mk2&#{T(BN`b%VpA@;*x$9A^>;43Ns@ zcUYH^k_*~!kbghroX&TR*iO;#oqnQ{Q&jROr%lCn+$$(x&JOEwIF1I(=^u4&3a5T< z-;mf+2IzD<8K6^K1}LN;vbcf-nAn_45ZB4Vg4JoB@L?0frl>?w2J4|f zHW|ZGg~rPQhx^I6=qMpSWThs3Uu4bcmY_AK+rieH;=nbB59$d&myCqI*%TE=EKxy1 z-qh1+H-AQ)hl_Z|nUNwZ+{6Sbf7GK`Lgke*xE+;P$`}^qrpRV#B0C>hGgeJ#D^oaS z^Z^rAP`RaaSg-?Baw%h2TxDu~Cgc20{4N7f`hb;23LMR|7xI7fqd9<+NAVH313J+3 zfg|{)d0cnR0UQ>GbJ1Xjcr{BS=~>>@_Qp=o`hWI3YJZ!>ILyc?xh)VlIjdtC4onxE z&qHN9G%gCdlQAq=e$)&TrfKrk$S>-<9Ckqgc9tiW-G%E&COHI_e00lP9zeDrQH4VB zWDJV~*{aUt<(DXxi5?64u{C~-dVUa*6dcd$#!Z4F`G1@<^blSJ$8`^{g2Un(h}4I3 z*MDdrVm-y?4|+I9QZ{OJjz{_=ht3h2&qJI99M?Tg0uGB29T+rTlfHdGYNYPDo!$Wn z>a){7kdCr=fJ#ecG?PXpk}`(H$c7(g$#NO4=9l;D=nd1pKOp6kwzKOP_Wc2>qdH&$ z|8RD=|9W!FnQ=Se(F0VnC}UXMwJ%OyY=6*M94$D==?ARTPpcTvj*9*#3|owp^y#PR z%K99)A|q zCx4Bu*WoRvA=m+{b9{7j6V39Mf$HNfjIDX{b#xnUvMdf)J7pf;L}xY2|IAT#%W-Ze zI&PXE*L!aocRTkUPX092?}{Uy z1pg9G-)$O2E6ytiXN6Lp{^{ZL;FNLa;ABvS#5p{B`kEtgSQ(;~?r|WSb|3J>4V)Z` zE2eXjb8wdE0|{9^=xAwdawetdBlObn131CdS84bGDScFmgQ*e+>rJ{|M1LH40OyTT zu@_>g#>Pa5J`Keo$2XOYPKY2h( zTxAST0u&MQ;6TZP`)IL9zH;ONoUuxf2ZzVcUq3Y$a9C#cger1&cJ}m?MF2-2d65Tj z66-_A1IMBnr^#6usIKw=PJe>+ClBDPS8wtF&T+NKgQrR!q|uxs4B!k`igIu~olIHB zz`?DY7Qqa485vJW8)c*(LJgaMo;`%uDwBZ*vv0i0>;PZ+>ywBCdPoHlC_2G5i* zxL#~nrUI*NeN!4tj-Q=9Hz#9QX7&@b`r-A_>FF7ZQ8?nri!^|(6Ob5yr!*oOM05m=*KKyY4C?hbOFjOI8nUfN+rq(w@^MMj!fFpn> z;2=7TqQNHsB7g)$t79^c&WX6tYk?OsRu*C<+*HKYUSVip=WN=UefZ&xx|^kr}zW|16lS0-nu z%#CCD%|J_^JPGoU`8 zHeAcm>-X%XV7ht^-Hv@%6$k$=DO`v7oftPuXM4*qUhSn(mTXe-r0;!+qpy3X-vm9G z7&jZwvP{q<9)I6RW{is8x!J5{a>{Ta9>sYi2^P!E9=-hU_QJP=CV@#)kJ2>ZU=c9u zzkitTKY#vg((FAcx%X1As-|Qn$jE~1F4-*RLAdxD-e-Y?B1z+Uq&T_+tf>YqaC|LL zvZh>*?PM)&rJ@{F6}E`8e0LU!eU6sv+}3JW?8tO?dVkQH2CHa_BRf@7$l0>st2~BP zk_UI;mq?si9;K@=7fM+mRl!Y~4V(^0i<^gxUBT|0tpqN{L-7~XM+H^;m4~;x8iJm6 z(@BbB2WyX>O^(tWJF~f=N}?*g49fpdK`JyIGw<4E%58Nd+zL;l(5mtzS>*9rJuR%h zO53ogEq^Uq{2YKyooOmCN`0BUz-TYOM2q!b74Z9ZwU-}e$@>0PQK0<8otX7)lx5aL z=;=hRdx}(Sw%r1q-FMwz>4Iy7kQ)U`VH^}Ak{YaNVLsCgo-!-B z;SneG#JDIY^~5|XQ7{aF4w@(O1Z;6~a{Ba?aeqM^-Cf3IxzwPWN5x#{=Bb3~(%QSo zIFY9$qvONZ2d^0gP;O=A=4H85m77P!TMzKr4yQ7tw3W9ho{(^+0-B)hF}Mk0#^&&yRv=C8iLvq5SmI<=O7h=STmpncZ$x zL3{3O)ncs&c%9la8pys|<5iT8KYe^NuoR=AgwY@Rv)+6g-$se-33fj|SJmD_Tlqq* z`UT5y0O!wU(JC5W$UleXK9ngTK(lv@d4FMOq(hFd40U?jYTUz`?(SK~P z_(9oUQ2%vra#;T8%bRcJpO!Dk-sJP60YP`LyMMSlJ>+_g^>)PKqm0SQXlJpWN?n^^ zlP=1Y|Foy>Q?@77vnxr-cr9M8N5LMKAe=i{le6cvbQ~&}o=M$Y?nKxql%DFsWh!j$ zW3?_BYs~H<@hCFiWVGwKo>XW6!GD) zDpw-klb}kfD7W_H^xfs@N3o+qXvXtOU;)O|ps+Gp-`EgWP3!C~Ud+>I#e9L#IAqN^ zwUKDr2Khn=^QQcc`r)A+G1G^QiM1(|Cpcb)>21v37^-R6B|+=QI?blCN`Lm1Su%7b zX{P4jX6$*`4ZJjL%&U){IU_|FmNOQv`xa-`?n<%q%T=^YR`KjZD6GZWE-ba3WOb}; z)ADoW>-;3%=r&8Ah))9{df8l!Mq=~L)##?a25y$wf#ohd!|<}161-6M%*!a0x8A%3 z3o)mpNZDdSN5PH;ajU0H)_>tYHjzGQ?yOjRSb(=QbXZ4J_8ATmsClyX#FZ2YTO5>+ zZKH@+J#FFj=1$0wu799&LZQTU&dF`ZQ222@NyVKED;$fdTnrslGvZpucbN(AblfW( z6WEzZ=`T+YFiz~Z;l7&ZcpxXX$!xpX-Avl&i(kTqeiw!w79 zk@6QIk%vNE#$*q?JKPpzxX8oVZ^)B*w!05(3r|RP>G%sG*kNQ2r`8q5QSoxHj5mCr z5CT1Tz;Xh$VkWP`)qgyAl_bAO?}OAR=J{Ruy{FIi^{2l?O=bD{{=V`>oGg+o`WOl0 zBCEdl!<`s!5uJXE^Fc48Q}z=vBmxTpYDVNxXyjTf{#xwim2}=LqN_!6o8Y1(=FPxa zLbNCexEn}^Iw?v5PlPp9NKq1aDynN89V0O7uXG=IKT7gCOn-m7yo;6*E=W>np!;s_ za}zP`GC?dg(AMC6KGcwnrK|Tgo)m(oTd(9V!^XCehw09jLS=0`nwR=Raek7R@fTU} zT7K`{>0e~%X!zNFzB}och_QU(lExu_chjkTCal{*3XS$3&!Jr^-DJOf^A&8ZqWFk= zgNXj|;ugteaDOMHxxslytMfLv6w=(~y`u%fg!(&-aEw0oG7Y7-LjJLHqM%O4PWR65 z6+(wQ<5uJ}>@OcskPEe=w5QDCvdueE+54~vXVG1(l=f0eQ&(@r0vFk)_?KgPh8^Euy-E0c{o441<1o; z?#kB?+{AgyRGU1N8zMe!n`-h?E}_)QB!E=Ak#w_JEPR+qQD;A-J)UV@eq~6WmG3F{Mn;giR@% zs(+laXGfTvvJch8J_*zL|H~`eQeGK7!^?;s|A1AxCK?>G%!;&;lVq`3t^_Y`)ZiPZNhI?^cxf6`>13Xtn|-lWNo6LN zmx8essbwaTlc~XwU}gfSAe3}zX6Yu+dP}NaL9I)fhqt&qa6>OePF5bFZhv_@S#!hA zZDPvY;N}D3aDA63>)astvSlc9sB7ef#%;yD^NZ}d+ z1qa2rZi=Xi%v^|PL6Y8%|GrtpV%Ik7IFHhCxQ@riSr(57<@n9{>#Gl^A1~g&yLx?o@!`$!-%ekPZ@fPJ zPcuNeifI5va~R(agMZ9V@BZW6`@g=sI(h&0?eV+UbhcN;e-xx%y*|A-xjKIPH}m-(DexR5GPPCfaUl2A`Nzv&ULXH$nBGE}>0c1c%i%!b z>D%M;HxAp0d21ZVdw2Zy)PXuw?AC$255K&B=R_Yyh}-Cs&ws>5T?{4k3fXsgmnL5a zWnbSUKt+U6~*vf^9&OpMKV}ljS8TG1bh$*4P(Jh?GcTm5(FWvBD{)jk~BIE zXO=aIoADF`fqx;$Ie2y{GwAc8qLS8m#aUiP%k}FxWz6nc)&kx@R7kOuGB#;^Jf9Z= zna-rBm?4IUf`X5#j>b%f-VAJSBL*ER?Q&>0Gz0?^hZ;jgREnu;V-S*4^$y+#*pH%2 z0#vQTRJ?{wnq(z@gri72kbnt<5p5tvOJT|_#&6}HLw}YRun`m`&@^pfZ!+vYijD`& z{xJ&Y?^lcaWBsW_i=y9G6a<55}N>S2)sdc@>SnEQJm9xcV zmM5u19s9GGx3T#b`eOzqY?;}lq&f*c9c-Cd(osx3cqNP!u;pc?A!~McwTWc`27>}8 zzzd@{27e>p)|=~v(EMl8uOD<>S@xdPV$yzF2sAwOI*q@G(Mr?fCKe`p(9q3;*Pq_L z{oB>~`>WIcJURVvdH(*Lc0JC6RrIy_lcUd%=9}g6UVIi*&%@_OkLk)aIyQ$S{`fUa zJZKA4%LvtXgSq;) zbT&ZCFwJ~ll6Wp&hWyid^w=UYjnh#w0^sLA2>Tyt&LLAnLR=`nBzwY?jXIZdEX&Lm zUw@)e75SGxJpOy81e}Gdjr4-D2o?E;6qsPs{lLDDMprM4_kfPbH+Qv5qh(Jk>W6pK zOgSY3x2=2yS!>hO3fez0>T~K&Z_h1kU=j=@SO+E2nlv^QpOF&0JLOV1v|t6TvFELM z=&fjqXvl@1q*h3Ncu?pHU3nUPi)NcVx_^pSU&2LP`i9PubQ$JXx$=p(9ROC@duS-| zCP6e@~M8xHnyAr!Cv`u?LiN5Z^Ml$xp* zk6#q~(jafAMOew}7oSc}#9w!`Nq;!V+W?JNSx6V&hpufJ;8C&i%g)=zv=OXaf_S^o z3w2ojJgJzOBfm{X%^{_}sl`-hVZ0E=h0v2K3eM7GSy~Q#r`k?&OU5@!wHlFKOovoJ zL;2NIxW{MbZ%(h?f4I0h{rK_y$E&mVAKxBd?f?$J@okhBSx%$JHq*vPD}PpI8ZUxz z=%cN8+KvdGHuFU=6HRopnJ>ce+~p#e38dJf^o!7R&^lj)BWe|?`639d=I!~#g`f(& z6HT(6@5Isetkt8f_yCW*S*tIg)_+GFYgHV=S-i-jG@94INmolb>Am`^z7wBT*=8*R zNzwfMI!Z&O{9`qJm|BVf+kZ?b8(C=?tANl>AZRM;0JYO(3@&u^c$`Md`wa}_yVhHTGbP9dtSIEy}+Yl#pd3VCuC>L3$)045@-uj6?H~IVO0k5|HMz;#OYF3 zdyCECUz?}^@x|h=}tOY%X||2ltoeS1N6d<^s~7WoM@3z{!`KTm`)U0oqV!KzgyG*uM+N{ z)mAwJ*PGgUD?aS-*nbW^cXyu}h0!s?7JpRsc2^VI3EFN$h8aHDr`X}Gw7Ni}RF{^x zepU*da@5?;p_c?Ci*AkU+LBTC%nCBqgI9=^%S1+EMuSfrNEls_?GmQL5<@-!GX+?o zZhmD=*J`rwgp+C>7AsqA@2n~PZ?aDif6zm_(|%=xuzRhPEPq!op?s1n+=YVw8*kJs zNmFsgW5ycr((>U%_+%fglv-rCam}bY5Q7l!#7hW5d_XxjkV=t~;K{T}Ym;9p>0L_c zsjw4NvB;nbZW!CO^usVLR-O$A2hh1b!2|7Kg+uoh_A4F?s~{++4<{bbV0;7O!LVj( z24Y{w+lGKJ5PwTI->m|oy8xDmfJsGT>d^ya6X)6#!>~T=bfW;mBh}$Vg#1?Ykjeud z_U<9210Ly)qdcJD>dexiz3z@|r~y)D|1M5b3^>mM<#7wIi%#3M8DCpujBTQ|t_m1Z z%RDzFBB@AO&Pcqjq`uBH^PVgOAOOId2dsnf{?+q#M=*yen+q9Nc>8C`=1et&I zkWSMH9)j)<=QW+6>T1l-X4`@2{$8RhZa5Cp3ArTZkNRGc5$g=TT-eiURsG=yi3B{? ziritIo_}884)m~c-XwHsj;klrymRj9Oh$f373+`_uqNo*8{4aBL{q?bXMGaLn7Edf zy1Yj`jO%0-X^7S7VHT*y<&yK08}V9}GPF_L_IvqcUEiy5%0h{1B%>)}Mzz2*I;yHgiHxZJQW!<%;+~4;Pu(gX296A>%7<}w zlq9IVz2JQHcd_TKG^jwfvy`F-sBcEVmV1b3As<-rPz6q(%>hGLIxKsjJhNZ;by%dF-N#W#(GU`Ch zPX*_#AeIw7Xho=nYM1O&%diwF=%>=uLVt`)X^~}EitrMz_+=X3iUpNkn3kj$+Nl_5 zE_F|BgGyCPyzb)IORpTAKy-DI=18U9h4XIBW{o-4Dgp|A3|df?;@@p-NCv(9D)sW~ z$Dj@GDL&`|sEUs~fRs*1B~3aDxYC`Ae>OP2g^e>36g?hG1@AJv%|?&M*Ya}qr)8*y0OYELwP}!R3RKj zzm~(CBt3xf-GVK9km65ikm4l*-(DA@_B%j}S8#v>DFYDXpR+3s81(-DjBzAEm+8iW zr)DC@50-d=ws^9LFYW~ke;doDOMmD8c~!hPR$e%Sjt#uoj!4}mBI`Hs`0|wg{!w5d z>BOl=oW6g4ki$(xNp*)#lOMQn6HQ9xq7&r_CEP^SlJI z6Pa2sC{06EAxD2+$l%}gg!aem5bPXIMgCT^F<0hPH)$M|jdv?m0QoM>l7BQB$FigG zSoJlwK_l%?z}Oud{MHjTF}yR5ptvY7T%(rc2!{LC4nu65)(;TwyKosvO*o8K*?&a$ zUz2p6eMqBuEW1e3Zy6s>yhYV8Jg)@sW;P$TL&2WT<6KYwI?85gyv~z!5E$02Ar8%n5lwU>iU{u0!nrNnX&Qe?Im)E#sRE2TUfu_;qv~c z=v%m4FCwWBu;@c$;o|6PZQONo?MxpLp~y^M=_79K;HyP4`z<&ShCm>%tN4W|$^#w? zV#6V5O54{~Q7UUK0&#<{D_Rd&w1NVB&@+~Jd50m2d3%gb zzBg0c2^zx`s~@T;u2e2M#puLP9L456hA3w3F+SPUOmQy`57S)ySVeV1HDl22!6s?Z zZQg4W-Msy#zb6B$=%qXumeC3eRf}orZVaq^@a6Ki8uOtHtj2aW=GAz3F{PfQNbf33 zE$YQjRW#R{6@P=9JUp5e#XZH-N^`g6F9RQ1;M zxzH_TCYY`wDLztv4^~MYgo{P;RTU-#EBQP0<#~7tE6nif5g&NKh3-6=gsqi@@S@gt z$%?Tmbk;6nRrRwu@MJ0n#h>m&?F^GkTgF)?htg~Nsef2vcE7w%7W6fFcu>nVH6JMZ zd!(TM{HWx}uW2I2(r~qEiPv$O-_65& zvfxK&NF&x%ic_l?l}7#b_5G99-FgDwtvtMCoY_`PN^~N$&4l=Pdi?g)o71bm{&IeK zdhy}-7!z$f3Zw!L=2vRlAYW& z31pV9B|h7xb!&%;DN+_AkU5kl#*kS<2j#10-EQc)#FdTOEE%>l`q*JTp9u^K%mzXIJ2qKkfW8-IzaQvM>d;`c887!nu7NE})& z*M9&s`6gWnCGTH9iGhA=!vy~x2(5N@Cl=5_aq0XNl4@f!0Ro^<3(O~+<(qKvRzu1d zNY&r9z>wXPY2fN39nK`^7$Cc1Tmm70P} zaT{a0Sg2MLB^kd5Gbu8HQ8#%tm<<7mf((Q1NKx^nsx(*4$jiDD)rC;i4i`MVb95w3 zus)oPy~)Pr#P-IvZQFKsV%xTD+t}DPH@5TTz4v~gvj9fIBY7?m(6TKHormBnV>h=L~nBfw>1W{wn5@ zcTnQb^R}5I= z73>lL2&1vtmUaH5KlMxariVN%06>9s2nKFp?$8+#3tt9m(4+pD)k}RK#H7 zXa?_TWh|c4X>W>(;=}l#|w>b~ELompuYaGLi=I zlg6jH+rw1TT1O+i1nx8oj>{xT(CiYRJq@rc3NRK5xdf6&1x$Ct>sEyi8jS&=>Ew>% zRx(+FYLgAvD=`Y(LgwFJhv^LThkmSlR-KhH=QYC~Prcn($ryQ)LC^7kG);T+9(yRG z=5t#LV5JC9qqH2T_ND3ukOx``S1f^~P!$)CyH{z@Z)=Pm3P{o-?_Qi93lMady%A=LDsQE( z_C?2N^r?$p4XPRlEaW2`Qp<8`l3%yqde$`kwMyMYpc&yOZ2f<)-q?2(cf5&#DClwz z2SaqUM+T7%US#{Z_W)@_;xZxh(`52Ve5n2fCHFHXoDgcM=?3pCr}-KWihGOXMX-ki(~j1BysO)W#+kA z?!rx!g^(gC=SL0vIK8~D<*T8-#_q&syVg8@53cV!U4tixnZ&w=EgoT|L|Iy8h_8p( zFjiCz!S-?RTRJH))Un}{s6QP*f%8v%Bb#f+CI`Y?q0IOFTs*y!YF!c5IJ8?jE!2pG zON#E+ms|m>986UMepqF0>p+8k<)7k=iV`HPZOK!!uRQ{>7%=MF(DWok z+gh8;HN5~{t2zS|a~75mC;I=$y-A%#!FCVFJu{?B*>f2)ssmD@L<~x)$lQN-4{A42 zA@=0170-#8OmGIJ?L-(*)KA5+!=rh5U*=LftnWlumD)TnRp?yCmN|4Uz!z|p#{W8cobfp8*`$2TJhQAZ>8Sm;iGsq8Fgc%E@pUSN;uktS>uvB^AfZMjq_zHz}P84 zy+ft(fZTyu9Sc;#)1o~V;f}T(d?@HKX`oFRf570lSX$3mZf;JH24-;t!_hBo=k}mh zVvK;vfkhf@Qq8N&1CJc@YdiqB^j7t!}L)aQXc*BRv`` zJT7jQqc8yq(q`_-*FqD^y=wICuENRV#zL9R5Br+Sm=6J;>&-ba1>#ahoDFiP7)nf1w_ zbryCW!0##pPL=ZfhR&7uE2PKl0*NZ(nQI9#?>6p#6unic3#2FFg8DRIkDUt&6{}~e z@I^Ov4$WSKmw}i!j+^H){ImNj+K&BJV?mQ)e*L0v@a*W)bbw*L>=@=S;;V;X2ceWE0$u*Y;J1Q?-ecpL(^qHZBDa($ zD=gimn^Q3z&WM5a*G!y=PHz&J0t*SW&!fffb1$f3`?nh`zX?`;B02a;X;G=VrY#JnC8fo^=N|4{-SBo;C`z4}*HU>vH(VuBM5P_gQP7xh zWZNoY2MTW68lPZtQ8#0WeR{*jtxi8x4NmilDgrF=^T1Qbs+|C_p<*p~^y+~Dln#*c zPO&DS+ODAkx)@wgMRFKH=Qu35tE>Q5yI$2hRqw+%P0CN&SRRkeDmdoyZ>GbJs3;ELj$L+ie&u7=Qqt7QxGHjo zl`-JeE5NRC?YVp|$|Nh?`d-c3KDn@l{a=uO9J=eY%scJ4XcQr&7+Jn&`J5O4R7N>6 z*D?(=lRsqo$M3u>kNq?>4x5tSmAUABdk`4vFn7RGVfCHU{J=XMz?C7XzEaO&| zsCsy**+86%ge49iHtzt{w~1BiU$+$&$ZNn_&(?BW9=PT4Bu1LL0n0JOaYQ3&F(}T4 zTcHn-7gOl)yWSw8m0`?k3o0Y^;%6mY>|tkTQeA4X1lC0{lK34f^QBL)>i&b=4 z--v?G=j8UhgfcUwtc5ZG`*?{D+msJAKMY{D<5X-x;Z#1In{SnG0c%3BBh9>^8P!hVALM9U1?pq?Xu^j?`(5a6&`V`{W2|J0 z!Ui;ZMLB4(Y;&q(+-i3Up-qt=W{J47i)5{_C%X#{t%;*5cq6s)QYvPp`}TNqUm!pi z+)XXR+!T)3VQz;@Oasg%t!<%!=gi>{P9UR(l=@UH1+fQ?S(-j`32{7(cEZ8SUctYZ z@QTlA3K`{cE+e-WGWOK7Pr5dEyUE{|HZxu!-<3Ndu0NCe<851=IQYX6L(|pv_<+hY zjPi{6Q(@%!_{6P0mw60wcwGpdukeA|_=k?<50REO{Zh=*Z+4T~^(y(S+=={Gs$m+9YW4^kiL0b|g)_`h zDj2xms6c^|pQ3q1$^N21H}8bP2?l~yzbZFu8Z`rbU_6jXGKsu28YR*oYznwk#EY~E z>r{2`GF+JLU2PM}tm+azi^-&FEUUhW&-reA2r}Op4N+V?Ku9$LfI2x!wno1`FuhnJ zcacAA9sWrzzo z8=zUwzgiqW37(BxcF#G4KMbS@f#K*@A&{=c>q1f)U(g4I0js6+b_Iwrm_8)#EX+f` z+6n0Wa^D4&-AjO?<6jnHr1@DQNj6cdvW)^Dqd{bARa488-HGjR&}4?>WdRr%bcX zlvTnsedz>8mhx(rOj#x#Hcazfor%&StpJcY*w2WEO|ETYNIvCO@k69C({FBvvfW(> z*=rTalknV6uJYxUQ8?rSX@NHuQ70=riP25+piuMgqsQeS$L&GYuiWAoh6o$<_O)l7 z3osFv-lZa0h7Y^)H2^Z3IIo{ECsWR257?VX2MjwTL(B?EM@pooJK@h=Oi`BkpLW!y zXej1MX8eU$ag;IvVRyKp8_?1-gjJy$;`p6EmkE?vYr9;HhTQ55o2R*2C@GEue>B;_ zmX&~z-=bwyY|l+=kOwI0Ox>EB%P0&fN4g-Z9IMo?MSbV{{s3mVNS6E5|Dbu$bm9Tw z{D-Q7x|qTUVp{+vpC7~>eYL3cp1fO?k&mq?fqlBwPFbFUYPg{{VIUi?i*vczFR<~i z^TU~7-P4QGVfBfH>OEVw`xz0TB?ZCSv%>oqr({n{nAP*)&?WDT05qd{hY-xh;J*4; ztU4RHg=JcV{A!FDIV#Mae*O-O|WK?&{X#No|7Fh z=3$6+m2Zl!-=t7uY-5NzknlpZsko9Rv{ItO|A&yr2Tgb6E zgee9{9xC;xm}JmEs`1xI!^Ol@RZBl(S06Q?5#kg^rcs-KN%Zmp=Rx^R z2PL}1pT}Z*e6M407}U{^{d6tmlXg2g*k0?<~D9 zb5JRi-P_(Vr-MAPC)->M%%DtVNJ@j>n_m>%;Ob8{ugFzrT?Ieu<0ergSPqc)=%Jt? zFeBe{^64Ap)VVHF!W%@^p>+8?RHJ`d@x4j<+cR8NC`V&*Mff}B#z;CpHX*p^y^TXl zd+QZsf*9aw5LpoS!c3CbHn0C)zG|H#OE2?rH$f%r=b;@=MLJJJHfBz#xrb5ShpKcc|rf*Al%?OB>jsK6KR#l9KNXYCIATLY0ojgBExpE1>KlCI&VZ z0D0*$Qp*|>h1?ffDXe9q>C;?KXRQ`7tDCn*)GSLok-*X!_4r9M2%Nm()>f16+s@Oh z${l*W$GedAjg%K_!p6P#LNE7AQmf7++UvR>tKuef|6EVG!kSvmYTDLZjzd=7-#JJXaqjR@Iw+{W)0avQ^DHN zXpWhn1gkNbKrIxOm)IH%wxghMrqX~9zi@s&#(Vwu8{mmE3izGTG=6+fhVHGm)+W=L zGPm^cezGsu&|z-CNc~qhPpSt=xJ+DGW-(?uN2VA`PQ%zB3J+c*2&|LrZ?b_o8I0AF zzPO@7dV22vK2}jKXcXqnFCi7`;D2eOJPycU!~IJVL8V})O=dl#pr@DH?&AI9HmA=_ z)DbjG{<#lKU5v#4tF9?U?-?*x@}d*F0Y0*~Y}3-@9`X3L(0)|h8;rfQZK~y>M`Hoe z^H{?Aj_7PFh*5zszY?#=8W+Sh9VJOXj30}{niORAUz>>lwTd+>$!Io8Q8%Q-puNMb zfvoe9!;pe~OWB#+GFH{%lyck@;c%a+lU7hD378AX)?NB@=`mx7%VxuoN^{2@t6I#4 zNv~U5L=Q_ziK{5|NinUYU`;v+jok3AvRY>UeMgJmr>?i5BCEHGq%w#31eO(VBmm0N zdv`~WCorVLtCp4L@s3py6ywZ*!XT?5ExL+>YzD$3pa|yr8aFbS+k+Z`@zk?hu{CMU z7wCa^xQ8}Y9ggIrGFWYZ<3H}!%it(JS?!gK2C_8smKN7d6!|7YHE$&%f1k(&fEO~- z((s4W2{Vgg84$7?;t4PJa@w)cEo?iw08LUkOM`fXK7qq2pY`jyNi@F)5t}D>`-wJ? zQhF-3@=gB8CG+7_@|~~a+*p!#x#QCW4XpMesVaFdPs+{uv>KmTnQ5}Wo!EMr1$UT$ zhL{cLhUkZP{~>9dhPYXz@AXpeP!{ZK;wz8b&KX0uET80YukgXb&WbpFYO|JTRnKJ3 zB^Z@+JL=VVD0%G|?CpW)soHWV0a)vtz)-v(C~K$$JZs;xme1wV8J?Ogd}0RgG51pv zy#LvQRdM({5&)D7ly*TNcUc_y(CGxB6a;7C4Vj0JCrXgKZm0G%9C#Boi zj~<9u2bscQt1xdVnOVGaC^qYFMg1ioj$U>>my=%<6h|);p%D9mcZl51!>)s$_x;0M zV7sglL6?g=)2Q4y-62l=F#A|#(Fc*5&03Y5y*S=>U2V}9lnI2EiBPV$zz7^hPj(&~ zHsAf=0pO@2&I54D0qj1?mBbSX)+faqY(N<+E<=Rs4sSx43V=hpC5G0#KQ+gfd^&oW z^?Xk8|E^#`>AhouL>WM-gx`j~JWyZ=K_Q2~8zBOvTt#d!)}hR#?8O_~d{`ivK=H0Q zu1XHEth334YW+!cPpcVLtb?!V$?qiTyAnm!9TGW^8}^DkFO#zv1xV{}N;y}-CW z@?x%efQe>Wz#vH}dDZ=M_s3zS^!Sk^9bDIYFM*O;!^|Fj<6U`$3!DaKK5F&un~}Md zJ%BKr?W;W_NV*&H>*ElhtqbH3=N9tpM+=}E)tw>bK4w))?l`vg?KP>Vbd)+{$ z{E+WMp$`6skrI}x+(AsGwHAuo(^nLq)(`DT_Siue-PNptMfX@jGuM@m0mMQg{)LEd zV-raB`7g_FUdakO(U)J7gg{pq-MLq2RUDbW8qoV($AB&ay!(~=>UpPI`X!b#U-oO> zS=l&IXOtoS})S#SA*t8!X}I{>1*0n^pLqWH%^K2baqIKkwF3znJY{<_7w{*%0*=R z(*cZ+exlX^P{JNpTmtv_31Zkd8{BQy5O4Gn+t0Fq2(K{~1kRaj##*`rAu0dXIEI&j zjJ*h=%wkrZhL@+{awk#T1~)0311fuIWA{+tNAUMW(o(Vd)cBbn>y(^Cd__x*MS~FO z>ds+gVe7sMX2@1}GC0(#yBT|Lb!9|57T@caH_e)SP{ocOpF{&Pch>g91fW>&Zv#K#uVLz!K(wBMrkL$REV-Y|eWtL! zk+K||T7N$y`vOq*RhuUkZ-WsA%lKVlP>XNL0J}bUf!UUd!x}%{HO;fp5YLfdd{+g+ z*_tF~fVI`E2oQg%L!iT*tx)n5w5*6>QPmKU6We##kO8DtGNKT3A#@oOY6@ohjFB- zH9^<(c-`%ZWz#0TD>#!dBt+{+wtVS4z}c+!;5b>kynj6Ck^WecvbL{M+}pyIP&sXM zK14-ya95C3h(mZSRcGvPOL89__^eWnc@xr=V%Z})*34)43A3zN!8_EYY(x7S10^cW z95^@hO*&bXM2XGemXIIbwmEr$70qCp_is~p0N(ME4F9VJ$euLy7VCzB@HNtwK>@$>;j39|(yDkh{et0+% zgeto1BrCeJSg&qdHLLX_U=g81;nl6xIo*2qS4NrHQA=7)qXQMDA)*#Mt8*W9jFQ8^ zME1czkvvGzd%IwOne^8483CFF{5B@MR|qiz$&bHxwk7aLsiR(KgbX8WK8g&PxWM;t zAoM(q<(MybCt8eq=Xe4k4Ihf5UIKFap zo=h&|PHeyEOHu??$BjB3wpbGX?nu&d%QS?e?u|vknH(7e89RwcjOC|t)2%-aL)bRH zeGHD`8ZOU$y8YB3>I^)264Y@19Wej4x7EIy>L>R2WdHu_XMMb&IHC2>SZm>uyRQN> zVidASs6pM>0ac2&s7KH!p#pw=kVYMeFw@GoN!c$bywqAnE_j}*Ry;WKT_3!F4pj}1 zf(;=62Y1ypdBAGe*{mwe&E471LqlHm?+u>UXWRNxc~>#FY6`kY9UKPiq<(_RyQ6C2 zQYH$-@vg4m-9rXk>hB;;w5OHYJEf>YlD`_0bnAV2XDs?>Z#NW2J_AFKLd6ot5hk;h1h-=qJ((>`povs5Zgca7vpczB{N1{PSzIke$uP ztQHbR8H>JtqR+BxxTb*S>{6-Ba@wva3iwHCm@Bikoqt24Q*^`fQJkYZSz+d3Iar}i zOcOcSeE0JCZUFq){Il2$6AG2aRkNNv9JZ`{2hFIsQvbv8*Qz|U^NDhqt2Wtp*&8PI z_XVKJ*{_oY#$aevEfZWS7i8x>Od;@JV4)tx3qcff!E~)BK>*52)878c6zX1H*9vi`<#3VoV zR760p4GY>!sO{V-IwvDwL4sP?E+B$hnqM_@uctxs;VO!1U@5j2=3rB4Zv`6Sd~YO` zDvoPkbW7#5!{n6qW>~+$(zlACfArog6?gexFR7LV8EP5aAo&NJKk}z*-vm^`>cmvd z-KX<1%v=K7pn?aF!Mgf#Jha1gYV`o@Zr* zlwfHuWFl+E;KC$*sCv^0ykZuJckgf88FaViAi7*CV}=CxQGCxwGuvyY`YQUnz+mxc z?4rS4rxTa)F{cl6-yld&+Ees=hs)5gkwiP7&4$nHTJv(q~k*&MqqFPuFgGTS% zN3}L&>i(!4UeXE5s>J>F7gY|e%hTp1OLYVI`J#a3h)|8( zgr0$RxBypVj2np*9W?I77tw;JiMr;nGVUw;wm~4>wiJ16Elj_uZYAQbN_lj@Bab zV;7@qIp74cgNI_dH4V+1SM5iB(35U2{w|D7HXR7VclW$S+AjIB}037?P`*HrgtrbC2` zdFth~`nB|VdUJDqu(S6x-w<#zVqQ=5^+6HzHwG!mqFA8C))3}86i&!!A%vUX4x6NP zk^e-q)d4apZUJf+x!Sl8Wd{4@-}*ge+G1j{sP;m!kZ+}5ZL|G;C--2JQ~!cl~Rx64y7uR&ra1FOtz@szinbZYBxM4G(0 zz7XJ4Pyu8#Q%6u_EiJ*0^k`?fH=AO7Oh=?r3`;|KLUBvINW9*>l0QDY0xED852ZLN#P zYQHmFvZw_r>i5$Jx4J>qt)e5Pzk7hHMCv_7(Q(SwJ5?s+jmU$jWs83~sOV?fyX7u3 zdXDK*3^Oblf!UB0O-P);edYe>xcLD=IlbAIn6CkYMSbZ*|s zF(^`!I2v4MDP-L|QMwq9mAJM~nQ|rwIGQnYVl&r`T47aflLfHsOmy5|mj+5m)W{@Y zNyto`ziKs^O9J;(Frpdk@ycw_+V>?SHC4Ct6QxsN%+3=FNWT<-O4-|78|)2+RN-%F zJwbvcoEQy4SN?|cSd$4(AOaEkThI={ec37EQ>c|V&}wm1sF}Dz708rVGnp{E2S|pMp@ldJ_?~!F(k~^s;LR<|^FNb?Q@U5Ch6) z%DATc>VB|bLk4JoxZQJ|w_z6cw|rW;v+$1ENn;G`PfvwzT$;A5!)J6A26~lvIm6_D zMXwUuIY>CkP$DG02!eK)u1q;T|MKDwqHy}rEp|#1zYN2UX`2$`Y(s+SZwg{010P%GfwK=1^-*Cc1V%&_i@iaI-9s+@ z`8itJZJ-EljV8iIjw3W1s(${g0J|$Vt*#REWlIVKHkU8@BW?UnyB@+xkWdo>vibMb zu$(rCjg5)Yl-wR4$f;1!7?F(^PU7p4<6OOU^~t);7{QE3x!R&NVUy#qN3bBvf1W7u-g;jC{i)AbG|*j2QTCD8k7EutC?PZkBWmGR@T$;LpR79!!RzHudMJ!iYdyy57fYcFNq|$tS%qwyEEY%s2vez z7mYR6nho!XN1=*gSUKn~Fxoj(A4O;|$rwGoo?F*kt}Tg4d*v9t>BBSIuteRh7^Q%7 zJcx>ksRJEYvd9cWDl@nae1I+M7wyFh-2$MvfiI9R>7fYq_I5FE_h)o%NtDiVVJ<+R zIFoBn644T3fa=k}^SyDXcKXj#Z*;f`PAg5-I+l-1uBEwa4=!veW*xm2%Ien4>On}Y z$)3vNrKC6y)<4t(QamiGNA}L1uAz(R1IFF0GWk3X1wWRHubf>ft%QzoTB>DeK8L$l zK3o&1CQe>xBY_TVJF-zDnK*2{yngZC`gDpt!#w z$A=Ub>!luLpGrG~-@|NDM)l&{U?NqYHUUA2*L0MBY}NtQc`It93o=zVp=)7+wz%8j zfE_sOq+mGWurHH)4b{e04*YE36%aQER~I*CxS%1PO4kejD|Xle(??=S?>ORLrTMu} z=P$QPlfqAby3S<{Bd4jE+^5Wtb#IdRhu=LDdAv07^ zo%pepRl&I`O^zMN<|@=lmePjsFT|CrttOZWJe7wP5N5 z`Ulf;?={&ags8;5EH#l(`X8c^(vfVVe&iM@e|uQ1B82%=Obg}dWrvV|>7~4f(F2tE zmpg_Q_WefWJU}eUpyAZ1Q2o@lIz??pQoiYV|1{+ApZm$rcLSCOJHe`crCBsmNova^ zSAL^lc)~P7VQC>9tvS+LBrEpeP8eU;oBDoNs!{^)M0pO~?i-B7cp99Y<$DVHo3m(y zS7vW0*ym~B@BJ(~OPip25B;%P%^?!pt|1awwR@lzrSQGKKCgP-G32G7pihT#Zfe1Q zfK-aXfXGXMfun*zLqmg%L#8McM3T42d--t_fPQNN!S3WK-x_?1?yL=R$XvSLxA?cr zr3W+-{ny_o8BX3(+ZpijKbnC{_%}9UBTmT8R=~Few%lw5S%(ujTOI*uNLwsn`e`6FZV#r!zB@*_C{?oo)$Wp$w|BFP6 zRYFUPRbtQhe|>%3P^2kUyNx(4Eo@0@#Q&M{SQY-q^z(lMr>v0_qO6hpEh#O^8mWQQ z|1&{BB%tLhF!dkBf7*Ab0V&@aV#>^3eO#ZYoV)7mn-?dNdPH?``;n#R>?3# z`oBrYQ+)Qn18!`Z(PC_xX`k?ao}?|WFPY1~{?CatA|PD?LbZk76f=I2pmNtjZ}Wqax5KOfPtrf;N$H*{Hx7BM}FkyvZb>lv_m{MDc#=rE+muBQ97=bqO3=B$Dmkl2O}O#ke9-J`0x zygXXZak#5pu}yc|>_1B03hKwcVtoxC^VEt!Iw689sY3M?z(^{fjOR7#enDPle{O#% zt*D`*VS650#It3y59pa{f%~kmyL_3RX1k;9&cJvDZCQW0HD&f<-`<+KT&}o{ZD{~( z?7}CTG!MEp44s*}JUj~kzq+XiPMl7HIQ4dF2reD&9_n$!yHY%p*x$eI4k4E(9kqRm zx?8DQdpF(oV)#Cv_Y@RUl#x}_GpVtSD%6@p!H5m3Km)`DEpiF?lAJsKxKo+mMQdmd zFl|qLz7huBy49}kwSRcB>Dj6={~7-Gp{aefY}j5K;&=i|mP%LvoYM3Z(F>z;=}qm^ zpQ0N!&QhE|Xa%a%m|DGGL2X!@eMyCB=+s=A5}^H?xRbbLPd-!^n~aTyEI}@qtV=#< zP*yA=R3@WLpd`l0F??(et>b)kp={uyxr2|uvRT;-W{c3}N4IF!wsBxC=<3j@JZV`X zm?}(fE=VsgNbeH{a=LJW`q%UasO2V&%AV%Jy3^u`zK%zuU3a{^t#)XwRZj94XYP7- zY4RD>h~hFP7q|&s%mkm6W<__urWZZ|4C0AJ4R}-)!re4FsD%5%M2~U2BO(@gs(XNh z03R1M-kMQcapQgOx?oZWa%Y6lIn!4`@eK2;1_26rxQ z%$)i*RD7J?0jq}#V$%}&k|<)ikTmB+V%6=q*bKmgJff1)svr)&X-qNMu(*11Gd#QU z_jpFg+uNe&x_buSzNgUM@^89vrzv3{b<|}$l!OS= zfuyQVL*W-tUNBUgN-56Tdtq#m65XH&)}^U9%S@}KYiNLV?0)co}S(|EPH0?mLnJ`#;^ z+wjw;;iI+}PJD&uhYqT!encmSB!PD|Rq?^-Qpj1+Lh9Hw8YLPe-%v^edfaXI5bH;7 z+$A%vvj^#cFVlRni<@@PRQk$6Lg6GJhmap`S9q#^jyN&aM!e2glPpQ}>Ur9|N5ALm z^_UOnv%Gi7=kpW^!9f|LDyFKp8qJO70vamGrMzei=nK`160SE^6bwFKAhjqqzrF+n zn>9>coZ;onOopoqcl6Ne25lDW>9=(JT2~U~fyZ(I=n!L=@!;(y{?M*YQw5-=#or{C zg+hh#jQY$>Pmb9#`}^DtKy0kWc@Z$Jf|USyO(4pIrBz_njA3-=;zi`hw*tno1Bl%q z3*=>C?`ixVP)7eIU7(I%vAB7P|7;qx;6El`(-f zO#pJbx?)Vy>o(+SY)v;xp<8~2wV*^X>c6%{I1%D-uQXm9jykgH!5qd|{L94tB(VID zgebJc6S*{43Rfa9*oLsPm^iweGtG=8!c1vw@}3S5)m1mS2W_&AA2|gei*Om{^f-dw;2RE1rgBa#63@=i!(tAo!O; zuS0SAH+;}X{hTRPPl`>g3{xd0i|d><-W$Euz!O5EO46Js4IS_ewzs$wi#z{e&3147 zcX!EMZ1i}>JNC~PEW6oWHuU(Y~5g67}~hkyR{g>9iZ?c@5jMh)ZIXR`pWA0~ku%0F5WDMkq! zdKdQAb(WkkxWY1i$D@ce%Ui1!YAtH%sTOX@=L4fC=|x1R=Tk%?57_l7n{M@R*sd{e zWmdB;a>%+#Yw_jbzDpL#M_vjHU}K9DV22Qb9!Ha>1P2vT5OiKcf+kyjjc=+8u)3Q? z*WDgq+t!^RujpHGdfWXo1oH3CWUY~3Z6BF`R~i}JE_i_>aUZUM;jV;em~3%8xC8H= z0QRgE&k)Tn$PjELgydspdW~lB^Onkq~hw zutfls|JIm(b@G~pMn+F}yY}73uZHs99gQA2lo7|0*oCnu0ZASj8u1G^9t1_>BBe$m zbJH3|mAJKN9o-~{ZO@IY5nb3 z3x;8hP+c<&;lOm7HU2;#x{70&bkMlHn;ed045)R4?JliSzXr+7%Rc63X!FlJ4YZtA zzn%{PsW)gLPba4U2ZaomdPRUyqg*yc0WzTqLg8=yihR2$I@w3xB7yE_A<}u1HOlc(hcf&?6x;QgoiGr$At3 z(&NIHmQv5^rSJKG2~2T$CuoD1RqxFR-=BI@;`FtE8>5`Y6S7G3yOK1jRWs^PzFluZ_>)= z7qeCty(*3Ge+ZLW)ksbbL8xIdS}HV&arRO2r+J!AH-8ENA0ho=wpIv56gee{gH%sq ztw~MxN+F@Mq;HgXR?IwHOBhIQehQk$21t?IuZ1T)EbX3X<@wwG$=R&UNJee*{hCF!3Bow2O>zMT0YGacK&8Y_hUvCI z7O(kD?{zeV-JfVOygwR;*Kx{lv&U1qW`a==BD2T>M`|#<9=Dzw2n?}LU=qNQ6-mPd zc(XMuWz%GvmVEE!9(Yk^vM5NDu5}Jh-p^^A2b`vIBz2@m7hHd5vTPc`4H{5iuuw%N z4`c1!- zWG){J6!*vIHE(J+PqGK+r*S7kI+%B0*|eZiXuaI2Sbb_8WTjcNGrQ|}dpM)r+I92_ zYtN)>y56LqB@$fwYiYyCwqBT+P><9*zEd6!J_%Ekc!TthfVAKqjLEYs0f84b=ewFy zxUohZZkDotaBftc$#48-cLW$4c|_5(vMPEC39_(cUY3FaCjkJT=JTaVT+%q`kRE{e;Jj7)7d5Z*-&} zz~Y;{;_2!cp;k$x!0CP}F;zCoIMACL)FLAIN|;NoEXT+$m-8>>H}Z~$>@#R?&_d~% zZfxa2x3Oy~X9*~IM&+3{cSDBNF48(X7d~VXZ6dugB^vlgJ|Ec=VC&zpyvU^reio?K za=8`Fu?O&lV!_b9q}-xZTn6l%kj`Er;6*-^lQMdsY^k=TBythFy0i%yc@kX=_&>>7N&jy!d|?p|$9m#S9^fw2jvX17 zRhG(=^^ZEpssXM-ub`BX{ynA;-LX~?YME|qX`AL1yKJeAW?kL zkoie(e91y(Yr*6NeU#16AuWxQkrsV!pj_yBE62)xJ!$`I?~u4;0vEtYq*F~KZ16(r zdhwMw0TQav}|b*k4W2zZu*P-oUg2}ht}>4^J~uw8@$0c+U)!VJkuC@M&F5IEGDKpUNYWhuQt z4{w9~3n_>5wBG|EiD zl4{iA@Pe9>Z+oq^YXT4aK(nUSve-tF)w}XwsOS>za{Bqp(N`$Ywc=l?sBGx}U|KLK zE8$i>NKG0=67I5<`A1xuWLPgWXb*kiDilOeeq<>WdhoxhDuaVT3*RTnrH}eI+FJe` z6=5HS$C9Pd-XyVXCN4K*KyD)`8u-SH_VSb5I5-n++4Dh{aS{?p0qXN`?HA7aA~IrV zw8cj;gplEwgZTl?h9V;S+aMGTdfBZ|g6@8a2$NVw3hOiyD(QkBAr%l&Lk-Cm8_=_C zkObt4Nw1gokLgJ;(2nlV{=PVaG51ZOTOgL`FWi&*yJqrZP!D;> z+#OABun%!(vF3hQAav19e8jA+uS`&MV5uLb5GhP5z4GK9LM#;2VqTobN6+8BGq$(~ zyuHez+jhdpEB;v~23l>bx#y3(=$m#W2S=R{d5EA&e*kNkIxq+>y;7D57aLW*D59{v zI?{EKZ-4#8lznus4z1C`$o9!{8&;`p+T$*kx$E%Srz89F{{wbFiN6cr%Pcu9fIs65iOp?xa)4bhBEJp}A`; zS6(gaVxBLsjom{hyN9lnM0CL0A_-YXN1T`^u3*W|<=`_2a5fNsoO^*4mQo!18rJD= z**yK&{`wQ48>R0WFxK;9V>Qj;a2c+mqX$M3Gm<2i^-O28&|s8}p11_M32oJ%XaD3; zXI&R609!?{MmUKC>Ky9gQ%O-JtCfouNYs>Hw0~mPN%Z$Q+&;_+4#zLq^Bs(mvF*nmzg;3^2@bR&?5(qxF{f%OpeJ<{K0BL9QsS_aBo52F z>giyz_Lb>7d$ds~L6Hr#L2`D-Mgzq71eT;swIUS3`OX&|v?npM6Hk6pb;rwNMW#(5 ze9E)$WHe5f;JhURS)?SWN?gN6C0>%Nl~VULY%Nzyd_O0Dxt7~`{*62%4#p)HN{(cJrE`+Q;R~|=WoUaHt@DJG&8m|t=_EG^P4%D)#fc{ zlJls=TOO6cqi|>tw4)6rs;xuLU`ayAPNqoQlYk)^vMErf9Z1(obTi-HKBV0|qBBV} z)J7yD8C``1iEtWnCfU$guSR2XS{9R?O4;Vljw~>5 zXX#u;Qi%+lCi6g8Tc#R+ z$-Gsqf|Xe(BKBMmYb+VY!Hcr4$2}i5YMxrvdUBY#hz$(XC?M3&T{jQc}`}(H9O}z zxPf?{0MG)AC(B&H%OucAu*pk*D}6Qu)Crm>G5{0Z^X^pdYW5EHw{cGV!^s+$+kbc!0dDd#?Uny zk=yMPnQ>08#8kb3%5!7_vY)O5MT8bIPrWdNg=zTWmgo4i#=HgFJZbF$c)DAU+Z}6I ziuH6vBjHGy0=X+oEW)6FwQSFYBm)lG=BX1mnvrpAjNig~4r$SjYP@S;H8Y9*NVyAD z(j3VsDzW3JFlkk}l3Ggw&B8eqOZMctP#Xf5Q#-zS+qU$mEapB+4Gno-;9FR>eyYvZ z=e>GA>UC?YE`za;?z-7t>;wM`*|Sv*&Mr*M)!OF%$GW3jXPPOu9(t zXeqoW-%nh<7UyLtB)ShVSMHP0f@eHijn$3juuYP^S%^l!9cgKt;?9ZO!SC%-tsb`b z58DIjVX#VQ~yN?5~y9Z@=I_RA2kIZGxhI(?v&wxQa8a!gVYUHgWn&h-Zq6an7Dv~?R zHYMj1nj}*e#gkW>TEX-2dY6mcV>8rjniYc6BF7Scs?RPE=abpct4fj!k;RhV;5!E= zs>l3}FEHA)M)6qC3qXdU#A>ybn@_5-s7!DWLMbKaNX#}8&kY2Z4EVm0{nK`?jkup* zxS{cJCU`}1A~%}(-ocNb3SI0l**VEz5+FCUG>WT01dlH+#_-&IPtIGb=`&gAfYXm@ zIkvZ}!u#IG@h>guQH7U9!^IypMXaWO8I3@Mgm5{>^`dmqMH{eh#8AJaKXR+k^&Uaj z1?=|{_G!k185)+d<+mK{@hh}RSA7^Zw732)gY!!wCaao5z8e%h_1x{LI zLFk6mHw5X+HGz?Ak!y|*=)UyiqnX}p#e)+op`b>Rd7Er>2ato z))yf-(TCtpNy)j{<6@!RELZrL2RWM4L0*ycWOqakxX~oQN0d4fs^fOrf|27diWD1l zE#8MpyxUqHqW6-_Iq>p-U|kATlb0*X zdqqT*RUDGfC~Km1L07FGP1d+LJw4pCSZ3WSUgPCwcz3^T4|U5DQi@9J2bfjBP;-gOdak!oHji&YJcvi{EL#uyOZX28y-pwMg;8^m zUIuFu5-(yS=u#|&t0f749~+BR1o@Ktm)wbV?EJKkj7`M;$|+8D)y3-F=I}l$zQ%R) z<(B{2L1OrRy($kA8<{+LHzx`IDGQ-uP~cqTdoBWJwq)j!xHZD)=-aLk;c)s_dw=+! z7X*y><(?{>{RTfnHzv;o6PnDR;d@wpiUNeoLK;Sf4pKBqs4%!Lh0~R5q%Q6H0tcNwZi5XHK+UD*dvMc8w}Tf!M@bYPjFDOgp{LB!6b}G z@V)A)Jz;srm`#=nT9)`C&wQdu=bPbMfXhuI?#jhjl!Njx;xJpT1YdFV^&%N? z^&}cUeX^A>P7y$(^It?nf@?X;Pz@N762a4~vfyEV4^yM|oBKsG7qeN2eU^e=xmnZq zTwk_oq@cH6g19^lSoSW=U<-Xt)rAr>ar&6a#V3g>8bctqIxe?J!Uw)&@_EG-hXD%u zzO6=sCD)v^@!gAOE{>Z+vXx{R(HTxmW&^HhBJp16U}Ql4i3*d|;2@yVDWHA==`WX9 zwx@P~e{gmdcyfx|uu9ONL|X{SCiWxA#!7}%LzYg5@RB}XDSGb>X4E!e`UES_zTMC4wEr65K*L@ zx!yKLS#zjC32+HWIi4v)tJ@W^Bskwt2{({!%-RvLRzb?5iM5c^(eb6%I5>zl=@Ntg9T z8Scm-W#A&I^<5K&ze8-2t!-%-nfHT#U!Tx%j6rkfEkKP4RHz~*(o?Ny3oEEdptKTs z>j{sJm-uP;XrD5e!s4n%aNY6qmQp zat@m_)OuEl5BpMTjoL#LE^%Ejh~h!8>rkSQF~$0#EwZQ1UnA$KojF*9XCz*1u`Uwe4%hLKvh{!9zF9N2hI<;>IPw*Z$H-sSnenl;|Dti2XA+=Trn-^ zT*fGbw|wW4Dp4bmUGKa|BGibGr>@VR$wRE)Z0C!8r9s1TFLD{!ajI#5C@nRRu$Fum zjEs&Bx8Qms!_$~lvC2ZNNopeb0bF03-S`vWP91#C!+fez;e^WVqTnwnRB(LEtF;b{ zEvov$sW`qeC2?Q4HpFv@68WjDZE|VFxiuqBIVD{js=L*ED59=BlP@d2PX>_`0s!MK=l*L%XGZVZ^Hl~t_6xcVL z?X-jkN$3~QrisJR2b6s9Hc)FMQ4fMVhOir%JyTOHiLdiD2E7P>8f}t7_gI1Pc`y0I z0Iu=v9N)DDuv@Y9bg4!v&4daqER1(N*Ig5>Qov($We!#g@&#lC2^!Sg=lsTt+*_(g zQq=kTo}z?*-~He)27HjK-lzOHGc+dWH@z+i1c$q2DM+}z@a32)ap9ijyQ`B{!Bu6I zdeO~%162oSsm2+9!uMQd#Ae*3YWae#l!&qbI1zIpC{!8mNSJnO@r&C0rp`=_mG5Rk zW3nfOO+iTrK3K?E$mA3|BeK#jx(hD!QskXB_TGIkz9#8e8atS&i^^Lh2kcFVmUNao zNesCuV~kJ`i?2a)p5{d<3E#IOyStm4fKShG_Fc(BoATR#U$zz7 zh*S{0WhOV;cKPB5KIV zC#fnOKVRw86%^KkMD2CZp#ms5e!kvLq|W}F|8l^8u0-b4$lKu@F+qhAvd0)Xm>XyT z0{PlfO4Zd#?-LTp)NXWz@8gMVYu;yR^}acj7dU-A4ZI}(6+CQjSL^R~pWWxgA7fe{ zUAm^D{N(SEOX}cra#&wnt+;u!t*Cu0A^P|^GN_&pQXB(1_#i^=e>}M!;qfDc==liA zX{UpKkC2WhPaURzAAdiZK3N!O9sGVIb=j}g;TruP?#f+eJYFanq%!(d=txcaA>=F1 zS63YgqpVZrl~cO=j8bYzFE{MI{oCKP4)!Ow!=CNA>fAmu`^&fgHGB2ymtVjB>8kS_ zM{j%mAK(7;>ebhO`H9D(A3fO7TYvrbr|;=Dtv@txJ$%xm_x}hKSHJrUfTYA918`;l+U{=M zv)x8kfE&PIFc{3-LvsPOmM(vua&C?Ot|OoHH`7r5!&$kW-^P4e@G_%)+UrcxR(ZRDACzP2M z%k2KZr^PyRatwObJ+%1diapGJDDZi)%?={%Y0=D_#p+qp(1MhQa-Dy!uA|#4{!+1& zN-yadvi7+7hx4MHt2tAxhkkHS%OLndUh(Pw0LNap!R%sqJ=%n%3YJ+xt?^N7whcMh3C@(pBd{#3vy<( zPg5-F8BKDX6&5EeKk|REbI*NRI5cO~dNyBZ5zTU!Wvf(7A#c4LJ!kX%6113Q&U*Fx zknPigj)zH@u4dVGQ9qosX0#~e-hz32TDUTNgtL;NAM0jB3rf~+7IyzVKPvgOuw_R3 zv}dKpR^i{JdEv-SiShm|FIX9H0ylkHR5EAr`hBbRY0<^ibBTYyaP-*XepDSj+SrlG zp@$jQ-Uz>A-H~`f#>*tUS*QH%@f?MH#~1rO2N?Ur2;45D30DEY{EbG7{Dt4Jnw))mM$SGx z6rR?pKWMQ|3R-{sFhgc(QNfJ%Y1(EZvzC4}S~Ra-ejP~=E%=wSjy>xhTFCEE{io2_ z^Kh|ZEuSm(!*;OIf_^zG*0aNg7Svl`G5+aJi}eLg_YNX(eaC%A+tI>%8ST@e?c_Rf z-J!Iw-9B~~EwGofT0P%@Xz{$8)w0-G)=XQkSbj)e{H}j{_BmcSuLJryS{!dHv5`er zI-kxVUpFaZN_97iOb0Q8Ciz`m(!l#`8fz&noNJPQ2S5e>~ok!lVHo+PoiM9<)y(Q z-A=YBw^+NQ@6h8>&!NX7 zV(9TTuBwr~J6F!2y+HoMS+Sm-K_gmVF{6E&GpJZGWo(4gEwB8bs7#VCW%+B)lG1{W z^-F)s^cIb1!N`y%Vjm8)pk#(D(PEAn?bB{{h3J%=H5_4aU_&WE+2YHK3+9O}78gB_ zg}LZjU7Ei4(s&k$ZJdU;lISTNNGObFj1eFwwL@DTLP);#K& zu6ab{Yc7?3luDW@;20=>!`ak4KIe*8jgfzwFyiq!ySy6kh@9=;M@F;|XpZpq?3khj zI5$Ll94AxV(B%jZEr_`@{-7a4+&F|0 zE%ceQoIRJep~W~4r>f>VH;QEBies67UeLmwIi-mD4FDR^Vw-CVcDdT!-3z@J#ioB$ z@2Bg}tX_$DfzB@1l@{^LS=XL@K(rWUcwN<7_^|jEYaRJ1={EJ>N3{6oTEAb4&~cgj z>1U1D$I>_8s>;>N)OtM2vf`2<-O-9rlZ1QFuar$cfq(w?I zHVZ9On$bSZ`;$(RSk`S~g&2-#0na^z7>;NW(VX?_H;r^ei-E4L*D$*ijj)!@5!G>d zK;^5qw(PEN>^08n$zkF?ZwO@Zv!}_l| zvc}^}c3i+{#N$x5r>7nD&7C~znLK$!WKV{rD@c;~i&nVQZ&|X%(qrjeuncAFjmL^m zrbTFTRp3=i zj~JU>S-`tWRTAS$SHI|DtyzE1X6vst$Thp+v_==dyf{+ZNoadM-1%l=Rn^h z26=;_8l3vkwD@jLA^3h@%JyjC*xyXz`8-%mFYcG&d#2B1j~AF-4@717O!jzD+0_Tt zqu0BK{ywMcz7+~B_L|W?QK1xKBIfQW3TK>Hkv(2KwNbHn-|W4S|3H7AF;}CtLdQJzCUtZ;6t7wCHR|sj>*`_IP31_6eGM zJT~ZNIWm^_eUHZoy-ecyGIKKao_$n%J<~$((ITV9%p}acykj@vhTfUu@C_6f@%C^a2u@BGzu15`QmN~5!)&fM|K&$ z&^=mQH)pB)eXZN0#c_X=^CBLWw21sLfjwsQwySJ|J!S~ElXSQ}TFf>_Y1@nW$7`DA}}?kXmGFMNIdmSecl zVzL?S_kHE-IrMsu7JA*-f$WHiJzfB|{Zs#*1@&|pR>tYowFBwbvb_WGx02|3l|}L5 zBv{JkE6vKD|Bz^wL3SsaNR!FVJct%M;sB0U$s|m7WHr{E6Y<$Eieg}R^L0KG{fk)+ zrT<6#rJL1aBAb5?W@0~1LkUidEq(U=KkB0d$GBY|nu-sc{Dt>>&@5UZ5T@qiTmNPx_Ec>|5|^E*vnS`pd!WepH9L>I6RmC z?(W<7w?}VVeS=CC-?#iy63>Pw;bO%dKB$Iy5Z(m|7X_%Sc_@yvaL$DRDsMWBb6Kcd z-tM?K;P(JLkZ3M$lEY*9Z?0&2^}_^->aet+{-|804K@A#K`V{mVK_x1MZb$eu>o}DHu z0d{f!Th_LX)K3;=v-R)}M1#@fMD!)F&ZSi`&F%`yUw-#;H~;h}6_-ZLq9_8{WS4Nv zqCtOhqUlNPP;N&UCA^vLbDOR(dN$t|#kgc3c6t{I(~E1wlCSWa-i5*GeGX=;_5S=p zJw9CAg>#_}(-bR5U=l5QCiG~=U&R;YH6X>I(N7XaD_61XI9M2rT}nRi;3p5mNaUH# zm1c}VSzp7#g7w7N7EQ}_oaY~k^^;(RpKpJY_)Gb_)A7&ak6pT3&c>^49}0{kAgp5a z=8JG13+4GC5ckZ@jq)a#rSfc&zJ&6#BXQa7M5w(E;x_yHOVr>+~ zN8B9*zt(ij^o|?`w?n)tA7;TMyo+bkP-q|qk z^d&~&zTEbKVNs5Ra$v;^N%#7^-S)q0cS+OnYpYrLv%D-`mXq*OOifa~S@`l|aUEw_ zJg)4BvNPHov+Dbp2eLVi}v(tI?CJ-kUdRwr_6n3Tnzk<{4B_C=&K5>V)0G#fh6yS_w;Do?iNA0d zWm^ z3X0gy?SyJ1*a#B`_F-)f90bYquUN32V!`N9S+BPJ5%ieLjtZj(L})QsMuruUCkOFt zHD3s6PqRcwCVxsSgT)FsN3-|~CLTwJ!ZKd0K=ES|O>IzE#)}mwenJEV=@3|kiWLYx zhPOgJ-~y9&+Yt|zVPaB**eKmJpu)uHt>S~ewk=9ZCMKN+YgZiQ=k`gDIjzWVTSd~|hw{NH2r4g-L(e73d=Mh~voQIgE< zkN&U*Y@9_fZ^j>8UjF+{lxQAynmY;?!~;Cs(x?LJ)ob=jr9yFQjrBC}#57R==xA(;H!T0(- zkG8`?UWT&GkjbxirIXRP>F!B-fÐ!ZYm}csQ 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 diff --git a/reposense-logs/reposense.log.0 b/reposense-logs/reposense.log.0 index 710328d2..e552e005 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,52 +1,52 @@ -Mar 25, 2024 12:52:54 AM reposense.system.LogsManager addFileHandler +Mar 25, 2024 2:22:12 AM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Mar 25, 2024 12:52:54 AM reposense.parser.CsvParser validateHeader +Mar 25, 2024 2:22:12 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, repo-config.csv, and recognized columns: Ignore Standalone Config, Repository's Location, Branch, Shallow Cloning, File formats, Ignore Glob List, Ignore Authors List, Find Previous Authors, Ignore Commits List -Mar 25, 2024 12:52:54 AM reposense.parser.CsvParser validateHeader +Mar 25, 2024 2:22:12 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, author-config.csv, and recognized columns: Author's Emails, Repository's Location, Author's GitHub ID, Branch, Author's Display Name, Ignore Glob List, Author's Git Author Name -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:12 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias guohuang found. The alias will belong to the last author - guohuang88 -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:12 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias amanzainal found. The alias will belong to the last author - amanzainal -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:12 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shuyuan found. The alias will belong to the last author - legionlegion -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:12 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias chen wenlong found. The alias will belong to the last author - c-wenlong -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:12 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias alphajae11 found. The alias will belong to the last author - alphajae11 -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:12 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias pughal found. The alias will belong to the last author - Pughal77 -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:12 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias rah found. The alias will belong to the last author - rahhulleee -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:13 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jayne1010 found. The alias will belong to the last author - Jayne1010 -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:13 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias miffi found. The alias will belong to the last author - miffi -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:13 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias liu jiayao found. The alias will belong to the last author - ljy0422 -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:13 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias guohuang found. The alias will belong to the last author - guohuang88 -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:13 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias amanzainal found. The alias will belong to the last author - amanzainal -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:13 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias shuyuan found. The alias will belong to the last author - legionlegion -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:13 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias alphajae11 found. The alias will belong to the last author - alphajae11 -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:13 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias pughal found. The alias will belong to the last author - Pughal77 -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:13 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias liu jiayao found. The alias will belong to the last author - ljy0422 -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:13 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias chen wenlong found. The alias will belong to the last author - c-wenlong -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:13 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias rah found. The alias will belong to the last author - rahhulleee -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:13 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jayne1010 found. The alias will belong to the last author - Jayne1010 -Mar 25, 2024 12:52:54 AM reposense.model.AuthorConfiguration checkDuplicateAliases +Mar 25, 2024 2:22:13 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias miffi found. The alias will belong to the last author - miffi -Mar 25, 2024 12:52:54 AM reposense.parser.CsvParser validateHeader +Mar 25, 2024 2:22:13 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, group-config.csv, and recognized columns: Globs, Repository's Location, Group Name -Mar 25, 2024 12:52:54 AM reposense.git.GitConfig getGlobalGitLfsConfig +Mar 25, 2024 2:22:13 AM reposense.git.GitConfig getGlobalGitLfsConfig WARNING: Could not get global git lfs config java.lang.RuntimeException: reposense.system.CommandRunnerProcessException: Error returned from command git config --global --list on path . : fatal: unable to read config file '/home/runner/.gitconfig': No such file or directory @@ -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 25, 2024 12:52:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-3/tp.git... -Mar 25, 2024 12:52:55 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:13 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-1/tp.git... +Mar 25, 2024 2:22:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-2/tp.git... -Mar 25, 2024 12:52:55 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-4/tp.git... -Mar 25, 2024 12:52:55 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-1/tp.git... -Mar 25, 2024 12:52:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-2/tp.git to complete... -Mar 25, 2024 12:52:55 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-1/tp.git to complete... -Mar 25, 2024 12:52:55 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:13 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-3/tp.git... +Mar 25, 2024 2:22:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-4/tp.git to complete... -Mar 25, 2024 12:52:55 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-3/tp.git to complete... -Mar 25, 2024 12:52:56 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-1/tp.git to complete... +Mar 25, 2024 2:22:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-2/tp.git to complete... +Mar 25, 2024 2:22:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-2/tp.git completed! -Mar 25, 2024 12:52:56 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-3/tp.git... -Mar 25, 2024 12:52:56 AM reposense.report.ReportGenerator analyzeRepos +Mar 25, 2024 2:22:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [1/92] Analyzing https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Mar 25, 2024 12:52:56 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-3/tp.git to complete... -Mar 25, 2024 12:52:56 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:22:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F15-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:52:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:22:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Mar 25, 2024 12:52:57 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-1/tp.git completed! -Mar 25, 2024 12:52:57 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-4/tp.git... -Mar 25, 2024 12:52:57 AM reposense.report.ReportGenerator analyzeRepos +Mar 25, 2024 2:22:14 AM reposense.report.ReportGenerator analyzeRepos INFO: [2/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Mar 25, 2024 12:52:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-3/tp.git completed! -Mar 25, 2024 12:52:57 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-4/tp.git to complete... -Mar 25, 2024 12:52:57 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-4/tp.git completed! +Mar 25, 2024 2:22:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-2/tp.git... -Mar 25, 2024 12:52:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [3/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Mar 25, 2024 12:52:57 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [3/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... +Mar 25, 2024 2:22:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-3/tp.git completed! +Mar 25, 2024 2:22:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-2/tp.git to complete... -Mar 25, 2024 12:52:57 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-4/tp.git completed! -Mar 25, 2024 12:52:57 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:22:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:52:57 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-3/tp.git... -Mar 25, 2024 12:52:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [4/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Mar 25, 2024 12:52:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:22:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Mar 25, 2024 12:52:57 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:14 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-3/tp.git... +Mar 25, 2024 2:22:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [4/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... +Mar 25, 2024 2:22:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-3/tp.git to complete... -Mar 25, 2024 12:52:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:52:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Mar 25, 2024 12:52:57 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:22:14 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:52:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:22:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Mar 25, 2024 12:52:58 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... +Mar 25, 2024 2:22:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-3/tp.git completed! -Mar 25, 2024 12:52:58 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-1/tp.git... -Mar 25, 2024 12:52:58 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-1/tp.git to complete... -Mar 25, 2024 12:52:59 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-4/tp.git completed! +Mar 25, 2024 2:22:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-3/tp.git completed! -Mar 25, 2024 12:52:59 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-2/tp.git... -Mar 25, 2024 12:52:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-2/tp.git to complete... -Mar 25, 2024 12:52:59 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-4/tp.git completed! -Mar 25, 2024 12:52:59 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T10-1/tp.git... -Mar 25, 2024 12:52:59 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-2/tp.git to complete... +Mar 25, 2024 2:22:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T10-1/tp.git to complete... -Mar 25, 2024 12:52:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Mar 25, 2024 12:52:59 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-2/tp.git completed! -Mar 25, 2024 12:52:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... -Mar 25, 2024 12:52:59 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-2/tp.git... -Mar 25, 2024 12:52:59 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-2/tp.git to complete... -Mar 25, 2024 12:53:00 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-2/tp.git (master) completed! -Mar 25, 2024 12:53:00 AM reposense.report.ReportGenerator analyzeRepos -INFO: [5/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Mar 25, 2024 12:53:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Mar 25, 2024 12:53:00 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... +Mar 25, 2024 2:22:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-2/tp.git (master)... +Mar 25, 2024 2:22:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-1/tp.git completed! -Mar 25, 2024 12:53:00 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-4/tp.git... -Mar 25, 2024 12:53:00 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-4/tp.git to complete... -Mar 25, 2024 12:53:01 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-2/tp.git completed! -Mar 25, 2024 12:53:01 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:18 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-4/tp.git to complete... +Mar 25, 2024 2:22:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-3/tp.git... -Mar 25, 2024 12:53:01 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-3/tp.git to complete... -Mar 25, 2024 12:53:01 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-2/tp.git (master) completed! +Mar 25, 2024 2:22:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [5/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... +Mar 25, 2024 2:22:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... +Mar 25, 2024 2:22:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-2/tp.git completed! -Mar 25, 2024 12:53:01 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-2/tp.git... -Mar 25, 2024 12:53:02 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-2/tp.git to complete... -Mar 25, 2024 12:53:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-1/tp.git completed! -Mar 25, 2024 12:53:02 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-3/tp.git completed! +Mar 25, 2024 2:22:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-1/tp.git... -Mar 25, 2024 12:53:02 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-1/tp.git to complete... -Mar 25, 2024 12:53:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-4/tp.git completed! -Mar 25, 2024 12:53:02 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-1/tp.git completed! +Mar 25, 2024 2:22:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T10-2/tp.git... -Mar 25, 2024 12:53:02 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-3/tp.git completed! -Mar 25, 2024 12:53:02 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:19 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-4/tp.git completed! +Mar 25, 2024 2:22:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T10-2/tp.git to complete... -Mar 25, 2024 12:53:02 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F13-1/tp.git... -Mar 25, 2024 12:53:02 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F13-1/tp.git to complete... -Mar 25, 2024 12:53:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Mar 25, 2024 12:53:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... -Mar 25, 2024 12:53:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master) completed! -Mar 25, 2024 12:53:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [6/92] Analyzing https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Mar 25, 2024 12:53:04 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-2/tp.git completed! -Mar 25, 2024 12:53:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F15-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Mar 25, 2024 12:53:04 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F15-4/tp.git... -Mar 25, 2024 12:53:04 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F15-4/tp.git to complete... -Mar 25, 2024 12:53:04 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-1/tp.git completed! -Mar 25, 2024 12:53:04 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:21 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-3/tp.git... -Mar 25, 2024 12:53:04 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-3/tp.git to complete... -Mar 25, 2024 12:53:05 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-1/tp.git completed! -Mar 25, 2024 12:53:05 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-2/tp.git... -Mar 25, 2024 12:53:05 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-2/tp.git completed! -Mar 25, 2024 12:53:05 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-4/tp.git... -Mar 25, 2024 12:53:05 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:21 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-2/tp.git... +Mar 25, 2024 2:22:21 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F13-1/tp.git completed! +Mar 25, 2024 2:22:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-2/tp.git to complete... -Mar 25, 2024 12:53:05 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:21 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-4/tp.git... +Mar 25, 2024 2:22:21 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-4/tp.git to complete... -Mar 25, 2024 12:53:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Mar 25, 2024 12:53:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... -Mar 25, 2024 12:53:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) completed! -Mar 25, 2024 12:53:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [7/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Mar 25, 2024 12:53:05 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Mar 25, 2024 12:53:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Mar 25, 2024 12:53:06 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... +Mar 25, 2024 2:22:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master)... +Mar 25, 2024 2:22:22 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-4/tp.git (master) completed! +Mar 25, 2024 2:22:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [6/92] Analyzing https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... +Mar 25, 2024 2:22:23 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F15-3/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... +Mar 25, 2024 2:22:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F15-4/tp.git completed! -Mar 25, 2024 12:53:06 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-3/tp.git completed! -Mar 25, 2024 12:53:06 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-1/tp.git... -Mar 25, 2024 12:53:06 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-3/tp.git... -Mar 25, 2024 12:53:06 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-2/tp.git completed! +Mar 25, 2024 2:22:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-1/tp.git to complete... -Mar 25, 2024 12:53:06 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:23 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-3/tp.git... +Mar 25, 2024 2:22:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-3/tp.git completed! +Mar 25, 2024 2:22:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-3/tp.git to complete... -Mar 25, 2024 12:53:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... -Mar 25, 2024 12:53:06 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master) completed! -Mar 25, 2024 12:53:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [8/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Mar 25, 2024 12:53:07 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-2/tp.git completed! -Mar 25, 2024 12:53:07 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T13-4/tp.git... -Mar 25, 2024 12:53:07 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T13-4/tp.git to complete... -Mar 25, 2024 12:53:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Mar 25, 2024 12:53:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Mar 25, 2024 12:53:07 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-4/tp.git completed! -Mar 25, 2024 12:53:07 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W10-2/tp.git... -Mar 25, 2024 12:53:07 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W10-2/tp.git to complete... -Mar 25, 2024 12:53:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Mar 25, 2024 12:53:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... -Mar 25, 2024 12:53:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master) completed! -Mar 25, 2024 12:53:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [9/92] Analyzing https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Mar 25, 2024 12:53:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... -Mar 25, 2024 12:53:08 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-3/tp.git (master) completed! -Mar 25, 2024 12:53:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [10/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Mar 25, 2024 12:53:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Mar 25, 2024 12:53:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Mar 25, 2024 12:53:08 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-1/tp.git completed! -Mar 25, 2024 12:53:08 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:24 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-4/tp.git completed! +Mar 25, 2024 2:22:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-1/tp.git... -Mar 25, 2024 12:53:08 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-1/tp.git to complete... -Mar 25, 2024 12:53:08 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-1/tp.git completed! +Mar 25, 2024 2:22:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-3/tp.git completed! -Mar 25, 2024 12:53:08 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F10-4/tp.git... -Mar 25, 2024 12:53:08 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F10-4/tp.git to complete... -Mar 25, 2024 12:53:09 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T13-4/tp.git completed! -Mar 25, 2024 12:53:09 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T16-3/tp.git... -Mar 25, 2024 12:53:09 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T16-3/tp.git to complete... -Mar 25, 2024 12:53:09 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W10-2/tp.git completed! -Mar 25, 2024 12:53:09 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-3/tp.git... -Mar 25, 2024 12:53:09 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-3/tp.git to complete... -Mar 25, 2024 12:53:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Mar 25, 2024 12:53:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-1/tp.git completed! -Mar 25, 2024 12:53:10 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... +Mar 25, 2024 2:22:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master)... +Mar 25, 2024 2:22:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-3/tp.git (master) completed! +Mar 25, 2024 2:22:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [7/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... +Mar 25, 2024 2:22:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... +Mar 25, 2024 2:22:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... +Mar 25, 2024 2:22:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master)... +Mar 25, 2024 2:22:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-4/tp.git completed! +Mar 25, 2024 2:22:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-3/tp.git completed! +Mar 25, 2024 2:22:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T10-3/tp.git... -Mar 25, 2024 12:53:10 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:26 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-3/tp.git (master) completed! +Mar 25, 2024 2:22:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T10-3/tp.git to complete... -Mar 25, 2024 12:53:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... -Mar 25, 2024 12:53:10 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master) completed! -Mar 25, 2024 12:53:10 AM reposense.report.ReportGenerator analyzeRepos -INFO: [11/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Mar 25, 2024 12:53:10 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-4/tp.git completed! -Mar 25, 2024 12:53:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Mar 25, 2024 12:53:10 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [8/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Mar 25, 2024 2:22:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-1/tp.git... -Mar 25, 2024 12:53:10 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-1/tp.git to complete... -Mar 25, 2024 12:53:10 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Mar 25, 2024 12:53:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... -Mar 25, 2024 12:53:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master) completed! -Mar 25, 2024 12:53:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [12/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Mar 25, 2024 12:53:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-3/tp.git completed! -Mar 25, 2024 12:53:11 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-3/tp.git completed! -Mar 25, 2024 12:53:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:11 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Mar 25, 2024 2:22:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F10-1/tp.git completed! +Mar 25, 2024 2:22:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-4/tp.git... -Mar 25, 2024 12:53:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Mar 25, 2024 12:53:11 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-2/tp.git... -Mar 25, 2024 12:53:11 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-4/tp.git to complete... -Mar 25, 2024 12:53:11 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... +Mar 25, 2024 2:22:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-3/tp.git (master)... +Mar 25, 2024 2:22:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T16-3/tp.git completed! +Mar 25, 2024 2:22:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-3/tp.git (master) completed! +Mar 25, 2024 2:22:27 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F09-2/tp.git... +Mar 25, 2024 2:22:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [9/92] Analyzing https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Mar 25, 2024 2:22:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F09-2/tp.git to complete... -Mar 25, 2024 12:53:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Mar 25, 2024 12:53:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... -Mar 25, 2024 12:53:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) completed! -Mar 25, 2024 12:53:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [13/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Mar 25, 2024 12:53:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Mar 25, 2024 12:53:12 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-3/tp.git completed! -Mar 25, 2024 12:53:12 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:27 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Mar 25, 2024 2:22:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... +Mar 25, 2024 2:22:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-4/tp.git completed! +Mar 25, 2024 2:22:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-4/tp.git... -Mar 25, 2024 12:53:12 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master)... +Mar 25, 2024 2:22:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T10-3/tp.git completed! +Mar 25, 2024 2:22:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-4/tp.git to complete... -Mar 25, 2024 12:53:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-4/tp.git completed! -Mar 25, 2024 12:53:13 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-4/tp.git... -Mar 25, 2024 12:53:13 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-1/tp.git completed! -Mar 25, 2024 12:53:13 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-1/tp.git (master) completed! +Mar 25, 2024 2:22:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-4/tp.git to complete... -Mar 25, 2024 12:53:13 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [10/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... +Mar 25, 2024 2:22:28 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-1/tp.git completed! +Mar 25, 2024 2:22:28 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-3/tp.git... -Mar 25, 2024 12:53:13 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22: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 25, 2024 2:22:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... +Mar 25, 2024 2:22:28 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-3/tp.git to complete... -Mar 25, 2024 12:53:13 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F09-2/tp.git completed! -Mar 25, 2024 12:53:13 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:29 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-4/tp.git... -Mar 25, 2024 12:53:13 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:29 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-4/tp.git to complete... -Mar 25, 2024 12:53:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Mar 25, 2024 12:53:14 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-4/tp.git completed! -Mar 25, 2024 12:53:15 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-4/tp.git completed! +Mar 25, 2024 2:22:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-2/tp.git... -Mar 25, 2024 12:53:15 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-2/tp.git to complete... -Mar 25, 2024 12:53:15 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-4/tp.git completed! -Mar 25, 2024 12:53:15 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:30 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-4/tp.git completed! +Mar 25, 2024 2:22:30 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W11-1/tp.git... -Mar 25, 2024 12:53:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... -Mar 25, 2024 12:53:15 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:30 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W11-1/tp.git to complete... -Mar 25, 2024 12:53:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) completed! -Mar 25, 2024 12:53:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [14/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Mar 25, 2024 12:53:15 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Mar 25, 2024 12:53:15 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-4/tp.git completed! -Mar 25, 2024 12:53:15 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:31 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W11-3/tp.git... -Mar 25, 2024 12:53:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Mar 25, 2024 12:53:15 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:31 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W11-3/tp.git to complete... -Mar 25, 2024 12:53:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Mar 25, 2024 12:53:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... -Mar 25, 2024 12:53:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) completed! -Mar 25, 2024 12:53:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [15/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Mar 25, 2024 12:53:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Mar 25, 2024 12:53:16 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Mar 25, 2024 2:22:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-3/tp.git completed! -Mar 25, 2024 12:53:16 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-2/tp.git completed! +Mar 25, 2024 2:22:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... +Mar 25, 2024 2:22:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-3/tp.git... -Mar 25, 2024 12:53:16 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-3/tp.git to complete... -Mar 25, 2024 12:53:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... -Mar 25, 2024 12:53:16 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) completed! -Mar 25, 2024 12:53:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [16/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Mar 25, 2024 12:53:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Mar 25, 2024 12:53:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-1/tp.git completed! -Mar 25, 2024 12:53:17 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-1/tp.git... -Mar 25, 2024 12:53:17 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... +Mar 25, 2024 2:22:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-3/tp.git to complete... +Mar 25, 2024 2:22:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-1/tp.git to complete... -Mar 25, 2024 12:53:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Mar 25, 2024 12:53:17 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-2/tp.git completed! -Mar 25, 2024 12:53:17 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master)... +Mar 25, 2024 2:22:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master)... +Mar 25, 2024 2:22:32 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-2/tp.git (master) completed! +Mar 25, 2024 2:22:32 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-2/tp.git (master) completed! +Mar 25, 2024 2:22:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master)... +Mar 25, 2024 2:22:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [11/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... +Mar 25, 2024 2:22:32 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-4/tp.git (master) completed! +Mar 25, 2024 2:22:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-1/tp.git completed! +Mar 25, 2024 2:22:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [12/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... +Mar 25, 2024 2:22:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [13/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Mar 25, 2024 2:22:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-2/tp.git... -Mar 25, 2024 12:53:17 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:32 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... +Mar 25, 2024 2:22:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-2/tp.git to complete... -Mar 25, 2024 12:53:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... -Mar 25, 2024 12:53:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) completed! -Mar 25, 2024 12:53:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [17/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Mar 25, 2024 12:53:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Mar 25, 2024 12:53:18 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22: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 25, 2024 2:22:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... +Mar 25, 2024 2:22:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Mar 25, 2024 2:22:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-3/tp.git completed! -Mar 25, 2024 12:53:18 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-3/tp.git... -Mar 25, 2024 12:53:18 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-3/tp.git to complete... -Mar 25, 2024 12:53:18 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-3/tp.git completed! -Mar 25, 2024 12:53:18 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:34 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-1/tp.git... -Mar 25, 2024 12:53:18 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-1/tp.git to complete... -Mar 25, 2024 12:53:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Mar 25, 2024 12:53:19 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-1/tp.git completed! -Mar 25, 2024 12:53:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... -Mar 25, 2024 12:53:19 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:34 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-4/tp.git... -Mar 25, 2024 12:53:19 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master) completed! -Mar 25, 2024 12:53:19 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-4/tp.git to complete... -Mar 25, 2024 12:53:19 AM reposense.report.ReportGenerator analyzeRepos -INFO: [18/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Mar 25, 2024 12:53:19 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-2/tp.git completed! -Mar 25, 2024 12:53:19 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:34 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-2/tp.git... -Mar 25, 2024 12:53:19 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-2/tp.git to complete... -Mar 25, 2024 12:53:19 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:19 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Mar 25, 2024 12:53:20 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-1/tp.git completed! -Mar 25, 2024 12:53:20 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-4/tp.git... -Mar 25, 2024 12:53:20 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-4/tp.git to complete... -Mar 25, 2024 12:53:20 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-3/tp.git completed! -Mar 25, 2024 12:53:20 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-2/tp.git... -Mar 25, 2024 12:53:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-2/tp.git to complete... -Mar 25, 2024 12:53:21 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-2/tp.git completed! -Mar 25, 2024 12:53:21 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-3/tp.git... -Mar 25, 2024 12:53:21 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-4/tp.git completed! -Mar 25, 2024 12:53:21 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:36 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-3/tp.git... +Mar 25, 2024 2:22:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-2/tp.git completed! +Mar 25, 2024 2:22:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-2/tp.git to complete... +Mar 25, 2024 2:22:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T08-3/tp.git to complete... -Mar 25, 2024 12:53:21 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-1/tp.git... -Mar 25, 2024 12:53:21 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T08-1/tp.git to complete... -Mar 25, 2024 12:53:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Mar 25, 2024 12:53:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... -Mar 25, 2024 12:53:21 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) completed! -Mar 25, 2024 12:53:21 AM reposense.report.ReportGenerator analyzeRepos -INFO: [19/92] Analyzing https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Mar 25, 2024 12:53:21 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Mar 25, 2024 12:53:22 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... +Mar 25, 2024 2:22:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-4/tp.git completed! -Mar 25, 2024 12:53:22 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-4/tp.git... -Mar 25, 2024 12:53:22 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-4/tp.git to complete... -Mar 25, 2024 12:53:22 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-1/tp.git completed! -Mar 25, 2024 12:53:22 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master)... +Mar 25, 2024 2:22:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-3/tp.git (master) completed! +Mar 25, 2024 2:22:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [14/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Mar 25, 2024 2:22:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-3/tp.git completed! -Mar 25, 2024 12:53:23 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T14-1/tp.git... -Mar 25, 2024 12:53:23 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-2/tp.git... -Mar 25, 2024 12:53:23 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T14-1/tp.git to complete... -Mar 25, 2024 12:53:23 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-2/tp.git to complete... -Mar 25, 2024 12:53:23 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:37 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Mar 25, 2024 2:22:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-2/tp.git completed! -Mar 25, 2024 12:53:23 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:37 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-2/tp.git... +Mar 25, 2024 2:22:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... +Mar 25, 2024 2:22:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-2/tp.git to complete... +Mar 25, 2024 2:22:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master)... +Mar 25, 2024 2:22:38 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-2/tp.git (master) completed! +Mar 25, 2024 2:22:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [15/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... +Mar 25, 2024 2:22:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-4/tp.git completed! +Mar 25, 2024 2:22:38 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-4/tp.git... -Mar 25, 2024 12:53:23 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:38 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... +Mar 25, 2024 2:22:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-4/tp.git to complete... -Mar 25, 2024 12:53:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Mar 25, 2024 12:53:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... -Mar 25, 2024 12:53:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master) completed! -Mar 25, 2024 12:53:23 AM reposense.report.ReportGenerator analyzeRepos -INFO: [20/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Mar 25, 2024 12:53:23 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Mar 25, 2024 12:53:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Mar 25, 2024 12:53:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Mar 25, 2024 12:53:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... -Mar 25, 2024 12:53:23 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) completed! -Mar 25, 2024 12:53:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [21/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Mar 25, 2024 12:53:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... -Mar 25, 2024 12:53:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Mar 25, 2024 12:53:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master) completed! -Mar 25, 2024 12:53:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [22/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Mar 25, 2024 12:53:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Mar 25, 2024 12:53:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Mar 25, 2024 12:53:24 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-4/tp.git completed! -Mar 25, 2024 12:53:24 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... -Mar 25, 2024 12:53:24 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Mar 25, 2024 2:22:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Mar 25, 2024 2:22:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-1/tp.git completed! +Mar 25, 2024 2:22:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master)... +Mar 25, 2024 2:22:38 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-2/tp.git... -Mar 25, 2024 12:53:24 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) completed! -Mar 25, 2024 12:53:24 AM reposense.report.ReportGenerator analyzeRepos -INFO: [23/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Mar 25, 2024 12:53:24 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:38 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-2/tp.git to complete... -Mar 25, 2024 12:53:24 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Mar 25, 2024 12:53:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-4/tp.git completed! -Mar 25, 2024 12:53:25 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:38 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-1/tp.git (master) completed! +Mar 25, 2024 2:22:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [16/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... +Mar 25, 2024 2:22:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-1/tp.git (master)... +Mar 25, 2024 2:22:39 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-1/tp.git (master) completed! +Mar 25, 2024 2:22:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... +Mar 25, 2024 2:22:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [17/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... +Mar 25, 2024 2:22:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... +Mar 25, 2024 2:22:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-2/tp.git completed! +Mar 25, 2024 2:22:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-3/tp.git... -Mar 25, 2024 12:53:25 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-3/tp.git to complete... -Mar 25, 2024 12:53:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-2/tp.git completed! -Mar 25, 2024 12:53:25 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T14-1/tp.git completed! +Mar 25, 2024 2:22:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-1/tp.git... -Mar 25, 2024 12:53:25 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-1/tp.git to complete... -Mar 25, 2024 12:53:25 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T14-1/tp.git completed! -Mar 25, 2024 12:53:25 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-4/tp.git completed! +Mar 25, 2024 2:22:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-4/tp.git... -Mar 25, 2024 12:53:25 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-4/tp.git to complete... -Mar 25, 2024 12:53:26 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-2/tp.git completed! -Mar 25, 2024 12:53:26 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-4/tp.git... -Mar 25, 2024 12:53:26 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-4/tp.git to complete... -Mar 25, 2024 12:53:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Mar 25, 2024 12:53:27 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-3/tp.git completed! -Mar 25, 2024 12:53:27 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-2/tp.git... -Mar 25, 2024 12:53:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... -Mar 25, 2024 12:53:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master) completed! -Mar 25, 2024 12:53:27 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-2/tp.git to complete... -Mar 25, 2024 12:53:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [24/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Mar 25, 2024 12:53:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Mar 25, 2024 12:53:27 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-1/tp.git completed! -Mar 25, 2024 12:53:27 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-3/tp.git... -Mar 25, 2024 12:53:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Mar 25, 2024 12:53:27 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-4/tp.git completed! -Mar 25, 2024 12:53:27 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-2/tp.git... -Mar 25, 2024 12:53:27 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:41 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-3/tp.git... +Mar 25, 2024 2:22:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-3/tp.git to complete... -Mar 25, 2024 12:53:27 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-1/tp.git completed! +Mar 25, 2024 2:22:41 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-2/tp.git... +Mar 25, 2024 2:22:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-2/tp.git to complete... -Mar 25, 2024 12:53:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... -Mar 25, 2024 12:53:27 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master) completed! -Mar 25, 2024 12:53:27 AM reposense.report.ReportGenerator analyzeRepos -INFO: [25/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Mar 25, 2024 12:53:27 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Mar 25, 2024 12:53:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-4/tp.git completed! -Mar 25, 2024 12:53:28 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-T14-1/tp.git... -Mar 25, 2024 12:53:28 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-T14-1/tp.git to complete... -Mar 25, 2024 12:53:29 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Mar 25, 2024 2:22:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master)... +Mar 25, 2024 2:22:42 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-4/tp.git (master) completed! +Mar 25, 2024 2:22:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [18/92] Analyzing https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... +Mar 25, 2024 2:22:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-2/tp.git completed! -Mar 25, 2024 12:53:29 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:42 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... +Mar 25, 2024 2:22:42 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-T14-1/tp.git... +Mar 25, 2024 2:22:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-4/tp.git completed! +Mar 25, 2024 2:22:42 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-2/tp.git... -Mar 25, 2024 12:53:29 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:42 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-T14-1/tp.git to complete... +Mar 25, 2024 2:22:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-2/tp.git to complete... -Mar 25, 2024 12:53:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Mar 25, 2024 12:53:29 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-2/tp.git completed! -Mar 25, 2024 12:53:29 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F11-1/tp.git... -Mar 25, 2024 12:53:29 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-1/tp.git to complete... +Mar 25, 2024 2:22:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-3/tp.git completed! -Mar 25, 2024 12:53:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... -Mar 25, 2024 12:53:29 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-3/tp.git... -Mar 25, 2024 12:53:29 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F11-1/tp.git to complete... -Mar 25, 2024 12:53:29 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-3/tp.git to complete... -Mar 25, 2024 12:53:29 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) completed! -Mar 25, 2024 12:53:29 AM reposense.report.ReportGenerator analyzeRepos -INFO: [26/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Mar 25, 2024 12:53:29 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Mar 25, 2024 12:53:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Mar 25, 2024 12:53:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... -Mar 25, 2024 12:53:31 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) completed! -Mar 25, 2024 12:53:31 AM reposense.report.ReportGenerator analyzeRepos -INFO: [27/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Mar 25, 2024 12:53:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103-T14-1/tp.git completed! -Mar 25, 2024 12:53:31 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:44 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-2/tp.git completed! +Mar 25, 2024 2:22:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-1/tp.git... -Mar 25, 2024 12:53:31 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Mar 25, 2024 12:53:31 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-1/tp.git to complete... -Mar 25, 2024 12:53:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-2/tp.git completed! -Mar 25, 2024 12:53:31 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... +Mar 25, 2024 2:22:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-1/tp.git completed! +Mar 25, 2024 2:22:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-1/tp.git... -Mar 25, 2024 12:53:31 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-1/tp.git to complete... -Mar 25, 2024 12:53:31 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-3/tp.git completed! -Mar 25, 2024 12:53:31 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master)... +Mar 25, 2024 2:22:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-2/tp.git (master) completed! +Mar 25, 2024 2:22:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... +Mar 25, 2024 2:22:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [19/92] Analyzing https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... +Mar 25, 2024 2:22:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103-T14-1/tp.git completed! +Mar 25, 2024 2:22:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-4/tp.git... -Mar 25, 2024 12:53:32 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-4/tp.git to complete... -Mar 25, 2024 12:53:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Mar 25, 2024 12:53:32 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F11-1/tp.git completed! -Mar 25, 2024 12:53:32 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... +Mar 25, 2024 2:22:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master)... +Mar 25, 2024 2:22:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-3/tp.git completed! +Mar 25, 2024 2:22:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-2/tp.git (master) completed! +Mar 25, 2024 2:22:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [20/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... +Mar 25, 2024 2:22:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W12-3/tp.git... -Mar 25, 2024 12:53:32 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W12-3/tp.git to complete... -Mar 25, 2024 12:53:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... -Mar 25, 2024 12:53:32 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) completed! -Mar 25, 2024 12:53:32 AM reposense.report.ReportGenerator analyzeRepos -INFO: [28/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Mar 25, 2024 12:53:32 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Mar 25, 2024 12:53:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Mar 25, 2024 12:53:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Mar 25, 2024 12:53:33 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... +Mar 25, 2024 2:22:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-1/tp.git completed! -Mar 25, 2024 12:53:33 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T09-2/tp.git... -Mar 25, 2024 12:53:33 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-2/tp.git to complete... -Mar 25, 2024 12:53:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... -Mar 25, 2024 12:53:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master) completed! -Mar 25, 2024 12:53:33 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-1/tp.git completed! -Mar 25, 2024 12:53:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [29/92] Analyzing https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Mar 25, 2024 12:53:33 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:46 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T09-2/tp.git to complete... +Mar 25, 2024 2:22:46 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T15-4/tp.git... -Mar 25, 2024 12:53:33 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:46 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T15-4/tp.git to complete... -Mar 25, 2024 12:53:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... -Mar 25, 2024 12:53:33 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F09-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Mar 25, 2024 12:53:33 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) completed! -Mar 25, 2024 12:53:33 AM reposense.report.ReportGenerator analyzeRepos -INFO: [30/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Mar 25, 2024 12:53:34 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... +Mar 25, 2024 2:22:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master)... +Mar 25, 2024 2:22:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-1/tp.git (master) completed! +Mar 25, 2024 2:22:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [21/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... +Mar 25, 2024 2:22:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-4/tp.git completed! -Mar 25, 2024 12:53:34 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-3/tp.git... -Mar 25, 2024 12:53:34 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:47 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... +Mar 25, 2024 2:22:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-3/tp.git to complete... -Mar 25, 2024 12:53:34 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Mar 25, 2024 12:53:34 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-3/tp.git completed! -Mar 25, 2024 12:53:34 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-2/tp.git completed! +Mar 25, 2024 2:22:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103-F08-1/tp.git... -Mar 25, 2024 12:53:34 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103-F08-1/tp.git to complete... -Mar 25, 2024 12:53:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T09-2/tp.git completed! -Mar 25, 2024 12:53:35 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-4/tp.git completed! +Mar 25, 2024 2:22:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W08-1/tp.git... -Mar 25, 2024 12:53:35 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:48 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-W12-3/tp.git completed! +Mar 25, 2024 2:22:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W08-1/tp.git to complete... -Mar 25, 2024 12:53:35 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T15-4/tp.git completed! -Mar 25, 2024 12:53:35 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-1/tp.git... -Mar 25, 2024 12:53:35 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-1/tp.git to complete... -Mar 25, 2024 12:53:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Mar 25, 2024 12:53:35 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-3/tp.git completed! -Mar 25, 2024 12:53:35 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W11-2/tp.git... -Mar 25, 2024 12:53:35 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... +Mar 25, 2024 2:22:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W11-2/tp.git to complete... -Mar 25, 2024 12:53:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... -Mar 25, 2024 12:53:35 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master) completed! -Mar 25, 2024 12:53:35 AM reposense.report.ReportGenerator analyzeRepos -INFO: [31/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Mar 25, 2024 12:53:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Mar 25, 2024 12:53:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Mar 25, 2024 12:53:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... -Mar 25, 2024 12:53:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-3/tp.git (master) completed! -Mar 25, 2024 12:53:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [32/92] Analyzing https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Mar 25, 2024 12:53:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Mar 25, 2024 12:53:36 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F15-4/tp.git (master)... +Mar 25, 2024 2:22:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F15-4/tp.git (master) completed! +Mar 25, 2024 2:22:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [22/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Mar 25, 2024 2:22:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Mar 25, 2024 2:22:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103-F08-1/tp.git completed! -Mar 25, 2024 12:53:36 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-2/tp.git... -Mar 25, 2024 12:53:36 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F09-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Mar 25, 2024 12:53:36 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-2/tp.git to complete... -Mar 25, 2024 12:53:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... -Mar 25, 2024 12:53:36 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) completed! -Mar 25, 2024 12:53:36 AM reposense.report.ReportGenerator analyzeRepos -INFO: [33/92] Analyzing https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Mar 25, 2024 12:53:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F09-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Mar 25, 2024 12:53:37 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W08-1/tp.git completed! -Mar 25, 2024 12:53:37 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-1/tp.git completed! +Mar 25, 2024 2:22:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W09-4/tp.git... -Mar 25, 2024 12:53:37 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W09-4/tp.git to complete... -Mar 25, 2024 12:53:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Mar 25, 2024 12:53:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... -Mar 25, 2024 12:53:37 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) completed! -Mar 25, 2024 12:53:37 AM reposense.report.ReportGenerator analyzeRepos -INFO: [34/92] Analyzing https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Mar 25, 2024 12:53:37 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-1/tp.git completed! -Mar 25, 2024 12:53:37 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T12-3/tp.git... -Mar 25, 2024 12:53:37 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F09-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Mar 25, 2024 12:53:37 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T12-3/tp.git to complete... -Mar 25, 2024 12:53:37 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... +Mar 25, 2024 2:22:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... +Mar 25, 2024 2:22:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master)... +Mar 25, 2024 2:22:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F13-1/tp.git (master) completed! +Mar 25, 2024 2:22:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [23/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... +Mar 25, 2024 2:22:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W11-2/tp.git completed! -Mar 25, 2024 12:53:37 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F14-2/tp.git... -Mar 25, 2024 12:53:37 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master)... +Mar 25, 2024 2:22:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F14-2/tp.git to complete... -Mar 25, 2024 12:53:38 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-2/tp.git (master) completed! +Mar 25, 2024 2:22:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [24/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Mar 25, 2024 2:22:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... +Mar 25, 2024 2:22:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Mar 25, 2024 2:22:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-2/tp.git completed! -Mar 25, 2024 12:53:38 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-3/tp.git... -Mar 25, 2024 12:53:38 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-3/tp.git to complete... -Mar 25, 2024 12:53:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Mar 25, 2024 12:53:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... -Mar 25, 2024 12:53:38 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master) completed! -Mar 25, 2024 12:53:38 AM reposense.report.ReportGenerator analyzeRepos -INFO: [35/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Mar 25, 2024 12:53:38 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Mar 25, 2024 12:53:39 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W09-4/tp.git completed! -Mar 25, 2024 12:53:39 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... +Mar 25, 2024 2:22:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-1/tp.git... -Mar 25, 2024 12:53:39 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-1/tp.git to complete... -Mar 25, 2024 12:53:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Mar 25, 2024 12:53:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-3/tp.git completed! -Mar 25, 2024 12:53:40 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master)... +Mar 25, 2024 2:22:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-3/tp.git (master) completed! +Mar 25, 2024 2:22:52 AM reposense.report.ReportGenerator analyzeRepos +INFO: [25/92] Analyzing https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... +Mar 25, 2024 2:22:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... +Mar 25, 2024 2:22:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-2/tp.git completed! +Mar 25, 2024 2:22:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-3/tp.git... -Mar 25, 2024 12:53:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... -Mar 25, 2024 12:53:40 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-3/tp.git to complete... -Mar 25, 2024 12:53:40 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-1/tp.git (master) completed! -Mar 25, 2024 12:53:40 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F14-2/tp.git completed! -Mar 25, 2024 12:53:40 AM reposense.report.ReportGenerator analyzeRepos -INFO: [36/92] Analyzing https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... -Mar 25, 2024 12:53:40 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-3/tp.git completed! +Mar 25, 2024 2:22:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T14-2/tp.git... -Mar 25, 2024 12:53:40 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T14-2/tp.git to complete... -Mar 25, 2024 12:53:40 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F08-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... -Mar 25, 2024 12:53:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-3/tp.git completed! -Mar 25, 2024 12:53:41 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-1/tp.git completed! +Mar 25, 2024 2:22:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T08-2/tp.git... -Mar 25, 2024 12:53:41 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T08-2/tp.git to complete... -Mar 25, 2024 12:53:41 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-1/tp.git completed! -Mar 25, 2024 12:53:41 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T12-3/tp.git completed! +Mar 25, 2024 2:22:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T17-1/tp.git... -Mar 25, 2024 12:53:41 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T17-1/tp.git to complete... -Mar 25, 2024 12:53:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Mar 25, 2024 12:53:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... -Mar 25, 2024 12:53:42 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-3/tp.git completed! -Mar 25, 2024 12:53:42 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-W13-1/tp.git... -Mar 25, 2024 12:53:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-4/tp.git (master) completed! -Mar 25, 2024 12:53:42 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-W13-1/tp.git to complete... -Mar 25, 2024 12:53:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [37/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Mar 25, 2024 12:53:42 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Mar 25, 2024 12:53:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... -Mar 25, 2024 12:53:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T14-2/tp.git completed! -Mar 25, 2024 12:53:42 AM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-3/tp.git... -Mar 25, 2024 12:53:42 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-3/tp.git to complete... -Mar 25, 2024 12:53:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... -Mar 25, 2024 12:53:42 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-4/tp.git (master) completed! -Mar 25, 2024 12:53:42 AM reposense.report.ReportGenerator analyzeRepos -INFO: [38/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Mar 25, 2024 12:53:43 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-1/tp.git completed! +Mar 25, 2024 2:22:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-T08-2/tp.git completed! -Mar 25, 2024 12:53:43 AM reposense.report.RepoCloner spawnCloneProcess +Mar 25, 2024 2:22:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... +Mar 25, 2024 2:22:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-F12-3/tp.git... +Mar 25, 2024 2:22:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2324S2-CS2103T-T11-1/tp.git... -Mar 25, 2024 12:53:43 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-F12-3/tp.git to complete... +Mar 25, 2024 2:22:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T14-2/tp.git completed! +Mar 25, 2024 2:22:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2324S2-CS2103T-T11-1/tp.git to complete... -Mar 25, 2024 12:53:43 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Mar 25, 2024 12:53:43 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T17-1/tp.git completed! -Mar 25, 2024 12:53:43 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master)... +Mar 25, 2024 2:22:55 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-4/tp.git (master) completed! +Mar 25, 2024 2:22:55 AM reposense.report.ReportGenerator analyzeRepos +INFO: [26/92] Analyzing https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... +Mar 25, 2024 2:22:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... +Mar 25, 2024 2:22:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Mar 25, 2024 2:22:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-W13-1/tp.git completed! -Mar 25, 2024 12:53:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Mar 25, 2024 12:53:44 AM reposense.report.RepoCloner waitForCloneProcess +Mar 25, 2024 2:22:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master)... +Mar 25, 2024 2:22:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-4/tp.git (master) completed! +Mar 25, 2024 2:22:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [27/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... +Mar 25, 2024 2:22:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... +Mar 25, 2024 2:22:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-1/tp.git completed! +Mar 25, 2024 2:22:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2324S2-CS2103T-F12-3/tp.git completed! -Mar 25, 2024 12:53:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:22:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... +Mar 25, 2024 2:22:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master)... +Mar 25, 2024 2:22:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T13-3/tp.git (master) completed! +Mar 25, 2024 2:22:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [28/92] Analyzing https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... +Mar 25, 2024 2:22:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F09-3/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... +Mar 25, 2024 2:22:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... +Mar 25, 2024 2:22:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master)... +Mar 25, 2024 2:22:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-4/tp.git (master) completed! +Mar 25, 2024 2:22:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [29/92] Analyzing https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... +Mar 25, 2024 2:22:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... +Mar 25, 2024 2:22:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... +Mar 25, 2024 2:22:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-3/tp.git (master)... +Mar 25, 2024 2:22:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-3/tp.git (master) completed! +Mar 25, 2024 2:22:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [30/92] Analyzing https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... +Mar 25, 2024 2:22:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... +Mar 25, 2024 2:22:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Mar 25, 2024 2:22:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... +Mar 25, 2024 2:22:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master)... +Mar 25, 2024 2:22:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master)... +Mar 25, 2024 2:22:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-1/tp.git (master) completed! +Mar 25, 2024 2:22:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... +Mar 25, 2024 2:22:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [31/92] Analyzing https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... +Mar 25, 2024 2:22:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W10-2/tp.git (master) completed! +Mar 25, 2024 2:22:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [32/92] Analyzing https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... +Mar 25, 2024 2:22:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F09-4/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... +Mar 25, 2024 2:22:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... +Mar 25, 2024 2:22:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master)... +Mar 25, 2024 2:22:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F10-1/tp.git (master) completed! +Mar 25, 2024 2:22:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [33/92] Analyzing https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... +Mar 25, 2024 2:22:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F09-1/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:22:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... +Mar 25, 2024 2:22:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... +Mar 25, 2024 2:22:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... +Mar 25, 2024 2:23:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master)... +Mar 25, 2024 2:23:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master)... +Mar 25, 2024 2:23:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T10-3/tp.git (master) completed! +Mar 25, 2024 2:23:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T16-3/tp.git (master) completed! +Mar 25, 2024 2:23:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [34/92] Analyzing https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... +Mar 25, 2024 2:23:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [35/92] Analyzing https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... +Mar 25, 2024 2:23:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F08-4/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... +Mar 25, 2024 2:23:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F09-2/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... +Mar 25, 2024 2:23:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... +Mar 25, 2024 2:23:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-1/tp.git (master)... +Mar 25, 2024 2:23:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-1/tp.git (master) completed! +Mar 25, 2024 2:23:00 AM reposense.report.ReportGenerator analyzeRepos +INFO: [36/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... +Mar 25, 2024 2:23:00 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... +Mar 25, 2024 2:23:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... +Mar 25, 2024 2:23:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-4/tp.git (master)... +Mar 25, 2024 2:23:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-4/tp.git (master) completed! +Mar 25, 2024 2:23:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [37/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... +Mar 25, 2024 2:23:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... +Mar 25, 2024 2:23:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... +Mar 25, 2024 2:23:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-4/tp.git (master)... +Mar 25, 2024 2:23:01 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-4/tp.git (master) completed! +Mar 25, 2024 2:23:01 AM reposense.report.ReportGenerator analyzeRepos +INFO: [38/92] Analyzing https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... +Mar 25, 2024 2:23:01 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F08-2/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... +Mar 25, 2024 2:23:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... +Mar 25, 2024 2:23:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F09-2/tp.git (master)... -Mar 25, 2024 12:53:44 AM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2324S2-CS2103T-T11-1/tp.git completed! -Mar 25, 2024 12:53:44 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F09-2/tp.git (master) completed! -Mar 25, 2024 12:53:44 AM reposense.report.ReportGenerator analyzeRepos -INFO: [39/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Mar 25, 2024 12:53:44 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [39/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... +Mar 25, 2024 2:23:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... +Mar 25, 2024 2:23:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... +Mar 25, 2024 2:23:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... +Mar 25, 2024 2:23:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... +Mar 25, 2024 2:23:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master) completed! +Mar 25, 2024 2:23:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [40/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... +Mar 25, 2024 2:23:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... +Mar 25, 2024 2:23:03 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Mar 25, 2024 12:53:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Mar 25, 2024 12:53:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master)... -Mar 25, 2024 12:53:45 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:03 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-4/tp.git (master) completed! -Mar 25, 2024 12:53:45 AM reposense.report.ReportGenerator analyzeRepos -INFO: [40/92] Analyzing https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Mar 25, 2024 12:53:45 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F08-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Mar 25, 2024 12:53:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Mar 25, 2024 12:53:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master)... -Mar 25, 2024 12:53:46 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-4/tp.git (master) completed! -Mar 25, 2024 12:53:46 AM reposense.report.ReportGenerator analyzeRepos +Mar 25, 2024 2:23:04 AM reposense.report.ReportGenerator analyzeRepos INFO: [41/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Mar 25, 2024 12:53:46 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... +Mar 25, 2024 2:23:04 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-2/tp.git (master) completed! +Mar 25, 2024 2:23:04 AM reposense.report.ReportGenerator analyzeRepos +INFO: [42/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... +Mar 25, 2024 2:23:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Mar 25, 2024 12:53:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Mar 25, 2024 12:53:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... -Mar 25, 2024 12:53:47 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master) completed! -Mar 25, 2024 12:53:47 AM reposense.report.ReportGenerator analyzeRepos -INFO: [42/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Mar 25, 2024 12:53:47 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:04 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Mar 25, 2024 12:53:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Mar 25, 2024 12:53:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-2/tp.git (master)... -Mar 25, 2024 12:53:48 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-2/tp.git (master) completed! -Mar 25, 2024 12:53:48 AM reposense.report.ReportGenerator analyzeRepos -INFO: [43/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Mar 25, 2024 12:53:48 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Mar 25, 2024 12:53:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Mar 25, 2024 12:53:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master)... -Mar 25, 2024 12:53:48 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:05 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-3/tp.git (master) completed! -Mar 25, 2024 12:53:48 AM reposense.report.ReportGenerator analyzeRepos +Mar 25, 2024 2:23:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [43/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... +Mar 25, 2024 2:23:05 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... +Mar 25, 2024 2:23:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... +Mar 25, 2024 2:23:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master)... +Mar 25, 2024 2:23:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-1/tp.git (master) completed! +Mar 25, 2024 2:23:06 AM reposense.report.ReportGenerator analyzeRepos INFO: [44/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Mar 25, 2024 12:53:48 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:06 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Mar 25, 2024 12:53:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... +Mar 25, 2024 2:23:06 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Mar 25, 2024 12:53:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... +Mar 25, 2024 2:23:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master) completed! +Mar 25, 2024 2:23:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [45/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... +Mar 25, 2024 2:23:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master)... -Mar 25, 2024 12:53:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Mar 25, 2024 12:53:49 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:07 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-3/tp.git (master) completed! -Mar 25, 2024 12:53:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [45/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Mar 25, 2024 12:53:49 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Mar 25, 2024 12:53:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Mar 25, 2024 12:53:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... -Mar 25, 2024 12:53:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master) completed! -Mar 25, 2024 12:53:49 AM reposense.report.ReportGenerator analyzeRepos +Mar 25, 2024 2:23:07 AM reposense.report.ReportGenerator analyzeRepos INFO: [46/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Mar 25, 2024 12:53:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... -Mar 25, 2024 12:53:49 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master) completed! -Mar 25, 2024 12:53:49 AM reposense.report.ReportGenerator analyzeRepos -INFO: [47/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Mar 25, 2024 12:53:49 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Mar 25, 2024 12:53:49 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Mar 25, 2024 12:53:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Mar 25, 2024 12:53:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master)... -Mar 25, 2024 12:53:50 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-1/tp.git (master) completed! -Mar 25, 2024 12:53:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [48/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Mar 25, 2024 12:53:50 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... +Mar 25, 2024 2:23:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master)... +Mar 25, 2024 2:23:07 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-2/tp.git (master) completed! +Mar 25, 2024 2:23:07 AM reposense.report.ReportGenerator analyzeRepos +INFO: [47/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... +Mar 25, 2024 2:23:07 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Mar 25, 2024 12:53:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Mar 25, 2024 12:53:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master)... -Mar 25, 2024 12:53:50 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:08 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-1/tp.git (master) completed! -Mar 25, 2024 12:53:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Mar 25, 2024 12:53:50 AM reposense.report.ReportGenerator analyzeRepos +Mar 25, 2024 2:23:08 AM reposense.report.ReportGenerator analyzeRepos +INFO: [48/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... +Mar 25, 2024 2:23:08 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... +Mar 25, 2024 2:23:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... +Mar 25, 2024 2:23:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... +Mar 25, 2024 2:23:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... +Mar 25, 2024 2:23:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master) completed! +Mar 25, 2024 2:23:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master)... +Mar 25, 2024 2:23:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... +Mar 25, 2024 2:23:09 AM reposense.report.ReportGenerator analyzeRepos INFO: [49/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Mar 25, 2024 12:53:50 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-3/tp.git (master) completed! +Mar 25, 2024 2:23:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... +Mar 25, 2024 2:23:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Mar 25, 2024 12:53:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [50/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... +Mar 25, 2024 2:23:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... +Mar 25, 2024 2:23:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master)... -Mar 25, 2024 12:53:50 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:09 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master) completed! +Mar 25, 2024 2:23:09 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-2/tp.git (master) completed! -Mar 25, 2024 12:53:50 AM reposense.report.ReportGenerator analyzeRepos -INFO: [50/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Mar 25, 2024 12:53:50 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Mar 25, 2024 12:53:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Mar 25, 2024 12:53:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Mar 25, 2024 12:53:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... -Mar 25, 2024 12:53:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master) completed! -Mar 25, 2024 12:53:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [51/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Mar 25, 2024 12:53:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Mar 25, 2024 12:53:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Mar 25, 2024 12:53:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Mar 25, 2024 12:53:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master)... -Mar 25, 2024 12:53:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-3/tp.git (master) completed! -Mar 25, 2024 12:53:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [52/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Mar 25, 2024 12:53:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master)... -Mar 25, 2024 12:53:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... -Mar 25, 2024 12:53:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-4/tp.git (master) completed! -Mar 25, 2024 12:53:52 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master) completed! -Mar 25, 2024 12:53:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [53/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Mar 25, 2024 12:53:52 AM reposense.report.ReportGenerator analyzeRepos -INFO: [54/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Mar 25, 2024 12:53:52 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [51/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... +Mar 25, 2024 2:23:09 AM reposense.report.ReportGenerator analyzeRepos +INFO: [52/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... +Mar 25, 2024 2:23:09 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Mar 25, 2024 12:53:52 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:10 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Mar 25, 2024 12:53:52 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Mar 25, 2024 12:53:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... +Mar 25, 2024 2:23:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Mar 25, 2024 12:53:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master)... +Mar 25, 2024 2:23:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-3/tp.git (master) completed! +Mar 25, 2024 2:23:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master)... -Mar 25, 2024 12:53:53 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [53/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... +Mar 25, 2024 2:23:11 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-4/tp.git (master) completed! -Mar 25, 2024 12:53:53 AM reposense.report.ReportGenerator analyzeRepos -INFO: [55/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Mar 25, 2024 12:53:53 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [54/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... +Mar 25, 2024 2:23:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... +Mar 25, 2024 2:23:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... +Mar 25, 2024 2:23:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Mar 25, 2024 12:53:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Mar 25, 2024 12:53:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... -Mar 25, 2024 12:53:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master) completed! -Mar 25, 2024 12:53:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [56/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Mar 25, 2024 12:53:54 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master)... +Mar 25, 2024 2:23:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-4/tp.git (master) completed! +Mar 25, 2024 2:23:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [55/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... +Mar 25, 2024 2:23:11 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Mar 25, 2024 12:53:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Mar 25, 2024 12:53:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master)... -Mar 25, 2024 12:53:54 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-2/tp.git (master) completed! -Mar 25, 2024 12:53:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [57/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Mar 25, 2024 12:53:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Mar 25, 2024 12:53:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Mar 25, 2024 12:53:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... -Mar 25, 2024 12:53:54 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master) completed! -Mar 25, 2024 12:53:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [56/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... +Mar 25, 2024 2:23:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... +Mar 25, 2024 2:23:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Mar 25, 2024 12:53:54 AM reposense.report.ReportGenerator analyzeRepos -INFO: [58/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Mar 25, 2024 12:53:54 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Mar 25, 2024 12:53:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master)... -Mar 25, 2024 12:53:55 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:12 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-2/tp.git (master) completed! -Mar 25, 2024 12:53:55 AM reposense.report.ReportGenerator analyzeRepos -INFO: [59/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Mar 25, 2024 12:53:55 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Mar 25, 2024 12:53:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:12 AM reposense.report.ReportGenerator analyzeRepos +INFO: [57/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... +Mar 25, 2024 2:23:12 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... +Mar 25, 2024 2:23:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Mar 25, 2024 12:53:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master)... -Mar 25, 2024 12:53:56 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:13 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T14-1/tp.git (master) completed! -Mar 25, 2024 12:53:56 AM reposense.report.ReportGenerator analyzeRepos -INFO: [60/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Mar 25, 2024 12:53:56 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... +Mar 25, 2024 2:23:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [58/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... +Mar 25, 2024 2:23:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... +Mar 25, 2024 2:23:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master)... +Mar 25, 2024 2:23:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-1/tp.git (master) completed! +Mar 25, 2024 2:23:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [59/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... +Mar 25, 2024 2:23:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... +Mar 25, 2024 2:23:13 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Mar 25, 2024 12:53:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Mar 25, 2024 12:53:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... -Mar 25, 2024 12:53:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master) completed! -Mar 25, 2024 12:53:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [61/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Mar 25, 2024 12:53:57 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Mar 25, 2024 12:53:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Mar 25, 2024 12:53:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master)... +Mar 25, 2024 2:23:14 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-4/tp.git (master) completed! +Mar 25, 2024 2:23:14 AM reposense.report.ReportGenerator analyzeRepos +INFO: [60/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... +Mar 25, 2024 2:23:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... +Mar 25, 2024 2:23:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Mar 25, 2024 12:53:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... -Mar 25, 2024 12:53:57 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master) completed! -Mar 25, 2024 12:53:57 AM reposense.report.ReportGenerator analyzeRepos -INFO: [62/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Mar 25, 2024 12:53:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master)... -Mar 25, 2024 12:53:57 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:15 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-4/tp.git (master) completed! -Mar 25, 2024 12:53:57 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [61/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... +Mar 25, 2024 2:23:15 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Mar 25, 2024 12:53:57 AM reposense.report.ReportGenerator analyzeRepos +Mar 25, 2024 2:23:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... +Mar 25, 2024 2:23:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master)... +Mar 25, 2024 2:23:15 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-2/tp.git (master) completed! +Mar 25, 2024 2:23:15 AM reposense.report.ReportGenerator analyzeRepos +INFO: [62/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... +Mar 25, 2024 2:23:15 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:15 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... +Mar 25, 2024 2:23:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... +Mar 25, 2024 2:23:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master)... +Mar 25, 2024 2:23:16 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-1/tp.git (master) completed! +Mar 25, 2024 2:23:16 AM reposense.report.ReportGenerator analyzeRepos INFO: [63/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Mar 25, 2024 12:53:57 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:16 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Mar 25, 2024 12:53:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Mar 25, 2024 12:53:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master)... -Mar 25, 2024 12:53:58 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-4/tp.git (master) completed! -Mar 25, 2024 12:53:58 AM reposense.report.ReportGenerator analyzeRepos +Mar 25, 2024 2:23:17 AM reposense.report.ReportGenerator analyzeRepos INFO: [64/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Mar 25, 2024 12:53:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Mar 25, 2024 12:53:59 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:17 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Mar 25, 2024 12:53:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... +Mar 25, 2024 2:23:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master)... -Mar 25, 2024 12:53:59 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:17 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-3/tp.git (master) completed! -Mar 25, 2024 12:53:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [65/92] Analyzing https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Mar 25, 2024 12:53:59 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:53:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Mar 25, 2024 12:53:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [65/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... +Mar 25, 2024 2:23:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... +Mar 25, 2024 2:23:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Mar 25, 2024 12:53:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master)... -Mar 25, 2024 12:53:59 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:18 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-2/tp.git (master) completed! -Mar 25, 2024 12:53:59 AM reposense.report.ReportGenerator analyzeRepos -INFO: [66/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Mar 25, 2024 12:54:00 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:00 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Mar 25, 2024 12:54:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [66/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... +Mar 25, 2024 2:23:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... +Mar 25, 2024 2:23:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... +Mar 25, 2024 2:23:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... +Mar 25, 2024 2:23:19 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master) completed! +Mar 25, 2024 2:23:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [67/92] Analyzing https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... +Mar 25, 2024 2:23:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Mar 25, 2024 12:54:01 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... +Mar 25, 2024 2:23:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... +Mar 25, 2024 2:23:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master)... -Mar 25, 2024 12:54:01 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:20 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-3/tp.git (master) completed! -Mar 25, 2024 12:54:01 AM reposense.report.ReportGenerator analyzeRepos -INFO: [67/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Mar 25, 2024 12:54:01 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:01 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Mar 25, 2024 12:54:01 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Mar 25, 2024 12:54:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:20 AM reposense.report.ReportGenerator analyzeRepos +INFO: [68/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... +Mar 25, 2024 2:23:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... +Mar 25, 2024 2:23:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master)... -Mar 25, 2024 12:54:02 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:20 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-2/tp.git (master) completed! -Mar 25, 2024 12:54:02 AM reposense.report.ReportGenerator analyzeRepos -INFO: [68/92] Analyzing https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Mar 25, 2024 12:54:02 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:02 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Mar 25, 2024 12:54:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Mar 25, 2024 12:54:02 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... -Mar 25, 2024 12:54:02 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Mar 25, 2024 12:54:02 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master) completed! -Mar 25, 2024 12:54:02 AM reposense.report.ReportGenerator analyzeRepos +Mar 25, 2024 2:23:20 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... +Mar 25, 2024 2:23:20 AM reposense.report.ReportGenerator analyzeRepos INFO: [69/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Mar 25, 2024 12:54:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... -Mar 25, 2024 12:54:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master) completed! -Mar 25, 2024 12:54:03 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:20 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Mar 25, 2024 12:54:03 AM reposense.report.ReportGenerator analyzeRepos +Mar 25, 2024 2:23:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master)... +Mar 25, 2024 2:23:20 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-2/tp.git (master) completed! +Mar 25, 2024 2:23:20 AM reposense.report.ReportGenerator analyzeRepos INFO: [70/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Mar 25, 2024 12:54:03 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:20 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:20 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Mar 25, 2024 12:54:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Mar 25, 2024 12:54:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master)... -Mar 25, 2024 12:54:03 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-F11-1/tp.git (master) completed! -Mar 25, 2024 12:54:03 AM reposense.report.ReportGenerator analyzeRepos +Mar 25, 2024 2:23:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... +Mar 25, 2024 2:23:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master)... +Mar 25, 2024 2:23:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-3/tp.git (master) completed! +Mar 25, 2024 2:23:21 AM reposense.report.ReportGenerator analyzeRepos INFO: [71/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Mar 25, 2024 12:54:03 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:21 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:21 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Mar 25, 2024 12:54:04 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Mar 25, 2024 12:54:04 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... -Mar 25, 2024 12:54:04 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) completed! -Mar 25, 2024 12:54:04 AM reposense.report.ReportGenerator analyzeRepos -INFO: [72/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Mar 25, 2024 12:54:04 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:04 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Mar 25, 2024 12:54:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Mar 25, 2024 12:54:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Mar 25, 2024 12:54:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:22 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master)... -Mar 25, 2024 12:54:05 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:22 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-1/tp.git (master) completed! -Mar 25, 2024 12:54:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [73/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Mar 25, 2024 12:54:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... -Mar 25, 2024 12:54:05 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master) completed! -Mar 25, 2024 12:54:05 AM reposense.report.ReportGenerator analyzeRepos -INFO: [74/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Mar 25, 2024 12:54:05 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:22 AM reposense.report.ReportGenerator analyzeRepos +INFO: [72/92] Analyzing https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... +Mar 25, 2024 2:23:22 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Mar 25, 2024 12:54:05 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:22 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... +Mar 25, 2024 2:23:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master)... +Mar 25, 2024 2:23:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-4/tp.git (master) completed! +Mar 25, 2024 2:23:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [73/92] Analyzing https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... +Mar 25, 2024 2:23:23 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:05 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Mar 25, 2024 12:54:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Mar 25, 2024 12:54:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... -Mar 25, 2024 12:54:07 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... +Mar 25, 2024 2:23:24 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Mar 25, 2024 12:54:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) completed! -Mar 25, 2024 12:54:07 AM reposense.report.ReportGenerator analyzeRepos +Mar 25, 2024 2:23:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... +Mar 25, 2024 2:23:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master) completed! +Mar 25, 2024 2:23:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-T14-1/tp.git (master)... +Mar 25, 2024 2:23:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [74/92] Analyzing https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Mar 25, 2024 2:23:25 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103-T14-1/tp.git (master) completed! +Mar 25, 2024 2:23:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Mar 25, 2024 2:23:25 AM reposense.report.ReportGenerator analyzeRepos INFO: [75/92] Analyzing https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Mar 25, 2024 12:54:07 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:25 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103-F08-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Mar 25, 2024 12:54:07 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master)... -Mar 25, 2024 12:54:07 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-1/tp.git (master) completed! -Mar 25, 2024 12:54:07 AM reposense.report.ReportGenerator analyzeRepos -INFO: [76/92] Analyzing https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Mar 25, 2024 12:54:07 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103-F08-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:07 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Mar 25, 2024 12:54:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:25 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Mar 25, 2024 12:54:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:25 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master)... -Mar 25, 2024 12:54:08 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:25 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T09-2/tp.git (master) completed! -Mar 25, 2024 12:54:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [77/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Mar 25, 2024 12:54:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Mar 25, 2024 12:54:08 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:25 AM reposense.report.ReportGenerator analyzeRepos +INFO: [76/92] Analyzing https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... +Mar 25, 2024 2:23:25 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103-F08-1/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:25 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... +Mar 25, 2024 2:23:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Mar 25, 2024 12:54:08 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:26 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master)... -Mar 25, 2024 12:54:08 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:26 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T15-4/tp.git (master) completed! -Mar 25, 2024 12:54:08 AM reposense.report.ReportGenerator analyzeRepos -INFO: [78/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Mar 25, 2024 12:54:08 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:08 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Mar 25, 2024 12:54:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:26 AM reposense.report.ReportGenerator analyzeRepos +INFO: [77/92] Analyzing https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... +Mar 25, 2024 2:23:26 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:26 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... +Mar 25, 2024 2:23:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Mar 25, 2024 12:54:09 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-1/tp.git (master)... -Mar 25, 2024 12:54:09 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:27 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-1/tp.git (master) completed! -Mar 25, 2024 12:54:09 AM reposense.report.ReportGenerator analyzeRepos +Mar 25, 2024 2:23:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [78/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... +Mar 25, 2024 2:23:27 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Mar 25, 2024 2:23:27 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... +Mar 25, 2024 2:23:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master)... +Mar 25, 2024 2:23:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W12-3/tp.git (master) completed! +Mar 25, 2024 2:23:28 AM reposense.report.ReportGenerator analyzeRepos INFO: [79/92] Analyzing https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Mar 25, 2024 12:54:09 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:28 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:09 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Mar 25, 2024 12:54:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Mar 25, 2024 12:54:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master)... -Mar 25, 2024 12:54:11 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:29 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W11-2/tp.git (master) completed! -Mar 25, 2024 12:54:11 AM reposense.report.ReportGenerator analyzeRepos +Mar 25, 2024 2:23:29 AM reposense.report.ReportGenerator analyzeRepos INFO: [80/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Mar 25, 2024 12:54:11 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:29 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:29 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Mar 25, 2024 12:54:11 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Mar 25, 2024 12:54:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... -Mar 25, 2024 12:54:11 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master) completed! -Mar 25, 2024 12:54:11 AM reposense.report.ReportGenerator analyzeRepos -INFO: [81/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Mar 25, 2024 12:54:11 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Mar 25, 2024 12:54:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Mar 25, 2024 12:54:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103-F08-3/tp.git (master)... -Mar 25, 2024 12:54:12 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:30 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103-F08-3/tp.git (master) completed! -Mar 25, 2024 12:54:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [82/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Mar 25, 2024 12:54:12 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Mar 25, 2024 12:54:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [81/92] Analyzing https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... +Mar 25, 2024 2:23: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 25, 2024 2:23:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... +Mar 25, 2024 2:23:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... +Mar 25, 2024 2:23:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Mar 25, 2024 12:54:12 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... -Mar 25, 2024 12:54:12 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master) completed! -Mar 25, 2024 12:54:12 AM reposense.report.ReportGenerator analyzeRepos -INFO: [83/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Mar 25, 2024 12:54:12 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master)... +Mar 25, 2024 2:23:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-1/tp.git (master) completed! +Mar 25, 2024 2:23:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [82/92] Analyzing https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... +Mar 25, 2024 2:23:31 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:12 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Mar 25, 2024 12:54:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master)... +Mar 25, 2024 2:23:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-W08-1/tp.git (master) completed! +Mar 25, 2024 2:23:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [83/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... +Mar 25, 2024 2:23:31 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... +Mar 25, 2024 2:23:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Mar 25, 2024 12:54:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Mar 25, 2024 12:54:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master)... -Mar 25, 2024 12:54:13 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-4/tp.git (master) completed! -Mar 25, 2024 12:54:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [84/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Mar 25, 2024 12:54:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... -Mar 25, 2024 12:54:13 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master) completed! -Mar 25, 2024 12:54:13 AM reposense.report.ReportGenerator analyzeRepos -INFO: [85/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... -Mar 25, 2024 12:54:13 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... +Mar 25, 2024 2:23:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [84/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... +Mar 25, 2024 2:23:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... +Mar 25, 2024 2:23:32 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... -Mar 25, 2024 12:54:13 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Mar 25, 2024 12:54:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Mar 25, 2024 12:54:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master)... +Mar 25, 2024 2:23:32 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-3/tp.git (master) completed! +Mar 25, 2024 2:23:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [85/92] Analyzing https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... +Mar 25, 2024 2:23:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master)... -Mar 25, 2024 12:54:14 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W09-2/tp.git (master) completed! -Mar 25, 2024 12:54:14 AM reposense.report.ReportGenerator analyzeRepos +Mar 25, 2024 2:23:32 AM reposense.report.ReportGenerator analyzeRepos INFO: [86/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Mar 25, 2024 12:54:14 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:32 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Mar 25, 2024 12:54:14 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:32 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... +Mar 25, 2024 2:23:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Mar 25, 2024 12:54:14 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master)... -Mar 25, 2024 12:54:14 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:33 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F14-2/tp.git (master) completed! -Mar 25, 2024 12:54:14 AM reposense.report.ReportGenerator analyzeRepos -INFO: [87/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Mar 25, 2024 12:54:14 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Mar 25, 2024 12:54:15 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Mar 25, 2024 12:54:15 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... -Mar 25, 2024 12:54:15 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master) completed! -Mar 25, 2024 12:54:15 AM reposense.report.ReportGenerator analyzeRepos -INFO: [88/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Mar 25, 2024 12:54:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Mar 25, 2024 12:54:16 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [87/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... +Mar 25, 2024 2:23:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... +Mar 25, 2024 2:23:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Mar 25, 2024 12:54:16 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master)... -Mar 25, 2024 12:54:16 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:34 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-3/tp.git (master) completed! -Mar 25, 2024 12:54:16 AM reposense.report.ReportGenerator analyzeRepos -INFO: [89/92] Analyzing https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Mar 25, 2024 12:54:16 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:16 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Mar 25, 2024 12:54:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Mar 25, 2024 12:54:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... -Mar 25, 2024 12:54:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master) completed! -Mar 25, 2024 12:54:17 AM reposense.report.ReportGenerator analyzeRepos +Mar 25, 2024 2:23:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [88/92] Analyzing https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... +Mar 25, 2024 2:23:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... +Mar 25, 2024 2:23: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 25, 2024 2:23:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... +Mar 25, 2024 2:23:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master)... +Mar 25, 2024 2:23:35 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T12-3/tp.git (master) completed! +Mar 25, 2024 2:23:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [89/92] Analyzing https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... +Mar 25, 2024 2:23: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 25, 2024 2:23:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... +Mar 25, 2024 2:23:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... +Mar 25, 2024 2:23:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... +Mar 25, 2024 2:23:35 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master) completed! +Mar 25, 2024 2:23:35 AM reposense.report.ReportGenerator analyzeRepos INFO: [90/92] Analyzing https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Mar 25, 2024 12:54:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Mar 25, 2024 12:54:17 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:35 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Mar 25, 2024 12:54:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... -Mar 25, 2024 12:54:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... -Mar 25, 2024 12:54:17 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master) completed! -Mar 25, 2024 12:54:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [91/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Mar 25, 2024 12:54:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master)... -Mar 25, 2024 12:54:17 AM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Mar 25, 2024 12:54:17 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:36 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-1/tp.git (master) completed! -Mar 25, 2024 12:54:17 AM reposense.report.ReportGenerator analyzeRepos -INFO: [92/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Mar 25, 2024 12:54:17 AM reposense.report.ReportGenerator updateRepoConfig +Mar 25, 2024 2:23:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [91/92] Analyzing https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... +Mar 25, 2024 2:23:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... +Mar 25, 2024 2:23:36 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master) does not contain a standalone config file. -Mar 25, 2024 12:54:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +Mar 25, 2024 2:23:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Mar 25, 2024 12:54:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master)... +Mar 25, 2024 2:23:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T08-2/tp.git (master) completed! +Mar 25, 2024 2:23:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [92/92] Analyzing https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... +Mar 25, 2024 2:23:36 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master) does not contain a standalone config file. +Mar 25, 2024 2:23:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... +Mar 25, 2024 2:23:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Mar 25, 2024 12:54:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master)... -Mar 25, 2024 12:54:18 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:36 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-W13-1/tp.git (master) completed! -Mar 25, 2024 12:54:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Mar 25, 2024 12:54:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master)... -Mar 25, 2024 12:54:18 AM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2324S2-CS2103T-T17-1/tp.git (master) completed! -Mar 25, 2024 12:54:19 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... +Mar 25, 2024 2:23:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master)... +Mar 25, 2024 2:23:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2324S2-CS2103T-T14-2/tp.git (master) completed! +Mar 25, 2024 2:23:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Mar 25, 2024 12:54:19 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master)... -Mar 25, 2024 12:54:19 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:37 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-T11-1/tp.git (master) completed! -Mar 25, 2024 12:54:20 AM reposense.commits.CommitInfoExtractor extractCommitInfos +Mar 25, 2024 2:23:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Mar 25, 2024 12:54:20 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +Mar 25, 2024 2:23:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master)... -Mar 25, 2024 12:54:20 AM reposense.report.ReportGenerator analyzeRepo +Mar 25, 2024 2:23:39 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2324S2-CS2103T-F12-3/tp.git (master) completed! -Mar 25, 2024 12:54:20 AM reposense.report.ReportGenerator generateReposReport +Mar 25, 2024 2:23:39 AM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/tp-dashboard/tp-dashboard/reposense-report -Mar 25, 2024 12:54:22 AM reposense.RepoSense main -INFO: Elapsed processing time: 1 minute(s) 27.95 second(s) +Mar 25, 2024 2:23:41 AM reposense.RepoSense main +INFO: Elapsed processing time: 1 minute(s) 28.64 second(s) diff --git a/summary.json b/summary.json index 76033683..0b5f765c 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"cc0651f0e3","reportGeneratedTime":"Mon Mar 25 08:52:54 2024 UTC+08:00","reportGenerationTime":" 1 minute(s) 26.20 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-25","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":"Mon Mar 25 10:22:13 2024 UTC+08:00","reportGenerationTime":" 1 minute(s) 26.88 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-25","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"}}}